问答题 请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,若二维数组中的数据为 W W W W S S S S H H H H 则字符串中的内容应是:WSHWSHWSH.WSH。 注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include<stdio.h>#define M 3#define N 4void fun(char(*s)[N],char*b){}void main(){ FILE*wf; char a[100],W[M][N]={{‘w’,‘w’,‘w’,‘w’},{‘S’,‘S’,‘S’,‘S’},{‘H’,‘H’,‘H’,‘H’}}; int i,j; prinff(“The matrix:\n”); for(i=0;i<M;i++) { for(j=0;j<N;j++) pfinff(“%3c”,w[i][j]); printf(“\n”); } fun(w,a); prinff(“The A string:\n”); puts(a); prinff(“\n”);/******************/ wf=fopen(“out.dat”,“w”); fprintf(wf,“%s”,a); fclose(wf);/******************/}
【正确答案】正确答案: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