|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
输入一个正整数n
,编程统计1~n
的自然数中,各位数字之和是偶数的个数。
输入描述
多组数据输入,每一组只有一个数字n
输出描述
每个结果一行
- #include<stdio.h>
- int main()
- {
- int n,a,sum,s=0;
- while(scanf("%d",&n)!=EOF)
- {
- s=0;
- for(int i=1;i<=n;i++)
- {
- sum=0;
- for(int j=i;j>0;)
- {
- a=j%10;
- sum+=a;
- j=j/10;
- }
- if (sum%2==0);s++;
- }
- printf("%d\n",s);
- }
- }
复制代码
这段代码存在一个错误:
1. 在条件语句 if (sum%2==0);s++; 中,分号";"的位置不正确。在这个代码中,分号将if语句作为空语句,因此无论条件是否满足,下面的 s++都会执行。应该将分号移除,使 s++成为if语句的一部分。
修改后的代码如下:
- ++
- #include<stdio.h>
- int main() {
- int n,a,sum,s=0;
- while(scanf("%d",&n)!=EOF) {
- s=0;
- for(int i=1;i<=n;i++) {
- sum=0;
- for(int j=i;j>0;) {
- a=j%10;
- sum+=a;
- j=j/10;
- }
- if (sum%2==0)
- s++;
- }
- printf("%d\n",s);
- }
- return 0;
- }
复制代码
修改后的代码会根据输入的正整数n,统计从1到n的自然数中,各位数字之和为偶数的个数。每次输入一个n并计算完毕后,会输出结果s。然后继续进行下一组输入,直到文件结尾。请注意,之前的分号";"被移除,这样在条件满足时才会执行s++操作。最后代码会返回0,表示正常结束。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|