有关C语言,求解答
函数fun的功能是:统计长整数n的各个位上出现数字1,2,3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。例如,当=123114350时,结果应该为:c1=3...
函数fun的功能是:统计长整数n 的各个位上出现数字1,2,3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。
例如,当=123114350时,结果应该为:c1=3,c2=1,c3=2.
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序如下: #include <stdio.h>
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n)
{
switch(___1___)
{
case 1:
c1++;
___2___;
case 2:
c2++;
___3___;
case 3:
c3++;
}
n /= 10;
}
}
main()
{
long n = 123114350L;
fun(n);
printf("\nThe result :\n");
printf("n=%ld c1=%d c2=%d c3=%d\n", n, c1, c2, c3);
}
第1处填空:n%10
第2处填空:break
第3处填空:break
第一个空为什么是n%10 不懂,求解释……………… 展开
例如,当=123114350时,结果应该为:c1=3,c2=1,c3=2.
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序如下: #include <stdio.h>
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n)
{
switch(___1___)
{
case 1:
c1++;
___2___;
case 2:
c2++;
___3___;
case 3:
c3++;
}
n /= 10;
}
}
main()
{
long n = 123114350L;
fun(n);
printf("\nThe result :\n");
printf("n=%ld c1=%d c2=%d c3=%d\n", n, c1, c2, c3);
}
第1处填空:n%10
第2处填空:break
第3处填空:break
第一个空为什么是n%10 不懂,求解释……………… 展开
3个回答
展开全部
第一个空的意思是说n除以10,最后的余数作为switch函数的变量。仔细一想一想啊,n除以10的余数就是从右往左第一个非零的数字,如果不是1,2,3就再一次除10,这一次的除10就把那个非零的数字除掉了,这样的话用while循环一次一次循环就筛了一边所有的位数,其他的应该能看懂吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设n=232
第一次switch 执行n%10 取余为2 执行 case 2: c2++ 程序继续运行到n /= 10 此时n=23
第二次switch 执行n%10 取余为3 执行 case 3: c3++ 程序继续运行到n /= 10 此时n=2
第三次switch 执行n%10 取余为2 执行 case 2: c2++ 程序继续运行到n /= 10 此时n=0
switch终止 执行main{}
第一次switch 执行n%10 取余为2 执行 case 2: c2++ 程序继续运行到n /= 10 此时n=23
第二次switch 执行n%10 取余为3 执行 case 3: c3++ 程序继续运行到n /= 10 此时n=2
第三次switch 执行n%10 取余为2 执行 case 2: c2++ 程序继续运行到n /= 10 此时n=0
switch终止 执行main{}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
n%10表示n的最后一位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询