求教一道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
求教哪里错了? 展开
读入一个整数,统计并输出该数中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
求教哪里错了? 展开
展开全部
程序语法性问题有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;
}
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |