C语言的问题!各位高手请快来帮忙~~~

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:26:28
C语言问题;
各位大哥有个程序有一点问题;
题目是:请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,

若输入17、5,则应输出:19、23、29、31、37。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入

所编写的若干语句。

我编了 fun函数发现把fun函数的第二个for语句其前的括号去掉则运行不出结果,加上则出结果。

我想问:其中有什么不同?谢拉~~~~~
#include <stdio.h>
void fun(int m,int k,int xx[])
{
int i,j,n;
for(i=m+1,j=0;j<k;i++)
{ for(n=2;n<i;n++)
if(i%n==0) break;
if(n>=i) xx[j++]=i;}

}
main()
{
int m,n,zz[1000] ;
printf( "Please enter two integers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=0;m<n;m++) printf("%d ",zz[m]);
printf("\n");
}

去掉第二个括号,那么当i和n相等的时候,由于满足了if条件,则本次循环退出,而下面的语句:if(n>=i) xx[j++]=i不会执行,也就是说你没有把满足条件的素数存入数组中,当然不会有结果了

c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句.
for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1)先求表达式 1.
(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为

假(值为0),则结束循环,转到第5步.
(3)求解表达式3
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
for(循环变量赋初值;循环条件;循环变量增值)语句


for(i=1;i<=100;i++)sum=sum+i;
它的执行相当于

i=1;
while(i<=100){
sum=sum+i;
i++;
}
显然,用for语句更简单、方便。
说明:
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:for(i=1;;i++){.....};
相当于

i=1;
while(1)
{sum=sum+1;
i++;
}
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:

for(i=1;i<=100;)
{sum=sum+1;
i++;
}
这个例子