素数也就是不能分解为两个因数相乘。从 2 开始检查,一直到 n -1,如果 n%i==0,也就是说 i 是 n 的
因数,则中断循环。否则继续检查下一个数。
因此,如果中间发现了 n 的因数 (n 不是素数 ),for 循环就中断了,则最后 i 的值小于 n;如果从 2 到 n-1
都没有 n 的因数 (n 是素数 ),则 for 循环会进行到底,最后 i 的值就等于 n。
最后通过判断 i 的值来判断 n 是否为素数就可以了。
在三级考试中,要注意审题,有的题目是让考生自己写判断素数的程序语句,也有个别题目在题目中
给出了判断素数的子函数,因此这样的话,只需要调用题目中给出的函数就可以了,而不需要做重复
工作。当然如果做了重复工作也没有关系,不会影响最后结果的正确性,只是多费点时间而已。
关于判断素数,程序可以写的更精简,执行效率也可以更高,不过为了简单易懂,这里不再多写,并
且在以后的题目中,也都以这种形式来判断素数。
6、 return 语句。
在写子函数时,有时会要求函数返回一个值,只要用 return 语句将其返回就可以了。 return 后面的括
号可以写也可以不写。
需要注意的是:
一个函数最多只能有一个返回值,并且只能执行一次返回值的操作。在执行 return 语句之后,函数的
调用将结束,也就是说子函数中的程序将会终止运行。
也就是说, 从某种意义上讲, 子函数中的 return 语句具有类似于 break 语句的作用, 可以用于控制子函
数中的循环语句的执行。这在以后的例题中也会用到,有助于理解一些问题。
比如,要写一个判断素数的子函数,要求是素数则返回 1,不是素数则返回 0,程序如下:
int is sushu(int n)
{ int i;
for(i=2;i<n;i++)
if(n%i==0) return0;
return 1;
}
要注意 for 语句作用范围。有的同学可能会认为最后一句的前面少了个“ else”,其实不是这样。
按照上面讲的判断素数的函数原理,以及有关 ruturn 语句的“类似” break 语句的特点,不难这个小函
数。
二、常用库函数(使用频率与顺序有关) :
1、 strlen(str)
计算字符串的长度(不包括字符串结束标志‘ \0’)。
2、 strcmp(str1,str2)
比较两个字符串的大小,其实函数的返回值就是 str1 与 str2 对应位置上第一对不相等的字符的差值。
显然,如果 strcmp(str1,str2)>0,则 str1>str2;
如果 strcmp(str1,str2)<0,则 str1<str2;
如果 strcmp(str1,str2)==0,则 str1==str2;
理解这个函数并不难, 关键是在比较字符串的大小时, 一定要记得使用它,而不能直接这样写: str1>str2,
或者 str1-str2,这是很典型的错误。