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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(华中科技大学C语言实验与课程设计上机实验报告汇总(1-8全部).docx)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

华中科技大学C语言实验与课程设计上机实验报告汇总(1-8全部).docx

1、华中科技大学 C语言实验与课程设计 实验报告 电脑科学与技术学院 指导老师: Input the IP in unsigned long int form: i76879571 3rocess returned 0 <0x0> execution tine : 24.738 s 5ress any key to continue. 1.3实验体会 在做改错题时,先浏览一遍,找出明显的错误,然后将初步修改后的代码输 入编译器并编译,再根据编译器的警告与错误提示修改程序至完全正确,这个过 程很需要细心和耐心,这个过程能够很好的帮助我再今后不犯类似错误。 源程序修改与替换题锻

2、炼我们举-•反三的能力,我们在平时写程序时就应该 思考对于一个问题有没有多钟解决方案,不使用中间变量交换两个整数是很常见 的问题,我利用一个数异或自身等于0, 0异或任意位保存原位的原理来交换。 程序设计题提高了我们对所学知识的熟练度和理解程度,只有实践才能学会 C语言,在亲手编写代码的过程中发现问题,理解概念。 2流程控制实验 2.1实验目的 (1) 掌握复合语句、if语句>switch语句的使用,熟练掌握for^while> do-while 三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。 (2) 熟练运用for、while、do-while语句来编写程

3、序。 (3) 练习转移语句和标号语句的使用。 (4) 使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。 2. 2实验内容及要求2.2.1.源程序改错 下面是计算s=n!的源程序,在这个源程序中存在假设干语法和逻辑错 误。要求在电脑上对这个例子源程序进行调试修改,使之能够正确完成指 定任务,例如,8!=40320o 程序代码: #include int mainfl (int Ln,s=l; printff'Please enter n:"];scanf("%d",n); for(i=l;i<=n;i++) s=s*i; printf("%d!=

4、d",n,s);return 0; } 【分析及改正】本程序共存在3处错误,分析如下: ⑴ int s=1; 错误原因:在计算阶乘的时候,由于阶乘值会上升很快,所以不建议 使用int类型,可以改为long或者double型。 改正:改为long型变量。 (2) scanf("%d”,n); 错误原因:scant函数获取输入值时,引用的是一个变量地址,而不 是变量本身。 改正:scanf("%d”,&n); (3) } return 0; 错误员因:return返回值应该在main函数内部 改正:return 0;}2. 2.2源程序修改替换 (1) 修改上述计算s=n

5、的源程序,要求分别用while和do-while语句替换for 语句。 (2) 修改上述计算s=n!的源程序,要求输入改为“整数S”,输出改为“满 足n!>=s的最小整数n” 。例如,输入整数40310,输出结果为n=8. 【分析】(1)相同循环内容利用不同循环结构实现,需要注意不同语句的 格式及根据循环方式对循环体做些许变动。流程图如下: while 型 do-while 型 开始 输入n 计数变量i=l 累兼变量s=l 当(while) i<=n时 执行循环体 s=s*l i++ 输出s 结束 开始 输入n (2)同样计算n!并将n!赋值给不是s的值〔比方说m

6、),然后令m和sYl Yl 输出s U 结束 比拟大小,找到符合条件的第一个m值,并返回n值。流程图如下: 【程序】(1) while型 #include int mainQ ( int i=l,n,s=l; printff'Please enter n:"); scanf("%d",&n); while(i<=n){ s=s*i; i++;} printf(H%d!=%d",n,s); return 0; } do-while 型 #include int main() ( int i=l,n,s=l; p

7、rintff'Please enter n:"); scanf("%d",&n); do(s=s*i; i++; ) while(i<=n); printf("%d!=%d",n,s); return 0; } (2) #include int mainQ ( int tn=0,s,m=l; printff'Please enter s:"); scanf("%d",&s); for(i=l;;i++){n++; if(m> = s){ printf("n=%d",n); break;return 0; 【测试】〔1)如果输入8,应该输出:40320

8、程序运行结果如下, 程序正确。 Please enter n:88?=40320 Process returned 0 <0x0> execution tine : 4.985 s Press any key to continue. ⑵ 如果输入40310,应该输出:8,程序运行结果如下,程序正确。 Please enter s:40310n=8 Process returned 0 <0x0> execut ion t ine : 4.938 s Press any key to continue. 2. 2. 3程序设计 编写并上机调试运行能实现以下功能的程序: (1)

9、 假设工资税金按以下方法计算:x<1000元,不收取税金;1000<=x<2000, 收取5%的 税金;2000<=x<3000,收取10%的税金;3000<=x<4000,收取15%的税 金;4000<=x<5000,收取20%税金;x>5000,收取25%的税金。编写一个程序, 输入工资金额,输出应收取税金额度,要求分别用if语句呵switch语句来实现。 (2) 编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以 上的空格字符用一个空格代替。 (3) 编写一个程序,打印如下的杨辉三角形。 1 1 1 1 2 1

10、 1 3 3 1 1 4 6 4 1 1 5 10 10 51 1 6 15 20 15 6 1 1 7 21 35 35 217 1 1 8 28 56 70 56 28 8 1 19 36 84 126 126 8436 91 (4) 编写一个程序,将用户输入的任意正整数逆转。例如,输入1234,输 出 4321o 【分析】 (1)数学中的分段函数问题,可以用if-

11、else-if结构进行控制。在应用 switch语句的时候,结合分段区间的特点设置合适的间断点。流程图分别 如下: if型开始 (2)使用状态机通过判断空格的个数选择不同状态,从而实现消去空格的作用。 流程图如下: (3)根据所给公式利用循环实现杨辉三角数的计算,注意题目中特别提到 的输出格式,将每个数字设置为四个字符位,并循环输出空格符,实现金字塔效 果。 (4〕屡次除10取余,每次都分别输出余数,然后除以10并赋给原数重复 计算,流程图如下: 【程序】 ⑴if型 #include float taxffloat x); int mainQ (

12、float x; printff'Please input your salary:"]; scanf("%f",&x);printff'You should pay %fyuan.\n",tax(abs(x))); return 0; ) float taxffloat x)(float n; if(x<1000)(n=0;}else if(x<2000)(n=0.05;} else if(x<3000)(n=0.1;)else if(x<4000)(n=0.15;) else if(x<5000)(n=0.2;)else{n=0.25;} return n*x; ) swi

13、tch 型 #include float taxffloat x); int mainfl ( float x; printff'Please input your salary:"); scanf("%F',&x); printff'You should pay %fyuan.\n",tax(abs(x))); return 0; } float taxffloat x)(float n; switch([int](x/1000))(case 0:n=0;break; case l:n=0.05;break;case 2:n=0.1;break;

14、case 3:n=0.15;break;case 4:n=0.2;break; default:n=0.25;} return n*x; ) (2) #include enum {COPY,START,SPACE}; int mainQ ( char c; int state=COPY; printff'Please input a char:\n"); while((c=getcharO)!='\n'){ switch (state) ( case COPY: if(c==, ')state=START;else putchar(c); break;

15、 case START: putchar('');if(c==r ')state二SPACE; else(state=COPY;putchar(c);} break; case SPACE: if(c= '){ state=COPY; putchar(c); }else state=SPACE; break; )) return 0; } (3) #include #define n 10 int main(void) (int i,j,k,c,m; for(i=0;i

16、 ");} forQ=0;j<=i;j++)( if(j==O)c=l; else c=c*(i+l-j)/j; printf("%4d",c);} printf(”\n”);) return 0; ) (4) #include int mainQ (long n,m; printff'PIease input an integer n(n>0):"); scanf(”%ld”,&n);printf("\nThe new integer is:"); while(n>=10){ m=n%10; printf("%ld",m); n/=10;} pri

17、ntf(”%ld”,n);return 0; ) 【测试】Please input your salary:6000 You should pay 1500.000000 yuan. Process returned 0 <0x0> execution tine : 10.547 s Press any key to continue. Please input a char: huj iJ laj if 1 huji jlajif 1 da Process returned Press any key to (2)da a fdjjfaos;ah af a a a fdj J

18、faos; ah af a a k0 <0x0> execution tine : 28.345 s continue. 1 1 1 1 2 1 13 3 1 14 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 : 28 56 70 ! 56 : 28 8 1 19 36 84 126 126 84 36 91 P

19、rocess returned 0 <0x0> execution tine : 0.203 s Press any key to continue. Please input an integer n0>:123456The new integer is:654321 Process returned 0 <0x0> execution tine : 6.109 s Press any key to continue. 2. 3实验体会 源程序改错中,依赖于平时良好的输入习惯,在输入过程中己经可以检查出 大多数语法错误,或者拼写错误。接下来再检查一下逻辑是否有误,无误那么进行

20、多组数据的编译检验,确认最终无误。 源程序修改与替换题锻炼我们举一反三触类旁通的能力,在平时写程序时就 应该思考对于一个问题有没有多钟解决方案,使用不同的逻辑结构多种尝试寻求 最优解。 程序设计题那么是自主的设计实践,在练习中获得进一步提升,增强对于所学 知识的熟练度和理解程度,锻炼能力。 目录1表达式和标准输入输出实验 3 2流程控制实验113函数程序与结构实验20 4编译预处理实验285数组实验35 6指针实验427结构与联合实验52 8文件实验61 3函数与程序结构实验 2.1实验目的 (1) 熟悉和掌握函数的定义、声明,函数调用与参数传递方法,以及函数 返回值类型的

21、定义和返回值使用。 (2) 熟悉和掌握不同存储类型变量的使用。 (3) 熟悉多文件编译技术。 (4) 使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。 2. 2实验内容及要求2.2.1.源程序改错 下面是计算s = 1 !+2!+3!+・・・+n!的源程序,在这个源程序中存在假设干 语法和逻辑错误。要求在电脑上对这个例子源程序进行调试修改,使之能 够正确完成指定任务。 程序代码: #include int main(void) {int k; for(k=1 ;kv6;k++)printf("k=%d\tthe sum is %ld\n", k

22、 sum_fac(k)); )return 0; longsum_fac(int n) {long s = 0; inti;long fac; for(i=1; i<=n; i++) fac *= i; s += fac; return s; ) 【分析及改正】本程序共存在3处错误,分析如下: (1) } return 0; 错误脉因:return返[^值应该在main函数内部 改正:return 0;} ⑵ long fac; 错误原因:fac未赋予初始值,会导致接下来计算错误。 改正:long fac=1; 〔3) s += fac; 错误原因:语句s+=

23、fac;不在函数for内部,逻辑出错。 改正:for(i=1;iv=n;i++){fac*=i; s+=fac; )源程序修改替换 (1)修改上术源程序中的sumjac函数,使其计算量最小。 〔2)修改上述源程序中的sumjac函数,计算s =1+1/(21)+1/(3!)+……+1/(n!) 【分析】(1)利用static变量类型对循环进行化简,保存上一个值,防止屡次重复循环。流程图如下: (2) 相比拟于源程序,变动之处在于求的是阶乘的倒数和,那么在循环中多 步求倒数的过程,并对倒数求和。流程图如下: 开始k=l,s=O,fac=lJ=l 【程序】〔1) #inclu

24、de long sum_fac(); int main() (int k;for(k=l;k<6;k++) printf("k=%d\tthe sum is %ld\n",k,sum_fac(k)); return 0; } static long s=O,fac=l; long sum_fac(int n) (fac*=n; s+=fac;return s; } ⑵ #include float sum_facQ; int main。 (int k; for(k=l;k<6;k++) printf("k=%d\tthe su

25、m is %f\n",k,sum_fac(k));return 0; ) float sum_fac(int n) (long fac=l; inti;float x,s=0; for(i=l;i<=n;i++){ fac*=i;x=1.0/fac; s+=x;) return s; } C=1 the sun is 1 c=2 the sun is 3 c=3 the sun is 9 c=4 the sun is 33 c=5 the sun is 153 ^'□cess returned 0 <0x0> 【测试】

26、〔1)程序运行结果如下,程序正确。 execution tine : 0.151 s Tess any key to continue. (2)程序运行结果如下,程序正确。 =1 the sun is 1.000000 =2 the sun is 1.500000 =3 the sun is 1.666667 =4 the sun is 1.708333 =5 the sun is 1,716667 rocess returned 0 <0X0>\ ress any key to continue. execution t

27、ine : 0.441 s 2. 2. 3跟踪调试 下面是计算fabonacci数列前n项和的源程序,现要求单步执行该程序,并 观察p, i, sum, n的值,即: (1) 刚执行完“scanf(”%d”,&k);”语句时,p,i值是多少? Function a Locals j 57 k 2 sum 0 P 0x28ff00 n Not available (2) 从fabonacci函数返回后,光条停留在哪个语句上? 11 > sum+=fabonacci(i); (3)进入fabonacci函数时,watches窗口显示

28、的是什么? n=l到n不存在;n=l到n=2到n不存在;n=l到n=2到n=3到n不存在。 【源程序】 #include long fabonacci(int); int mainQint i,k; long sum=0,*p=∑scanf("%d”,&k); for(i=l;i<=k;i++)( sum+=fabonacci(i); printf("i=%d\tthe sum is %ld\n",i,*p);) return 0; ) long fabonacci(int n){if(n==l||n==2)return 1; else r

29、eturn fabonacci(n-l)+fabonacci(n-2); }2. 2.4程序设计 编写并上机调试运行能实现以下功能的程序: (1) 编写一个程序,让用户输入两个整数,计算两个数的最大公约数并且 输出之。要求用递归函数实现求最大公约数,同时以单步方式执行该程序,观察 其递归过程。 (2) 编写一个程序,验证哥德巴赫猜测:一个大于等于4的偶数都是两 个素数之和。 、(3)编写一个程序,证明对于在符号常量BEGIN和END之间的偶数这 一猜测成立。如,如果BEGIN为10, END为20,那么程序的输出应为: GOLDBACH' SCONJECTURE: Every e

30、ven number n>=4 is the sum of two primes. 10=3+7 12=5+7 20=3+17 【分析】 (1)用辗转相除法求最大公约数,程序框图如下: 开始 取两个数中的较大 数除以较小数得到假设余数不为零,去余数 和被除数,重复上一步 操作 余数为零后,取被 除数,即为最大公 约数结束 (2) 首先判断一定范围内的素数〔比方100以内),然后判断一个偶数能 否表示为两个素数之和。程序框图如下: 判断素数W (3) 和第二题类似,只不过加上一个范围控制,设置循环处于最大值和最 小值之间。程序框图如下: 【程序】⑴ #inclu

31、de int GCD(int m,int n); int mainQ (int m,n,r; printff'Please input two integers:、、'); scanf("%d%d",&m,&n);printff'The greatest common divisor is %d",GCD(m,n)); return 0; }int GCD(m,n)( if(m%n==O&&m>=n)return n; else if(m%n==O&&m

32、n); ) ) ⑵ #include #define N 100 static int a[N]; int primeQ; int mainQ (int x,i; printff'Please input an even x(x>=4):\n");scanf("%d",&x); if(x%2!=0||x<4)printf(,,ERROR!");prime。; for(i=2;i<=N&&i

33、primeQ(int i,j; for(a[0]=a[l]=0,i=2;i #define N100 #define BEGIN 10 #define END 20 static int a[N]; int prime(); int main() (int x,i,j; printff'GOLDBACH'S CONJECTURE:\nEvery even nu

34、mber n>=4 is the sum of two prime.\n");primeQ; for(i=BEGIN;i<=END;i++)(for(j=2;jvi/2;j++){ if(a[j]) if(a[i-j]){printf("%d=%d+%d\n”,i,j,i-j);}} )return 0; ) int primeQ( int i,j; for(a[0]=a[l]=0J=2;i

35、输入24和16求最大公约数,最大公约数为8,结果正确: Please input two integers: 2416 The greatest common diuisor is 8 (2)验证哥德巴赫猜测,输入98,返回素数和,结果正确: Please input an euen x=4>: 9898=19+79 98=31+6798=37+61 (3) 验证一定范围内的哥德巴赫猜测,输入14,返回素数和,结果正确: Please input an euen x=4>: 1414=3+11 2. 3实验体会 源程序改错中,依赖于平时良好的输入习惯,在输入过

36、程中己经可以检查出 大多数语法错误,或者拼写错误。接下来再检查一下逻辑是否有误,无误那么进行 多组数据的编译检验,确认最终无误。 源程序修改与替换题锻炼我们优化算法的能力,在平时写程序时就应该思考 对于一个问题有没有最优解决方案,使用不同的语句在空间和时间中寻求平衡点, 尽可能的控制好占用的时间空间范围。 程序设计题那么是自主的设计实践,在练习中获得进一步提升,增强对于所学 知识的熟练度和理解程度,锻炼编写代码的能力以及并通过问题的进一步引申锻 炼思维的灵活性。 4编译预处理实验 4.1实验目的 (1) 掌握文件包含、宏定义、条件编译、assert宏的使用 (2〕练习带参数的宏定义

37、条件编译的使用。 (3) 练习assert宏的使用。 (4) 使用集成开发环境中的调试功能:单步执行,设置断点,观察变量值。 4. 2实验内容及要求2.1.源程序改错 下面是用宏来计算平方差和交换两数的源程序。在这个源程序中,存 在假设干语法和逻辑错误,要求在电脑上对这个源程序进行调试修改,使 之能够正确完成计算平方差和交换两数的任务。 程序代码: #include #define SUM a+b #define DIF a-b #define SWAP(a,b) a=b,b=a int main(void) (int b, t; printff'I

38、nput two integers a,b:");scanf("%d, %d”,&a, &b); printf(H\nSUM=%d\n the difference between square of a and square of b is:%d”,SUM,SUM*DIF); SWAP(a,b); printf("\nNow a=%d, b=%d\n'\ a, b); return 0; } 【分析及改正】本程序共存在3处错误,分析如下: 〔1) #define SUM a+b #define DIF a-b 错误原因:在宏定义中,在引用时直接将表达式带入之后的表达式应 用,由

39、于不了解在之后的应用中采用的运算符,所以优先级无法确定,因 此需要在宏定义中对变量即表达式中加上括号。 改正:#define SUM ((a)+(b))#define DIF ((a)-(b)) (2) #define SWAP(a,b) a=b,b=a 错误原因:带参数的宏定义逻辑错误,无法有效实现两个数的交换。 改正:#define SWAP(a,b,t) t=b,b=a,a=t (3) intb,t; 错误原因:未完整声明所有参数,导致局部参数不识别。 改正:inta,b,t; (4) scanf("%d, %d", &a, &b); 错误原因:scanf函数中类型声明

40、中,两个%(1符号中间不加符号。 改正:scanf("%d%d", &a, &b); (5) SWAP(a,b); 错误原因:与宏定义相对应的更改为三个参数。 改正:SWAP(a,b,t);源程序修改替换 下面是用函数实现求三个数中最大数、计算两数之和的源程序。在这个源程 序中存在假设干语法和逻辑错误,要求: (1) 对这个例子源程序进行调试修改,使之能够正确完成指定任务。 (2) 用带参数的宏替换函数max,实现求最大数的功能。 程序代码: void main(void) (int a, b, c; float d, e;printf("Enter three integ

41、ers:"); scanf("%d, %d, %d”, &a, &b, &c);printf("\nthe maximum of them is %d\n", max(a,b,c)); printf("Enter two floating point numbers:"); scanf("%f, %f, &d, &e);printf("\nthe sum of them is%f\n",sum(d,e)); return 0; } int max(int x, int y, int z) (int t; if (x > y) t = x;else t = y; if (t < z

42、) t = z;return t; } float sum(float x, float y) (return x + y; } 【分析】(1)修改如第一题,出现的问题有:scanf函数的参数变量类型间 的格式问题与函数声明问题。 (2)将函数max用带参数的宏定义表示,利用语句“?: ”表示if选择语 句。 【程序】〔1〕 #include int max(int x,int yjnt z);1表达式和标准输入与输出实验 1.1实验目的 (1) 熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类 型及运算过程中的类型转换,重点是C语言特有的运算

43、符,例如位运算符, 问号运算符,逗号运算符等;熟记运算符的优先级和结合性。 〔2)掌握scanf和printf函数的用法。 〔3)掌握简单C程序〔顺序结构程序)的编写方法。 1.2实验内容及结果1.2.1,源程序改错 下面给出了一个简单C语言程序例程,用来完成以下工作: 〔1)输入华氏温度匚 将它转换成摄氏温度C后输出; 〔2)输入圆的半径值r,计算并输出圆的面积s; 〔3)输入短整数k、P,将k的高字节作为结果的低字节,p的高 字节作为结果的高字节,拼成一个新的整数,然后输出; 在这个例子程序中存在假设干语法和逻辑错误。要求参照和 2. 1.4的步骤对下面程序进行调试修改,使

44、之能够正确完成指定任务。 程序代码: #include #define PI 3.14159; voidmain( void) (int f; short p, k;double c, r, s ; /* for task 1 */printfflnput Fahrenheit:"); scanf("%d",f);c = 5/9*(f-32); printff" \n %d (F) = %.2f (C)\n\n ”, f, c);/* for task 2 */ printff'input the radius r:"); scanf(n%f\ &r);s

45、 = PI * r * r; printf("\nThe acreage is %.2f\n\n",&s);/* for task 3 */ printff'input hex int k, p :"); float sum(float x,float y); int mainQint a,b,c; float d,e;printfC'Enter three integers:\n"); scanf("%d%d%d”,&a,&b,&c); printf("\nthe maximum of them is %d\n”,max(a,b,c)); printf("Enter two floa

46、t point numbers:\n"); scanf(”%f%F',&d,&e);printf("\nthe sum of them is %f\n",sum(d,e)); return 0; } int max(int x,int y,int z) {int t; if(x>y)t=x;else t=y; if(tvz)t=z;return t; } float sum(float x,float y) (return x+y; ) ⑵ #include #define max(x,y,z) (((x)>(y)?(x):(y))>(z))?((x

47、)>(y)?(x):(y)):(z) float sum(float x,float y); int main() {int a,b,c; float d,e;printff'Enter three integers:\n"); scanf("%d%d%d”,&a,&b,&c); printf("\nthe maximum of them is %d\n”,max(a,b,c)); printf("Enter two float point numbers:\nH); scanf("%f%F',&d,&e);printf("\nthe sum of them is %f\n",sum(

48、d,e)); return 0; } float sumffloat x,float y) (return x+y; ) 【测试】〔1)程序运行结果如下,程序正确。 inter three integers: the maximum of then is 9 Enter two float point numbers: :he sum of them is 9.000000 (2) 程序运行结果如下,程序正确。 Enter three integers: the maximum of them is 4 Enter two float point numbers: he su

49、n of then is 14.0000004. 2. 3跟踪调试 下面程序的功能是利用R计算圆的面积s,以及面积s的整数局部。现要 求: (1) 修改程序,使程序编译通过且能运行。修改过的源程序见下面局部。 (2) 单步执行。进入函数integerjraction时,watches窗口中为何值? 在返回main时,watch窗口中i为何值?如图: WatchesXX 〔3)排除错误,使程序能正确输出面积S值的整数局部,不会输出错误信 息 assertion failed o 题目程序代码: #define R int main(void) ( float r, s;

50、 int sjnteger = 0; printff'input a number:"); scanf("%f\ &r); #ifdef Rs = 3.14159 *r*r; printf("area of round is:%f\n", s); sjnteger = integer_fraction(s); printff'the integer fraction of area is %d\n", sjnteger); assert((s-s_integer) < 1.0);#endif return 0; ) int integer_fraction(float x) (i

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服