#include <stdio.h> int main() { int i, n; sum=0; scanf("%d", &n); i=0; while(n>0){ if( n/11==0||n/19==0 ) { sum=sum+n; i++; } if( n==12 ) break; n=n-1; } printf("%d\n", sum); return 0; }
时间: 2024-03-14 14:44:38 浏览: 174
数据结构习题详解 答案
这段代码存在几个问题:
1. 变量 `sum` 没有定义,应该先定义后使用。
2. 循环条件 `n>0` 可能会导致死循环,因为没有对变量 `n` 进行修改,应该在循环体内对其进行修改。
3. `if` 语句中的条件 `n/11==0||n/19==0` 可能不符合题目要求,因为它会把所有除以11或19余数为0的数都加入到 `sum` 中,而题目要求的是除以11和19余数都不为0的数。应该将条件改为 `n%11!=0 && n%19!=0`。
4. `if` 语句中的条件 `n==12` 可能会使循环提前结束,但是根据题目要求,应该是当加入到 `sum` 中的数的个数为12时结束循环,因此应该将条件改为 `i==12`。
下面是修改后的代码:
```c
#include <stdio.h>
int main() {
int i = 0, n, sum = 0;
scanf("%d", &n);
while (i < 12) {
if (n % 11 != 0 && n % 19 != 0) {
sum += n;
i++;
}
n--;
}
printf("%d\n", sum);
return 0;
}
```
阅读全文