请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 1 #include<stdio.h>

admin2018-09-27  38

问题 请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。
    注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
1  #include<stdio.h>
2  #include<stdlib.h>
3  #define M 14
4  void NON0();
5  void fun(char(*t)[M],int *a,int*c)
6  {
7  }
8  void get(char(*s)[M])
9  {int i,j;
10  for(i=0;i<M;i++)
11  {for(j=0;j<M;j++)
12  {s[j]=65+rand()%12;
13  printf(’’%c’’,s[j]);}
14  printf(’’\n’’);
15  }
16  }
17  main()
18  {char a[M][M];
19  int x,y;
20  get(a);
21  fun(a,&x,&y);
22  printf(’’A=%d c=%d\n’’,x,y);
23  NONO();
24  }
25  void NONO()
26  {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。  */
27  FILE *fp,*wf;
28  int i,j,x,y;
29  char a[M][M];
30  fp=fopen(’’in.dat’’,’’r’’);
31  wf=fopen(’’out.dat’’,’’w’’);
32  for(i=0;i<M;i++)
33  {for(j=0;j<M;j++)
34  {fscanf(fp,’’%c ’’,&a[j]);}
35  }
36  Fun(a,&x,&y);
37  fprintf(wf,’’A:%d\n’’,x);
38  fprintf(wf,’’C=%d\n’’,y);
39  fclose(fp);
40  fclose(wf);
41  }

选项

答案1 void fun( char (*t)[M],int *a,int *c) 2 { int i,j; 3 *a=0; *c=0; 4 for( i=0; i<M; i++ ) 5 for( j=0; j<M; j++) 6 if(t[i][j]==’A’)*a=*a+1; 7 else if(t[i][j]==’c’)*c=*c+1; 8 }

解析 本题中fun函数实现的功能的主要功能是找出二维数组中A和C的个数,最先就能想到用条件语句进行判断和统计。解题步骤主要为:第一步,要得到所需要的二维数组,第二步,二维数组进入fun函数中进行数据处理,fun函数中需要if条件语句来进行判断,判断数组中的字母是否为A或者C,数组中的每个数据都需要进行判断,要注意A和C是分开统计的,所以这里需要同时统计A和C,然后分别得到结果;第三步,输出得到的结果:字母A和字母C的个数。
    本题首先需要一个二维数组,二维数组的大小在程序开始就进行了定义“define=14”,这个大小比较合适,然后利用gets函数得到数组,然后数据就可以进入fun函数中进行处理应用。进入fun函数,fun函数首先肯定需要for循环语句将二维数组中的数据进行排序使用,然后需要条件语句进行判断处理,这两步是一体,见程序第9~11行,for循环保证全部使用了二维数组中数据,并且是依次使用,if语句判断了字母是否为A或者C或者都不是,并且进行了统计相加得到了A的个数a,C的个数c,这样循环完成后,A和C的个数a、c就能继续返回主函数进行输出了,见程序26行,最终得到结果。
转载请注明原文地址:https://kaotiyun.com/show/18xp777K
0

最新回复(0)