请补充fun函数,该函数的功能是:按’0’到’9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。 例如,输入“x=1123.456+0.909*bc”,结果为:1=2,3=1,5=1,7=0,9=2

admin2010-11-26  26

问题 请补充fun函数,该函数的功能是:按’0’到’9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。
   例如,输入“x=1123.456+0.909*bc”,结果为:1=2,3=1,5=1,7=0,9=2。
   [注意] 部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
   [试题源程序]
   #include<conio.h>
   #include<stdio.h>
   #define N 20
   fun(char*tt, int num[])
   {
   int i, j;
   int bb[10];
   char *p=tt;
   for(i=0;i<10; i++)
   {
   num=0;
   bb=0;
   }
   while(  (1)  )
   {
   if(*p>=’0’&&*p<=’9’)
     (2)  ;
   p++;
   }
   for(i=i, J=0; i<10; i=i+2, j++)
     (3)  ;
   }
   main()
   {
   char str[N];
   int num[10], k;
   cirscr();
   printf("\nplease enter a string:");
   gets(str);
   printf("\n*******The  original  string*******\n");
   puts(str);
   fun(str, num);
   printf("\n******The number of letter********\n”);
   for(k=0; k<5; k++)
   {
   printf("\n");
   printf("%d=%d ", 2*k+1, hum[k]);
   }
   printf("\n");
   return;
   }

选项

答案 [1] *D [2] bb[*p-’0’]++ [3] num[j]=bb[i]

解析 本题的设计思路是:①先把数组num的各元素清0;②遍历字符串,利用数字字符在ASCAII码中的连续规律,使用(数字字符-’0’)作为数组的下标,个数作为数组元素的值。
   填空1:此处应该是使用临时指针p遍历字符串str,所以应填*p。
   填空2:因为10个数字字符是连续的,将它们和’0’做差运算刚好构成数组的下标。所以此处应该填bb[*p-’0’]++。
   填空3:最后要把奇数数字出现的次数赋给数组num保存。所以此处应填num[j]=bb
转载请注明原文地址:https://kaotiyun.com/show/CPID777K
0

相关试题推荐
最新回复(0)