|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:将大于整数m且紧靠m的k个素数存入数组。 例如输入17,5 则应输出 19,23,29,31,37.
本人原先的代码:#include <stdio.h>
int isP(int m)
{
int i;
for(i = 2; i < m; i++)
if(m % i == 0) return 0;
return 1;
}
void num(int m, int k, int xx[])
{
int i;
for(i=0;i<=k;i++)
{
m=m++;
if(isP(m))
xx[i]=m;
}
}
main()
{
int m, n, xx[1000];
printf("\nPlease enter two integers:");
scanf("%d,%d", &m, &n );
num(m, n, xx);
for(m = 0; m < n; m++)
printf("%d ", xx[m]);
printf("\n");
}
结果如图:
改进后的代码:#include <stdio.h>
int isP(int m)
{
int i;
for(i = 2; i < m; i++)
if(m % i == 0) return 0;
return 1;
}
void num(int m, int k, int xx[])
{
int i;
for(i=0;i<=k;)
{
m=m++;
if(isP(m))
xx[i++]=m;
}
}
main()
{
int m, n, xx[1000];
printf("\nPlease enter two integers:");
scanf("%d,%d", &m, &n );
num(m, n, xx);
for(m = 0; m < n; m++)
printf("%d ", xx[m]);
printf("\n");
}
结果正确如图
两段代码不同处已表示 ,为什么第一段代码得到的结果是错误的?
-858993460 是什么意思?是下面的解释吗?
1.当一个未初始化赋值的时候,他在内存就默认保存为-858993460;
2.如果变量的数据类型由于你的运算的溢出了,在内存中系统就自动改为-858993460
|
|