C语言实验二报告

更新时间:2023-11-13 21:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京电子科技学院(BESTI)

课程: 程序设计基础 成绩:

班级:

姓名:

学号:

指导教师: 张晓昆 预习程度:

实验日期:

15:30~18:30

2

实验密级:

必修

实验时间:

仪器组次: 实验名称:

必修/选修: 实验序号:

函数编程练习

实验目的与要求:

主函数通常只处理输入和输出;掌握定义函数的方法;掌握函数实参与形参的对应关系,以及“值传递”的方式;掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法,、了解函数的嵌套调用方法和递归调用方法。

观察堆栈窗口call stack,注意函数调用过程堆栈的动态变化。

有兴趣的同学可以将几个函数分别放到不同的.C文件中,分别编译,再利用Project建立工程文件,然后连接执行,观察结果。

实验内容

素数(Prime Number),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被2~16之间的任何整数整除。

任务1:试商法是最简单的判断素数的方法。用i=2~m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为0),则m不是素数,若上述范围内的所有整数都不能整除m,则m是素数。采用试商法,分别用goto语句、break语句和采用设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,则按\is a prime number\\n\格式打印该数是素数,否则按\格式打印该数不是素数。然后分析哪一种方法可读性更好。 1、 goto语句 #include #include

int IsPrime(int n); //判断是否是素数的函数原型 int main() { int m;

printf(\

scanf(\ //用户输入欲判断的数

if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果 printf(\ }

else{

printf(\ }

return 0; //返回0 } //主函数结束

int IsPrime(int n) //判断是否是素数的函数 {

int i = 2; int j = 0;

if(n < 2){ //若n小于2,返回0值 return 0; } if(n == 2){ return 1;

}

loop:if(n % i == 0){ //利用goto语句 i++; j++; goto loop; }

if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0; } else{ return 1; } } //子函数结束

2、 break语句 #include #include

int IsPrime(int n); //判断是否是素数的函数原型 int main() { int m;

printf(\

scanf(\ //用户输入欲判断的数

if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果 printf(\ }

else{

printf(\ }

return 0; //返回0 } //主函数结束

int IsPrime(int n) //判断是否是素数的函数 { int i; int j = 0;

if( n < 2 ){ //若n小于2,返回0值 return 0; }

for(i = 2; i <= n - 1; i++){

if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除 j++; }

if(j > 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0; break; } }

if( j == 0) return 1; } //子函数结束

3、采用设置标志变量并加强循环测试 #include #include

int IsPrime(int n); //判断是否是素数的函数原型

int main() {

int m;

printf(\

scanf(\ //用户输入欲判断的数

if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果 printf(\ }

else{

printf(\ }

return 0; //返回0 } //主函数结束

int IsPrime(int n) //判断是否是素数的函数 {

int i;

int j = 0;

if( n < 2 ){ //若n小于2,返回0值 return 0; }

for(i = 2; i <= n - 1; i++){

if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除 j++; } }

if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0; } else{

return 1; }

} //子函数结束

任务2:用数学的方法可以证明,不能被2~m(取整)之间的数整除的数,一定不能被1和它本身之外的其他任何整数整除。根据素数的这个性质,通过修改素数判断函数IsPrime()的具体实现,编程完成任务1。 #include #include

#include //因调用 sqrt()函数,故需此预处理命令 int IsPrime(int n); //判断是否是素数的函数原型

int main() {

int m;

printf(\

scanf(\ //用户输入欲判断的数

if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果 printf(\ }

else{

printf(\ }

return 0; //返回0 } //主函数结束

本文来源:https://www.bwwdw.com/article/vq4v.html

Top