欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    C语言实验二报告.docx

    • 资源ID:1142713       资源大小:37.36KB        全文页数:11页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言实验二报告.docx

    北京电子科技学院(BESTI)实验报告课程:程序设计根基班级:姓名:学号:成绩:指导教师:张晓昆实验日期:实验密级:预习程度:实验时间:15:30-18:30仪器组次:必修/选修:必修实验序号:2实验名称:函数编程练2实验目的与要求,主函数通常只处理输入和输出;掌握定义函数的方法;掌握函数实参与形参的对应关系,以及“值传递”的方式;掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法,、了解函数的嵌套调用方法和递归调用方法。观察堆栈窗口Callstack,注意函数调用过程堆栈的动态变化。有兴趣的同学可以将几个函数分别放到不同的.C文件中,分别编译,再利用ProjeCl建设工程文件,然后连接执行,观察结果。实验内容素数(PrimeNUmber),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被216之间的任何整数整除。任务h试商法是最简单的判断素数的方法。用i=2m-l之间的整数去试商,假设存在某个m能被1与m本身以外的整数i整除(即余数为0),那么m不是素数,假设上述范围内的所有整数都不能整除m,那么m是素数。采用试商法,分别用got。语句、break语句和采用设置标志变量并加强循环测试等三种方法编写素数判断函数ISPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,那么按"disaprimenumbern"格式打印该数是素数,否那么按"disnotaprimenumbern"格式打印该数不是素数。然后分析哪一种方法可读性更好。1、goto语句#include<stdio.h>#include<stdlib.h>intIsPrime(intn);判断是否是素数的函数原型intmain()(intm;printf(,PIeaseenterainteger:");scanf("%d",&m);用户输入欲判断的数if(IsPrime(m)=1)调用判断是否是素数的函数并输出结果printf(,%disaprimenumber!n",m);Ielseprintf(,%disnotaprimenumber!n'm);Ireturn0;返回0)主函数完毕intIsPrime(intn)判断是否是素数的函数(inti=2;intj=O;if(n<2)(假设n小于2,返回。值return0;Iif(n=2)return1;Iloop:if(n%i=0)利用goto语句i+;j+;gotoloop;)if(i>=D假设j大于2,那么说明能被2n-l之间的数整除,返回0;否那么返回1return0;)elsereturnI;)子函数完毕2、break语句#include<stdio.h>#include<stdlib.h>intIsPrime(intn);判断是否是素数的函数原型intmain()intm;printf("Pleaseenterainteger:");scanf(1,%d",&m);用户输入欲判断的数if(IsPrime(m)=1)调用判断是否是素数的函数并输出结果printf("%disaprimenumbern",m);)elseprintf("%disnotaprimenumbernm);)return0;返回0主函数完毕intIsPrime(intn)判断是否是素数的函数(inti;intj=O;if(n<2)假设n小于2,返回0值return0;)for(i=2;i<=n-1;i+)(if(n%i=0)利用试商法判断是否能被2-n-l之间的数整除j+;Iif(j>)(假设j大于2,那么说明能被2n-l之间的数整除,返回0;否那么返回1return0;break;I)if(j=O)returnI;)子函数完毕3、采用设置标志变量并加强循环测试#include<stdio.h>#include<stdlib.h>intIsPrime(intn);判断是否是素数的函数原型intmain()(intm;printf("Pleaseenterainteger:");scanf("%d",&m);用户输入欲判断的数if(IsPrime(m)=1)调用判断是否是素数的函数并输出结果printf("%disaprimenumbern",m);elseprintf("%disnotaprimenumbern,",m);Ireturn0;返回0主函数完毕intIsPrime(intn)判断是否是素数的函数Iinti;intj=0;if(n<2)假设n小于2,返回。值return0;Ifor(i=2;i<=n-1;i+)if(n%i=0)利用试商法判断是否能被2-n-l之间的数整除j+;)Iif(j>=D假设j大于2,那么说明能被2n-l之间的数整除,返回0;否那么返回1return0;IelsereturnI;I)子函数完毕任务2:用数学的方法可以证明,不能被2而(取整)之间的数整除的数,一定不能被1和它本身之外的其他任何整数整除。根据素数的这个性质,通过修改素数判断函数ISPrime()的具体实现,编程完成任务Io#include<stdio.h>#include<stdlib.h>#include<math.h>因调用Sqrto函数,故需此预处理命令intIsPrime(intn);判断是否是素数的函数原型intmain()(intm;printf("Pleaseenterainteger:");scanf("%d",&m);用户输入欲判断的数if(IsPrime(m)=1)调用判断是否是素数的函数并输出结果printf(,'%disaprimenumbern",m);Ielseprintf("%disnotaprimenumbern,",m);Ireturn0;/返回0主函数完毕intIsPrime(intn)/判断是否是素数的函数(inti;intj=0;if(n<2)假设n小于2,返回。值return0;Ifor(i=2;i<=sqrt(n);i+)if(n%i=0)利用试商法判断是否能被2n的开方(取整)之间的数整除j+;IIif(j>=D假设j大于2,那么说明能被2n-l之间的数整除,返回0;否那么返回1return0;IelsereturnI;I)子函数完毕任务3:从键盘任意输入一个整数n,编程计算并输出ln之间的所有素数之和。#include<stdio.h>#include<stdlib.h>#include<math.h>/因调用sqrt()函数,故需此预处理命令intIsPrime(intm);判断是否是素数并求和的函数原型intmain()(intn;printf(,PIeaseenterainteger:");scanf(,%d",&n);/用户输入欲判断的数打印输出ln之间的所有素数之和printf("Thesumofalltheprimesbetween1andthenumberyouenteris:%dn",IsPrime(n);return0;返回0)主函数完毕intIsPrime(intm)判断是否是素数的函数(inti;intj;intsum=0;for(i=2;i<=m;i+)intk=0;for(j=2J<=Sqrt;j+)if(i%j=O)利用试商法判断是否能被2n的开方(取整)之间的数整除k+;if(k=0)如果k等于0,说明i是素数,求和sum=sum+i;)Ireturnsum;返回素数之和)子函数完毕任务4:从键盘任意输入一个整数m,假设m不是素数,那么计算并输出其所有的因子(不包括1),例如对于16,输出2,4,8;否那么输出"Nodivisor!Itisaprimenumber"。#include<stdio.h>#include<stdlib.h>#include<math.h>因调用sqrt()函数,故需此预处理命令intIsPrime(intn);判断是否是素数的函数原型intmain()(intm;inti;printf("Pleaseenterainteger:");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("Nodivisor!Itisaprimenumbern");)returnO;返回O主函数完毕intIsPrime(intn)判断是否是素数的函数(inti;intj=0;for(i=2;i<=sqrt(n);i+)if(n%i=O)利用试商法判断是否能被2n的开方(取整)之间的数整除j;)Iif(j>=D假设j大于2,那么说明能被2n-l之间的数整除,返回1;否那么返回0return1;elsereturnO;)子函数完毕任务5:如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数(PerfeetNUmber)。例如,6就是一个完全数,是因为6=1+2+3。请编写一个判断完全数的函数IsPerfectO,然后判断从键盘输入的整数是否是完全数。#include<stdio.h>#include<stdlib.h>intIsPerfect(intn);判断输入的整数是否是完全数的函数原型intmain()Iintm;printf(',Pleaseenterainteger:*');scanf(,%d",&m);用户输入欲判断的数if(IsPerfect(m)=1)调用判断是否是素数的函数,假设是,打印语句printf("ThenumberyouenterisaPerfectNumber!n");Iif(IsPerfect(m)=0)/调用判断是否是素数的函数,假设不是,打印语句printf(,'ThenumberyouenterisnotaPerfectNumber!n");Ireturn0;返回0主函数完毕intIsPerfect(intn)判断输入的整数是否是完全数的函数(inti;intSUm=0;for(i=1;i<n;i+)if(n%i=0)判断是否是因子sum=sum+i;求因子之和if(sum=n)判断输入的整数是否是完全数returnI;Ielsereturn0;子函数完毕任务6:从键盘任意输入一个整数m,假设m不是素数,那么对m进展质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否那么输出"Itisaprimenumbern"。例如,用户输入90时,程序输出90=2*3*3*5;用户输入91时,程序输出"Itisaprimenumbern"0#include<stdio.h>#include<stdlib.h>#include<math.h>因调用SqrtO函数,故需此预处理命令intIsPrimel(intx);判断是否是素数的函数原型intIsPrime2(inty);判断是否是素数的函数原型intmain()Iintm;inta=1;a表示质因数之积intb;/Zb表示m与其因数之商printf("Pleaseenterainteger:");scanf("%d",&m);用户输入欲判断的数if(IsPrimel(m)=l)调用判断是否是素数的函数,假设是,打印语句printf("Itisaprimenumber!n");I调用判断是否是素数的函数,假设不是将m表示为质因数从小到大顺序排列的乘积形式输出if(IsPrimel(m)=0)printf("%dm);while(a!=m)判断所有因子之积是否等于m,不等继续运行b=m/a;printf(,'%d”,IsPrime2(b);打印因子a=IsPrime2(b)*a;/m的因子之积if(aI=m)printf("*');打印乘号return0;)intIsPrimel(intx)判断是否是素数的函数Iinti;intj=0;for(i=1;i<=sqrt(x);i+)if(x%i=0)利用试商法判断是否能被2n的开方1取整)之间的数整除j+;if(j<=1)假设j小于2,那么说明能被2n的开方(取整)之间的数整除,返回1;否那么返回0returnI;Ielsereturn0;子函数完毕intIsPrime2(inty)判断是否是素数的函数inti;intj;for(i=2;i<=y;i+)找出2y之间的素数intk=0;for(j=2J<=sqrt(i);j+)if(i%j=O)(利用试商法判断是否能被2i的开方(取整)之间的数整除k+;if(k=0&&y%i=0)returni;任务7:验证:2000以内的正偶数都能够分解为两个素数之和即验证哥德巴赫猜想对2000以内的正偶数成立),正奇数都能够分解为三个素数之和。注意最后要将结果上传之前,请将2000改为500再运行,并注意输出格式,每行5个等式,如:10=3+7;12=5+7;。#include<stdio.h>#include<stdlib.h>#include <math.h> int IsPrimel(int x); int IsPrime2(int y); int main()/因调用Sqrto函数,故需此预处理命令输出正偶数分解为两个素数之和的函数原型输出正奇数分解为三个素数之和的函数原型intm;定义整型变量,为偶数intn;定义整型变量,为奇数Prindr正偶数等于两素数之和:n");for(m=2;m<=100;m+=2)输出正偶数分解为两个素数之和IsPrimel(m);)Printf("n正奇数等于三素数之和:n");for(n=5;n<=100;n+=2)输出正奇数分解为三个素数之和IsPrime2(n);return0;返回0主函数完毕intIsPrimeKintx)输出正偶数分解为两个素数之和的函数(inti;/i表示素数intj;j用于判断i是否是素数inta;表示素数intb;b用于判断a是否是素数if(x%5=4)printf("n,);for(i=2;i<=x;i+)判断i是2y之间的素数intkl=0;for(j=2;j<=Sqrt;j+)if(i%j=0)kl+;)Iif(kl=0)for(b=2;b<=x;b+)判断b是2y之间的素数intk2=0;for(a=2;a<=sqrt(b);a+)(if(b%a=0)k2+;if(k2=0)if(i+b=x)如果i、b都是素数,求和判断是否等于X,假设等打印Prindv%d=%d+%d;”,x,i,b);)if(i+b=x)return0;)/if完毕/for循环完毕)if完毕foi循环完毕return0;返回0)主函数完毕intIsPrime2(inty)输出正奇数分解为三个素数之和的函数(inti;/i表示素数intj;j用于判断i是否是素数inta;表示素数intb;b用于判断a是否是素数intg;g表示素数inth;卜用于判断g是否是素数if(y%5=2)printf(,n);Ifor(i=2;i<=y;i+)判断i是2y之间的素数intkl=0;for(j=2J<=sqrt(i)J+)if(i%j=0)(kl+;if(kl=0)for(b=2;b<=y;b+)判断b是2y之间的素数intk2=0;ir(a=2;a<=sqrt(b);a+)(if(b%a=0)k2+;if(k2=0)for(g=2;g<=y;g+)判断g是2y之间的素数intk3=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)用于终止循环return0;)if完毕)/for循环完毕)if完毕/for循环完毕)/if完毕)for循环完毕return0;子函数完毕

    注意事项

    本文(C语言实验二报告.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开