C语言问题急需解答

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:05:51
统计一个整数中数字的个数
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
读入1 个整数,统计并输出该数中2 的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数number 中数字digit
的个数。例如,countdigit(10090,0)的返回值是3。
例:括号内是说明
输入:
3 (repeat=3)
-21902
2
345543
输出:
count=2 (-21902 中有2 个2)
count=1 (有1 个2)
count=0 (345543 中没有2)
#include "stdio.h"
int main( )
{
int ri,repeat;
int count;
long in;
int countdigit(long number, int digit);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%ld",&in);
/*---------*/
printf("count=%d\n",count);
}
}
/*---------*/

看你问了很多道题,如果是你们的作业之类的还是自己做吧。
授之以鱼,不若授之以渔。只回答这一道,希望你掌握分析的方法:
分析:main里空缺的肯定是countdigit的调用,countdigit的第一个参数在前面已经有了:in,要看in里2的个数,第二个参数自然就是2,返回值是count已经定义了,后面要打印count。
第二处自然就是countdigit的实现。
一种可能的方法是通过把输入的数字当作字符串方式,把2也当作字符,第二种就是用数字方式。但给出的程序输入的是ld,自然用第二中好一些。
没有更简单的办法,只能一位一位的看是不是2,因此需要把in拆成单个数字,学过数学应知道整数按照10进制取整、取余是拆分的方法。答案自然救出来了:

第一处写countdigit函数的调用:
count = countdigit(in, 2);
第二处写countdigit函数的实现:
int countdigit(long number, int digit)
{
int count = 0;
long tmp = number;
while (tmp > 0) {
if (tmp%10 == digit) {
count++;
}

tmp = tmp/10;
}

return count;
}