c语言中为什么说有了函数只要调用就可以,用循环不也可以吗

不好意思哦,菜菜菜菜鸟刚开始学,所有这个问题搞不懂,以下两个程序,功能都是输出1到某个数之间所有的素数,第一个是不用函数,第二个是用函数的,老师说用第一个的话要写好多遍,用第二个的话只需要写一遍,要用的话再调用就可以了,可是我调试了以下明明结果是一样的呀,为什么呢?
1、

#include<stdio.h>
int main(void)
{
int val;
int i;
int j;
scanf("%d",&val);
for(i=2;i<=val;++i)
{
for(j=2;j<i;++j)
{
if(0==i%j)
break;
}
if(j==i)
printf("%d\n",i);
}
return 0;
}

2、
#include<stdio.h>
bool IsPrime(int n)
{
int i;
for(i=2;i<m;++i)
{
if(0==m%i)
break;
if(i==m)
printf("%d\n",m);
}
int main(void)
{
int val;
int i;
int j;
scanf("%d",&val);
for(i=2;i<=val;++i)
{
if(IsPrime(i))
printf("%d\n",i);
}
return0;
}

首先,你的函数代码有点问题

bool IsPrime(int n)
{
int i;
for(i=2;i<m;++i)
{
if(0==m%i)
break;
} //少了括号
if(i==m)
return true; //是素数
else
return false ; //不是
}
或写成如下:
bool IsPrime(int n)
{
int i;
for(i=2;i<m;++i)
{
if(0==m%i)
    return false ; //有因数,不是

return true; //全检测完了,是素数
}

有了函数可以让你的代码可读性更强,而且在编程调试时,方便定位问题

你老师的说法,可能是指,如果有多处调用相同的功能时,没有函数会写多遍相同的代码,而有了函数,就只需要直接调用函数就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-06
这个程序比较简单,所以看不出来