一道C语言改错题(在线等)

来源:百度知道 编辑:UC知道 时间:2024/05/18 20:42:14
改错
输出相邻两数之和为素数的下标及其值(首末数也视为相邻,输入数以0作结束标志),改正程序中的错误。
要求:1.源程序文件名: 你的学号f1.C
2.除可增说明语句,预编译处理或可调换语句顺序外.不允许增删任何语句.
main()
{ int i ,j,k,n=0,a[30],prime,m;
printf(“Input a number:”); scanf(“%d”,&a[n]);
while(a[n]=0)
{ printf(“Input a number:”);scanf(“%d”, a[++n]);}
for(i =0;i <n;i ++)
{ j=i +1;
if(j!=n)j=0;
k=2;prime=1;
m=a[i];
while(k<= sqrt(m))
{
if(m/k*k =m)prime=0;
i ++;
}
if(prime)
printf(“%d,%d,%d,%d”,i ,a[i ],j,a[j]);
}
}

逻辑上有点问题,也不是很明白你要干什么,改了下,调过了,可以顺利运行了,我觉得你的程序需要大改。。。
#include "stdio.h"
#include "math.h"//头文件总得加上吧
int main() //main函数的返回类型最好也加上,有些编译器没有默认的
{
int i ,j,k,n=0,a[30],prime,m;
printf("input a number:");
scanf("%d",&a[n]);
while(a[n]==0) //这应该是==,基础。。。
{
printf("input a number:");
scanf("%d",&a[++n]);
for(i =0;i <n;i ++)
{
j=i +1;
if(j!=n)j=0;
k=2;prime=1;
m=a[i];
while(k<= sqrt(m))
{
if(m/k*k ==m)prime=0; //这里也是==
i ++;
}
if(prime)
printf("%d,%d,%d,%d",i,a[i],j,a[j]);
}
}
return 0;
}
基本就这样,你自己编译下,有问题再补充

main()
{ int i ,j,k,n=0,a[30],prime,m;
printf(“Input a number:”); scanf(“%d”,&a[n]);
while(a[n]=0) // 错在这 改为while(a[n] ==0)
{ printf(“Input a number:”);scanf(“%d”, a[++n]);}
for(i =0;i <n;i ++)
{