当直接给n,m赋值时,素数正常输出,结果输出也是正确的
而使用scanf给n,m赋值后,结果就变成了0,且素数也不再输出
想问一下程序的问题出在了哪?
/*
现在,给定两个整数n和m,0
#include
int main ()
{
int x,i,n,m,a=0;
int total,stop;
scanf("%d %d",&n,&m); //读取n,m的值
for (x=2;x>0;x++) //取素数
{
int bian = 1;
for (i=2;iif (x % i == 0)
{
bian = 0; //当 x 不为素数时,则将变量bian赋值为 0
break;
}
}
if (bian == 1) //当 x 为素数时,进入判断
{
a++;
if (a>=n) //n个素数到第m个素数之间所有的素数的和
{
if (a<=m)
{
total = x + total;
printf("%d",x);
}
if (a > m) //当取到第m个素数时退出循环
{
stop = 0;
break;
}
}
}
if (stop) break;
}
printf("%d",total);
return 0;
}
这里问题不在scanf() 输入部分,修改处见注释,供参考:
/*
现在,给定两个整数n和m,0<n<=m<=200,
你的程序要计算第n个素数到第m个素数之间所有的素数的和
包括第n个素数和第m个素数。
*/
#include <stdio.h>
int main ()
{
int x,i,n,m,a=0;
int total = 0,stop = 1; //修改 初始化两数
scanf("%d %d",&n,&m);
for (x=2;x>0;x++)
{
int bian = 1;
for (i=2;i<x;i++)
{
if (x % i == 0)
{
bian = 0;
break;
}
}
if (bian == 1)
{
a++;
if (a>=n && a <= m)//修改
{
//if (a<=m) 修改
//{ 修改
total = x + total;
printf("%d ",x);
}
else if (a > m) // 修改
{
stop = 0;
break;
}
//} 修改
}
if (!stop) break; //修改 if (stop)
}
printf("\n%d",total); //修改
return 0;
}
输入时两数之间加一个空格试试看