计算机二级-C语言-程序填空题-190109记录-对二维字符串数组的处理

//给定程序,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。

//重难点:先把第一个字符串记录为最长,然后再遍历替代最长的。处理二维字符串数组需要双重循环,循环处理的时候什么时候‘+1’什么时候不加。

#include <stdio.h>

#include <string.h>

#define M 5

#define N 20

void fun(char (*ss)[N])

{

  int i,j,n,len=0;

  for(i=0;i<M;i++)

  {

    n=strlen(ss[i]);

    if(i==0)  len=n;//先记录第一个字符串为最长

    if(n>len)  len=n;//遍历,寻找最长的

  }

  for(i=0;i<M;i++)

  {

    n=strlen(ss[i]);

    for(j=0;j<len-n;j++)

      ss[i][n+j]='*';//注意是否+1

    ss[i][n+j+1]='\0';//这里加一,因为for循环中,判断到第二个条件不成立,那么最后一次j++就不会执行。

  }

}

main()

{

  char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

  int i;

  printf("The original string are :\n");

  for(i=0;i<M;i++)  printf("%s\n",ss[i]);

  printf("\n");

  fun(ss);//传参,二维数组名(首地址)

  printf("The result is:\n");

  for(i=0;i<M;i++)  printf("%s\n",ss[i]);//二维字符串数组,输出的时候,只需要一个for循环

}

posted @ 2019-01-09 10:24  小大大小  阅读(645)  评论(0编辑  收藏  举报