2013年计算机二级C语言上机题库四_第4页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年2月26日
 编程题
  请编写一个函数void fun(char*tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次存放在pp所指数组中。
  例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:# include <conio.h>
  # include <stdio.h>
  void fun(char *tt, int pp[])
  {
  }
  main()
  {
  char aa[1000];
  int bb[26], k;
  FILE *out;
  printf("\nPlease enter a char string:");
  scanf("%s",aa);
  fun(aa,bb);
  for(k=0;k<26 ; k++)
  printf("%d",bb[k]);
  printf("\n");
  fun("a bosom friend afar brings a distant land near", bb);
  out = fopen("out.dat", "w");
  for (k = 0; k < 26; k++)
  fprintf(out, "%d\n", bb[k]);
  fclose(out);
  }
  答案是:
  void fun(char *tt,int pp[])
  {
  int I;
  for(i=0;i<26;i++)
  pp[i]=0;
  while(*tt)
  {switch(*tt)
  {
  case ’a’:pp[0]++;break;
  case ’b’:pp[1]++;break;
  case ’c’:pp[2]++;break;
  case ’d’:pp[3]++;break;
  case ’e’:pp[4]++;break;
  case ’f’:pp[5]++;break;
  case ’g’:pp[6]++;break;
  case ’h’:pp[7]++;break;
  case ’i’:pp[8]++;break;
  case ’j’:pp[9]++;break;
  case ’k’:pp[10]++;break;
  case ’l’:pp[11]++;break;
  case ’m’:pp[12]++;break;
  case ’n’:pp[13]++;break;
  case ’o’:pp[14]++;break;
  case ’p’:pp[15]++;break;
  case ’q’:pp[16]++;break;
  case ’r’:pp[17]++;break;
  case ’s’:pp[18]++;break;
  case ’t’:pp[19]++;break;
  case ’u’:pp[20]++;break;
  case ’v’:pp[21]++;break;
  case ’w’:pp[22]++;break;
  case ’x’:pp[23]++;break;
  case ’y’:pp[24]++;break;
  case ’z’:pp[25]++;break;
  }
  tt++;
  }
  }
首页 1 2 3 4 尾页

相关文章