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

admin2020-04-18  40

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

选项

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

解析 ①先把数组num的各元素清0;②遍历字符串,利用数字字符在.ASCII码中的连续规律,使用(数字字符-’0’)作数组的下标,个数作数组元素的值。
填空【1】:此处用临时指针p遍历字符串str,所以应填*p。
填空【2】:因为10个数字字符在ASCII码中是连续的,将它们和字符’0’作差刚好用来作为数组的下标。所以此处应该填bb[*p-’0’]++。
转载请注明原文地址:https://kaotiyun.com/show/6VCp777K
0

最新回复(0)