求教一道C语言题目

题目:读入一个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字dig... 题目:
读入一个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0) 的返回值是3。

我的答案:
#include<stdio.h>
int main(void)
{
int num,number,digit;
int countdigit(int number,int digit);
printf("Enter an integer: ");
scanf("%d",&number);

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

}

int countdigit(int number,int digit)
{
int s;
digit=2;
do{
s=number%10;
if(s=digit){
s++;
}
number=number/10;
}while(number=0);
return s;

}
提交之后显示:
成功编译,但有警告信息.
3.c: In function ‘countdigit’:
3.c:24: warning: suggest parentheses around assignment used as truth value
3.c:28: warning: suggest parentheses around assignment used as truth value
3.c: In function ‘main’:
3.c:9: warning: ‘digit’ is used uninitialized in this function
求教哪里错了?
展开
 我来答
cfn19890320
推荐于2016-04-16
知道答主
回答量:5
采纳率:0%
帮助的人:5.3万
展开全部
程序语法性问题有2处,一下1,2点均为语法性问题。

1 自定义函数countdigit 在使用前应该预先声明弯滑仔,你是在main之后定义countdigit 的,在main里调用的话需要在main之前声明 :
#include<stdio.h>
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<stdio.h>
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;

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式