要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。 2、提示行下一行为错误行。 (1) 功能:判断m是否为素数,若是返回1,否则返回0。 #include <stdio.h> /**********FOUND**********/ void fun( int n) { int i,k=1; if(m<=1) k=0; /**********FOUND**********/ for(i=1;i<m;i++) /**********FOUND**********/ if(m%i=0) k=0; /**********FOUND**********/ return m; } void main() { int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) { printf("%4d",m);k++; if(k%5==0) printf("\n"); } }
时间: 2023-06-13 19:07:44 浏览: 46
(1) 功能:判断m是否为素数,若是返回1,否则返回0。
#include <stdio.h>
/**********FOUND**********/
int fun(int m) {
int i,k=1;
if(m<=1) k=0;
/**********FOUND**********/
for(i=2;i<m;i++) /**********FOUND**********/
if(m%i==0) k=0;
/**********FOUND**********/
return k;
}
void main() {
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0) printf("\n");
}
}
错误在第 6 行,应该是 if(m<=1) k=0;,判断的是 m 不是 n,同时要把函数返回类型改为 int,函数返回 k。在第 8 行,应该从 i=2 开始循环,因为 1 不是素数。在第 10 行,判断条件应该是 if(m%i==0),判断是否能被整除。最后在第 12 行,要返回 k 而不是 m。
相关问题
程序改错功能:把str1 数组中下标为偶数的元素中字符复制到str2 数组中。
以下是正确的程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello world";
char str2[100];
int len = strlen(str1);
for (int i = 0; i < len; i += 2) {
str2[i] = str1[i];
}
str2[len] = '\0';
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
return 0;
}
```
程序说明:
1. 定义 `str1` 和 `str2` 两个字符数组,并初始化 `str1`;
2. 使用 `strlen()` 函数获取 `str1` 的长度,存放在 `len` 变量中;
3. 使用 `for` 循环遍历 `str1` 数组,从下标为 0 开始,每次增加 2;
4. 在循环中,将 `str1` 中下标为偶数的元素中的字符复制到 `str2` 数组中;
5. 在循环结束后,需要在 `str2` 的最后一个位置添加上字符串结束符 `'\0'`,否则可能会输出乱码;
6. 最后,使用 `printf()` 函数分别输出 `str1` 和 `str2` 的值。
3.程序改错。有Java_1.java文件,该程序不完整,请在注释行*********Found*********”下一行语句的下划线地方填上正确的内容,然后删除下划线,最终程序的运行结果如图:<Studentscoreis90andgradeisAStudent 1scoreis80andgradeisAStudent2scoreis75and gradeisBStudent 3scoreis67andgradeisCStudent4 scoreis53andgradeisD
抱歉,作为语言模型,我无法看到你的程序代码或运行结果。但是,根据你提供的信息,我可以给出以下答案:
在注释行*********Found*********”下一行语句的下划线地方填上如下内容:
System.out.println("Student " + i + " score is " + score[i] + " and grade is " + grade[i]);
其中,i为学生的编号,score为学生成绩数组,grade为学生等级数组。