请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,若二维数组中的数据为: W WWW S S S S H H H H 则字符串中的内容应是WSHWSHWSH

admin2010-05-05  33

问题 请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
   例如,若二维数组中的数据为:
   W WWW
   S  S  S  S
   H  H H H
   则字符串中的内容应是WSHWSHWSHWSH。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include<stdio.h>
   #define  M  3
   #define  N  4
   void fun(char (*s)[N],char *b)
   {
   }
   main()
   {
       char a[100],w[M][N]={{ ’W’, ’W’, ’W’, ’W’},
      {’S’,  ’S’,  ’S’,  ’S’},{’H’,  ’H’,  ’H’,  ’H’}};
       int i,j;
       printf("The matrix:\n");
       for(i=0;i<M;i++)
            { for(j=0;j<N;j++)
                   printf("%3c",w[j]);
              printf("\n");
            }
       fun(w,a);
       printf("The A string:In");
       puts(a);
       printf("\n\n");
   }

选项

答案void fun(char (*s) [N],char *b) { int i, j, k=0; for (i=0; i<N; i++) /*按列的顺序依次放到一个字符串中*/ for (j=0; j<M; j++) b [k++] =s [j] [i]; b[k]=’\0’; }

解析 看到程序后,我们很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。注意其中第1个循环条件为i<N(即列),第2个循环的条件为J<M(即行),这是因为在循环的嵌套中越在内层,循环变化就越快。另外,在编写程序中注意是s[j]而非s[j]。
转载请注明原文地址:https://kaotiyun.com/show/5HID777K
0

最新回复(0)