更改下面代码的错误:#include <stdio.h>main() { int m,k,i,n; for(m=101;m<=200;m+=2) { if(n%10==0) printf("\n"); k=sqrt(m); for(i= 1;i<=k;i++) if(m%i==0) continue; if(i==m%10) { printf("%d ",m); n++; } } }
时间: 2023-12-04 10:02:51 浏览: 51
这个程序中有一些错误和不规范的写法,需要修改:
1. 在头文件 `#include <stdio.h>` 后应该加上一个空行。
2. 在 `main()` 函数的括号后应该加上一个空格,即 `main() {` 应该改为 `main() { `。
3. 在第 4 行 `n` 变量没有初始化,应该给它赋初值,比如 `n = 0;`。
4. 在第 6 行应该把 `n%10` 改为 `m%10`,因为这里应该判断的是 `m` 的个位数是否为 0。
5. 在第 8 行缺少头文件 `#include <math.h>`,因为使用了 `sqrt()` 函数。
6. 在第 9 行应该把 `continue` 改为 `break`,因为如果发现一个因子就可以退出循环了。
7. 在第 11 行应该把分号 `;` 改为英文半角分号 `;`。
修改后的代码如下所示:
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, k, i, n = 0;
for (m = 101; m <= 200; m += 2) {
if (m % 10 == 0)
printf("\n");
k = sqrt(m);
for (i = 2; i <= k; i++) {
if (m % i == 0) {
break;
}
}
if (i > k && i == m % 10) {
printf("%d ", m);
n++;
}
}
printf("\nTotal: %d\n", n);
return 0;
}
```
这个程序的功能是输出 101 到 200 之间所有的素数,且个位数为 9 的素数要换行输出,并统计输出的素数个数。
阅读全文