ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:19.74KB ,
资源ID:5580561      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5580561.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言实验二报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言实验二报告.docx

1、C语言实验二报告C语言实验二报告北京电子科技学院(BESTI)实验报告课程:程序设计基础班级:姓名:学号:成绩:指导教师:张晓昆实验日期:实验密级:预习程度:实验时间:15:3018:30仪器组次:必修/选修:必修实验序号:2实验名称:函数编程练习实验目的与要求:主函数通常只处理输入和输出;掌握定义函数的方法;掌握函数实参与形参的对应关系,以及“值传递”的方式;掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法,、了解函数的嵌套调用方法和递归调用方法。观察堆栈窗口call stack,注意函数调用过程堆栈的动态变化。有兴趣的同学可以将几个函数分别放到不同的.C文件中,分别编译,再利用P

2、roject建立工程文件,然后连接执行,观察结果。实验内容素数(Prime Number),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被216之间的任何整数整除。 任务1:试商法是最简单的判断素数的方法。用i=2m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为0),则m不是素数,若上述范围内的所有整数都不能整除m,则m是素数。采用试商法,分别用goto语句、break语句和采用设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入

3、一个整数m,判断m是否为素数,如果m是素数,则按%d is a prime numbern格式打印该数是素数,否则按%d is not a prime numbern格式打印该数不是素数。然后分析哪一种方法可读性更好。1、 goto语句#include #include int IsPrime(int n); /判断是否是素数的函数原型int main() int m; printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if( IsPrime(m) = 1) /调用判断是否是素数的函数并输出结果 printf(%d is a

4、prime number!n, m); else printf(%d is not a prime number!n, m); return 0; /返回0 /主函数结束int IsPrime(int n) /判断是否是素数的函数 int i = 2; int j = 0; if(n = 1) /若j大于2,则说明能被2n-1之间的数整除,返回0;否则返回1 return 0; else return 1; /子函数结束2、 break语句#include #include int IsPrime(int n); /判断是否是素数的函数原型int main() int m; printf(Pl

5、ease enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if( IsPrime(m) = 1) /调用判断是否是素数的函数并输出结果 printf(%d is a prime numbern, m); else printf(%d is not a prime numbern, m); return 0; /返回0 /主函数结束int IsPrime(int n) /判断是否是素数的函数 int i; int j = 0; if( n 2 ) /若n小于2,返回0值 return 0; for(i = 2; i 1) /若j大于2,则说明能被2n-1

6、之间的数整除,返回0;否则返回1 return 0; break; if( j = 0) return 1; /子函数结束3、采用设置标志变量并加强循环测试#include #include int IsPrime(int n); /判断是否是素数的函数原型int main() int m; printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if( IsPrime(m) = 1) /调用判断是否是素数的函数并输出结果 printf(%d is a prime numbern, m); else printf(%d is not

7、 a prime numbern, m); return 0; /返回0 /主函数结束int IsPrime(int n) /判断是否是素数的函数 int i; int j = 0; if( n 2 ) /若n小于2,返回0值 return 0; for(i = 2; i = 1) /若j大于2,则说明能被2n-1之间的数整除,返回0;否则返回1 return 0; else return 1; /子函数结束任务2:用数学的方法可以证明,不能被2(取整)之间的数整除的数,一定不能被1和它本身之外的其他任何整数整除。根据素数的这个性质,通过修改素数判断函数IsPrime()的具体实现,编程完成任

8、务1。#include #include #include /因调用 sqrt()函数,故需此预处理命令int IsPrime(int n); /判断是否是素数的函数原型int main() int m; printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if( IsPrime(m) = 1) /调用判断是否是素数的函数并输出结果 printf(%d is a prime numbern, m); else printf(%d is not a prime numbern, m); return 0; /返回0 /主函数结束i

9、nt IsPrime(int n) /判断是否是素数的函数 int i; int j = 0; if( n 2 ) /若n小于2,返回0值 return 0; for(i = 2; i = 1) /若j大于2,则说明能被2n-1之间的数整除,返回0;否则返回1 return 0; else return 1; /子函数结束任务3:从键盘任意输入一个整数n,编程计算并输出1n之间的所有素数之和。#include #include #include /因调用 sqrt()函数,故需此预处理命令int IsPrime(int m); /判断是否是素数并求和的函数原型int main() int n;

10、 printf(Please enter a integer:); scanf(%d, &n); /用户输入欲判断的数 /打印输出1n之间的所有素数之和 printf(The sum of all the primes between 1 and the number you enter is: %dn, IsPrime(n); return 0; /返回0 /主函数结束int IsPrime(int m) /判断是否是素数的函数 int i; int j; int sum = 0; for(i = 2; i = m; i+) int k = 0; for(j = 2; j = sqrt(i)

11、; j+) if( i % j = 0) /利用试商法判断是否能被2 n的开方(取整)之间的数整除 k+; if(k = 0) /如果k等于0,说明i是素数,求和 sum = sum +i; return sum; /返回素数之和 /子函数结束任务4:从键盘任意输入一个整数m,若m不是素数,则计算并输出其所有的因子(不包括1),例如对于16,输出2,4,8;否则输出No divisor! It is a prime numbern。 #include #include #include /因调用 sqrt()函数,故需此预处理命令int IsPrime(int n); /判断是否是素数的函数原

12、型int main() int m; int i; printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if(IsPrime(m) = 1) /调用判断是否是素数的函数,若不是素数,打印因子(不包括1) for(i = 2; i = m; i+) if( m % i = 0) /利用试商法判断是否是因子 printf(%d , i); if(IsPrime(m) = 0) /调用判断是否是素数的函数并输出结果 printf(No divisor! It is a prime numbern); return 0; /返回0 /主

13、函数结束int IsPrime(int n) /判断是否是素数的函数 int i; int j = 0; for(i = 2; i = 1) /若j大于2,则说明能被2n-1之间的数整除,返回1;否则返回0 return 1; else return 0; /子函数结束任务5:如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数(Perfect Number)。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。#include #include int IsPe

14、rfect(int n); /判断输入的整数是否是完全数的函数原型int main() int m; printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if(IsPerfect(m) = 1) /调用判断是否是素数的函数,若是,打印语句 printf(The number you enter is a Perfect Number!n); if(IsPerfect(m) = 0) /调用判断是否是素数的函数,若不是,打印语句 printf(The number you enter is not a Perfect Number

15、!n); return 0; /返回0 /主函数结束int IsPerfect(int n) /判断输入的整数是否是完全数的函数 int i; int sum = 0; for(i = 1; i n; i+) if(n % i = 0) /判断是否是因子 sum = sum + i; /求因子之和 if(sum = n) /判断输入的整数是否是完全数 return 1; else return 0; /子函数结束任务6:从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出It is a prime numbern。例如,用户输

16、入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入91时,程序输出It is a prime numbern。#include #include #include /因调用 sqrt()函数,故需此预处理命令int IsPrime1(int x); /判断是否是素数的函数原型int IsPrime2(int y); /判断是否是素数的函数原型int main() int m; int a = 1; /a表示质因数之积 int b; /b表示m与其因数之商 printf(Please enter a integer:); scanf(%d, &m); /用户输入欲判断的数 if(I

17、sPrime1(m) = 1) /调用判断是否是素数的函数,若是,打印语句 printf(It is a prime number!n); /调用判断是否是素数的函数,若不是将m表示为质因数从小到大顺序排列的乘积形式输出 if(IsPrime1(m) = 0) printf(%d =, m); while(a != m) /判断所有因子之积是否等于m,不等继续运行 b = m / a; printf( %d , IsPrime2(b); /打印因子 a = IsPrime2(b) * a; /m的因子之积 if(a != m) printf(*); /打印乘号 return 0;int IsP

18、rime1(int x) /判断是否是素数的函数 int i; int j = 0; for(i = 1; i = sqrt(x); i+) if(x % i = 0) /利用试商法判断是否能被2 n的开方(取整)之间的数整除 j+; if(j = 1) /若j小于2,则说明能被2 n的开方(取整)之间的数整除,返回1;否则返回0 return 1; else return 0; /子函数结束int IsPrime2(int y) /判断是否是素数的函数 int i; int j; for(i = 2; i = y; i+) /找出2y之间的素数 int k = 0; for(j = 2; j

19、 = sqrt(i); j+) if( i % j = 0) /利用试商法判断是否能被2 i的开方(取整)之间的数整除 k+; if(k = 0 & y % i = 0) return i; 任务7: 验证:2000以内的正偶数都能够分解为两个素数之和(即验证哥德巴赫猜想对2000以内的正偶数成立),正奇数都能够分解为三个素数之和。注意最后要将结果上传之前,请将2000改为500再运行,并注意输出格式,每行5个等式,如:10=3+7;12=5+7;。#include #include #include /因调用 sqrt()函数,故需此预处理命令int IsPrime1(int x); /输出

20、正偶数分解为两个素数之和的函数原型int IsPrime2(int y); /输出正奇数分解为三个素数之和的函数原型int main() int m; /定义整型变量,为偶数 int n; /定义整型变量,为奇数 printf(正偶数等于两素数之和:n); for(m = 2; m = 100; m += 2) /输出正偶数分解为两个素数之和 IsPrime1(m); printf(n正奇数等于三素数之和:n); for(n = 5; n = 100; n += 2) /输出正奇数分解为三个素数之和 IsPrime2(n); return 0; /返回0 /主函数结束int IsPrime1(

21、int x) /输出正偶数分解为两个素数之和的函数 int i; /i表示素数 int j; /j用于判断i是否是素数 int a; /a表示素数 int b; /b用于判断a是否是素数 if(x % 5 = 4) printf(n); for(i = 2; i = x; i+) /判断i是2y之间的素数 int k1 = 0; for(j = 2; j = sqrt(i); j+) if( i % j = 0) k1+; if(k1 = 0) for(b = 2; b = x; b+) /判断b是2y之间的素数 int k2 = 0; for(a = 2; a = sqrt(b); a+)

22、if( b % a = 0) k2+; if( k2 = 0) if(i + b = x) /如果i、b都是素数,求和判断是否等于x,若等打印 printf(%d = %d + %d; , x, i, b); if(i + b = x) return 0; /if结束 /for循环结束 /if结束 /for循环结束 return 0; /返回0 /主函数结束int IsPrime2(int y) /输出正奇数分解为三个素数之和的函数 int i; /i表示素数 int j; /j用于判断i是否是素数 int a; /a表示素数 int b; /b用于判断a是否是素数 int g; /g表示素数

23、 int h; /h用于判断g是否是素数 if(y % 5 = 2) printf(n); for(i = 2; i = y; i+) /判断i是2y之间的素数 int k1 = 0; for(j = 2; j = sqrt(i); j+) if( i % j = 0) k1+; if(k1 = 0) for(b = 2; b = y; b+) /判断b是2y之间的素数 int k2 = 0; for(a = 2; a = sqrt(b); a+) if( b % a = 0) k2+; if( k2 = 0) for(g = 2; g = y; g+) /判断g是2y之间的素数 int k3 = 0; for(h = 2; h = sqrt(g); h+) if( g % h = 0) k3+; if(k3 = 0) if(i + b + g = y) /如果i、b、g都是素数,求和判断是否等于y,若等打印 printf(%d = %d + %d + %d; , y, i, b, g); if(i + b + g = y) /用于终止循环 return 0; /if结束 /for循环结束 / if结束 /for循环结束 /if结束 /for循环结束 return 0; /子函数结束

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1