求教一道C语言题目

2024-12-26 12:41:43
推荐回答(1个)
回答1:

程序语法性问题有2处,一下1,2点均为语法性问题。

1 自定义函数countdigit 在使用前应该预先声明,你是在main之后定义countdigit 的,在main里调用的话需要在main之前声明 :
#include
int countdigit(int number,int digit); /j就在这里添加一行*/

int main(void)
...
或者将countdigit 的定义代码写到main之前,这样在main里调用到的话就可以找到countdigit 的存在了。

2 if 判断语句里的比较符号 应该是== ,而不是= 号。
if(s==digit){ /**这里的 s=digit 是不对的意思是赋值digit给s,是永远返回真的,比较应使用s==digit*/

s++;
}

再者就是程序逻辑问题
你这个countdigit 是用来求数字里单个数的个数的,但是你的函数把这个“单个数” 定义为2了,也就是俗话中的的写死了,如果我要求99999里的9怎么办呢?
所以你要明白你们老师要求程序为countdigit(number,digit),,参数 number,digit的意义,你要问我参数是什么,还是自己好好想想吧,祝你学习愉快,编程还是蛮有趣的不是么?

建议代码(修改过的,未经调试):

#include
int countdigit(int number,int digit); /***** here ***/

int main(void)
{
int num,number,digit;
int countdigit(int number,int digit);
printf("Enter an integer: ");
scanf("%d",&number);

printf("输入要搜寻的“单个数字符”: "); /*****这里不就可以解决 搜寻除了 2 以外的数字了么?***/

scanf("%d",&digit);

num=countdigit(number,digit);
printf("Number of digit 2: %d",num);
return 0;

}

int countdigit(int number,int digit)
{
int s;
/* digit=2;*/ /***** here 这个不需要的,digit “单个数” 可以从参数中传入的***/

do{
s=number%10;
if(s==digit){ /***** here ***/

s++;
}
number=number/10;
}while(number=0);
return s;

}