3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。 #include <stdio.h> void main( ) { int s,i; ★ i=1; while(i<=99) s=s+i; ★ printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。 #include <stdio.h> void main() { int i,x,y=0; ★ scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★ printf("%d\n",y); }
时间: 2023-12-02 12:03:57 浏览: 158
(1)程序改错如下:
```
#include <stdio.h>
void main()
{
int s=0,i=1; //将s初始化为0
while(i<=99)
{
s=s+i;
i+=2; //每次加2
}
printf("1+3+5+…99的和是:%d\n",s);
}
```
(2)程序改错如下:
```
#include <stdio.h>
void main()
{
int i,x,y=1; //将y初始化为1,因为默认x是素数
scanf("%d",&x);
for(i=2;i<=x/2;i++) //去掉 &&y
{
if ((x%i)==0)
{
y=0;
break; //找到一个因子就退出循环
}
}
printf("%d\n",y);
}
```
相关问题
3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。 #include <stdio.h> void main( ) { int s,i; ★ i=1; while(i<=99) s=s+i; ★ printf("1+3+5+…99的和是:%d\n",s); }
程序中有两处错误:
1. 在变量定义时,变量s没有初始化,应该把s的初始值设为0。
2. 在while循环中,没有对变量i进行更新,应该在循环体内加上i=i+2;语句。
修改后的程序如下:
```
#include <stdio.h>
void main( )
{
int s=0,i; // 初始化s为0
i=1;
while(i<=99)
{
s=s+i;
i=i+2; // 更新i的值
}
printf("1+3+5+…99的和是:%d\n",s);
}
```
修改后的程序可以正确求出1+3+5+...99的和。
改错。下列程序中有三个错误,按原来程序的计算要求,纠正其错误 程序是在5个字符串中求最小字符串并输出结果。[程序] #include <string.h>#include <stdio.h> main() {char *name[5]={“FXPRESSION”,“VARIABLE”“STATEMENT”,“BLOCK”“FUNCTION"} char temp; int i; temp=name[0]; for(i=1;i<5;i++) if(temp >*name[i])>0) temp=name[il; printf(“%s\n”, *temp);
好的,我来帮您检查和改正这段程序。这段程序中有三个错误,分别是:
1. 第二个字符串“VARIABLE”后面缺少一个逗号。
2. 变量temp的类型应该是char*,而不是char。
3. 在最后输出结果时,应该使用printf("%s\n", temp)而不是printf("%s\n", *temp)。
下面是修改后的程序:
```c
#include <string.h>
#include <stdio.h>
int main() {
char* name[5] = {"FXPRESSION", "VARIABLE", "STATEMENT", "BLOCK", "FUNCTION"};
char* temp;
int i;
temp = name[0];
for (i = 1; i < 5; i++) {
if (strcmp(temp, name[i]) > 0) {
temp = name[i];
}
}
printf("%s\n", temp);
return 0;
}
```
修改后的程序使用了strcmp函数来比较字符串大小,将temp定义为char*类型,最后输出时使用了正确的格式化字符串。
阅读全文