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

改错输出相邻两数之和为素数的下标及其值(首末数也视为相邻,输入数以0作结束标志),改正程序中的错误。要求:1.源程序文件名:你的学号f1.C2.除可增说明语句,预编译处理... 改错
输出相邻两数之和为素数的下标及其值(首末数也视为相邻,输入数以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]);
}
}
展开
 我来答
wmdasxj
2008-12-30 · 超过18用户采纳过TA的回答
知道答主
回答量:572
采纳率:0%
帮助的人:175万
展开全部
逻辑上有点问题,也不是很明白你要干什么,改了下,调过了,可以顺利运行了,我觉得你的程序需要大改。。。
#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;
}
基本就这样,你自己编译下,有问题再补充
高金山
2008-12-30 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1703万
展开全部
这么烂的程序,还不允许改?
我就改了,改的比你的强多了!

#include<stdio.h>
#include<math.h>

int main()
{
int a[30],n=0,m,i,j,k;

do
{
printf("Input a number:");
scanf("%d", &a[n]);
} while(a[n++]!=0);

for(i=0;i<n;i++)
{
j=(i+1)%n;
m=a[i]+a[j];
for(k=2;k<=sqrt(m);k++)
{
if(m%k==0)break;
}
if(k>sqrt(m))
{
printf("%d,%d,%d,%d\n",i ,a[i],j,a[j]);
}
}
return 0
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lidong_xy
2008-12-30 · 超过28用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:88.8万
展开全部
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 ++)
{ 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]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujq007
2008-12-30 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1082万
展开全部
我改的很完美了~~
#include<stdio.h>
#include<math.h>
void main()
{ int i ,j,k,n=0,a[30],prime,m;
printf("Input a number:"); scanf("%d",&a[n]);
while(a[n]!=0) //!=0
{ printf("Input a number:");scanf("%d", &a[++n]);} //&a[++n]
for(i =0;i <n;i ++)
{ j=i +1;
if(j==n)j=0; //j==n
k=2;prime=1;
m=a[i];
while(k<= sqrt(m))
{
if(m/k*k ==m)prime=0;
k ++; //k++
}
if(prime)
printf("%d,%d,%d,%d\n",i ,a[i ],j,a[j]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东北大俠
2008-12-30 · TA获得超过186个赞
知道答主
回答量:333
采纳率:0%
帮助的人:82.6万
展开全部
中国人搞外国的破东东干什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式