C语言关于数组的问题
RT,这段代码的作用是打印出与输入数字相等的数组单元在数组中的序号,但我运行通过后输入数字没任何反应,求各位赐教#include <stdio.h>
int main()
{
int i;
int sum;
int number;//定义一个数组
int count;
count = 1;
scanf("%d",&sum);//输入数字
for(i=1;0<i<300;){
int k;
int isprime;
for(k=2;k<i;k++){
if(i%k!=0){
isprime=1;
}else{
isprime=0;
break;//判断是否为素数
}
}
if(isprime==1){
number=i;//若为素数则输入数组
i++;
count++;
}
}if(number==sum){
printf("%d",count);// 打印出与输入数字相等的数单元素序号
}
} 正常,根据你的程序,你的数组中存的都是素数,而count中存的始终是最后一个素数对应的下标,所以if判断很难成立,自然没有任何反应 BngThea 发表于 2017-11-1 20:28
正常,根据你的程序,你的数组中存的都是素数,而count中存的始终是最后一个素数对应的下标,所以if判断很 ...
求助应该怎么改?请您指教 人形UMP9 发表于 2017-11-1 22:47
求助应该怎么改?请您指教
你的代码错误的地方太多,我简单给一个可实现功能的代码:
#include <stdio.h>
int main(void)
{
int i, k, tar;
int number = {0};//定义一个数组并初始化为0
int count = 0, isprime = 1;
//获得300以内的所有素数
for(i = 2;i < 300; i++)
{
for(k = 2; k < i/2; k++)
{
if (i % k == 0)
{
isprime = 0;
break;
}
}
if (isprime)
{
number = i;
count++;
}
isprime = 1;
}
printf("请输入一个素数:");
scanf("%d",&tar);//输入数字
for (i = 0; i < count; i++)
{
if (number == tar)
{
printf("数组中对应的素数下标编号为 %d\n",i);
break;
}
}
return 0;
}
页:
[1]