




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言编程基础(第2版)上机实习解答前 言C语言编程基础(第2版)在各章后面都安排了上机实习指导和上机实习,这是该书编写的一大特色。上机实习指导给出了该章的学习目标和应注意的问题,这两部分都非常重要,前者告诉读者应该掌握的知识重点,后者告诉读者最容易忽略、混淆、搞错的概念和问题。而上机实习的内容又很好地配合了对这些知识的掌握和理解,并通过实践、操作、练习,能很好地锻炼编程技巧和能力。为了帮助老师教学、方便学生做好实习准备,特别是帮助不具备上机条件的学生了解上机结果,我们给出本上机实习解答。重点是给出一些程序的运行结果、需要完善的程序语句、及要求编写的程序答案。如有错误或不当之处请批评指正。第1章 C语言概述上机实习 Turbo C系统的基本操作方法二、上机内容2、 运行结果如下:sum=3 删除变量定义语句或将其注释起来后,再运行会出现错误提示: “ Error Undefined symbol a in function main. ”等信息。告知a、b、sum在函数中未定义3、运行该程序,输入任意两个整数,会输出其中的最大值。第2章 数据类型和简单程序设计上机实习 基本数据类型的简单程序设计二、上机内容1、语法错误的检查与修改。错误:y未定义。修改:int x1,x2,y;运行结果:y=50错误:inta 缺少空格。修改:int a,b,c;运行结果:c=5000错误:ch=A 字符变量赋值错误。修改:ch=A运行结果:A错误:m#1 #不能为变量名。修改:float m1;m1=2.36;printf(“%f”,m1/2);运行结果:1.1800002、分析程序运行结果。 该题是已知半径而求圆的面积,输出半径和面积值。运行结果为: r=2s=12.566360 该题是求字母a和b的ASCII码值。运行结果为: 字母a的ASCII码为:97 字母b的ASCII码为:98 运行结果: (笑脸) (梅花)3、设计编写一个简单程序。main()printf(“平均成绩:%dn”,(100+80+75)/3);该程序运行结果为:平均成绩:85第3章 表达式与运算符上机实习 运算符及表达式应用二、上机内容1、指出下面程序中的错误,并改正。错误:C未定义且该定义语句不正确;若定义时给a、b、c三个变量都初始赋值了,可删掉“scanf(“%d,%d,%d”,a,b,c);”程序行;若定义变量时不进行初始化,该接收变量值的语句有错。修改:int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);运行结果:1,2,3A=1,b=2,c=62、运行下列程序,观察并分析运行结果。 运行结果:(a+b)/(a-b)=-5a+b/a-b=-9分析:该题说明在表达式中,分数线上下使用括号与否计算结果完全不同,应注意使用括号。 运行结果:100/200=0100/200.0=0.500000分析:该题说明整除运算结果只保留整数部分,实数运算的结果保留小数。 运行结果:(i+)+j=300i+(+j)=301i+j)=300分析:自增自减运算符的前置运算与后置运算不同,并注意运算符的结合性。 运行结果:i=101j=101k=101分析:使原数加1的三种不同运算方法。 书中例3.7程序调试运行结果如下:char=1char(ch)=1int=2int(x)=2float=4float(y)=43、完善程序 #include y=pow(x,5)+POW(10,5);.b=xy?x:y;.第4章 数据的输入与输出上机实习一 字符的输入输出二、上机内容1、运行下列程序,注意观察运行结果。 运行结果: a(输入数据)c1=a ab(输入数据)c1=a abc(输入数据)c1=agetchar()只接收一个字符,且等待回车后向下运行,因此c1输出结果相同。 运行结果:请输入一个字母:b(输入数据)b的前一个字母是a,后一个字母是c(输出结果)变化:更换“getch ()”命令不显示输入内容,不等待回车便向下执行,输出结果相同。2、完善程序ch1=getchar();ch2=ch1-32;(ch1=a&ch1=z)?putchar(ch2):printf(“输入出错!”);上机实习二 格式输入输出函数的使用二、上机内容1、运行下列程序,注意观察运行结果。 运行结果: 10 25 4.72(输入数据及格式)a=10b=25c=4.720000 10(输入数据及格式) 20 4.72a=10b=25c=4.720000 10,25,4.72(输入数据及格式)a=10b=-20c=324这种输入格式不对,scanf语句中格式转换符之间没有非格式字符,输入逗号以后不能给后面的变量正确赋值。 运行结果:113,3270;x(输入数据及格式)a=113b=3270c=x 运行结果:p=3.14p=3.1416p= 3.14p= 3.1416p=-10.2fp=-10.4f分析:在%后面加上负号后,改变了格式控制符的作用,将-10.2f与-10.4f作为非格式符输出。在语句“clrscr();”的后面加上语句“printf(“nnn”);”再运行程序,在输出结果上面空出三个空行。2、完善程序: scanf(“%d”,&cost);printf(“输入折扣率”);scanf(“%f”,&percent);printf(“实际售价为%f”,c);3、编写程序。main() float kilometer,metre,mile; printf(“请输入公里数:”); scanf(“%f”,&kilometre);metre=kilometre*1000;mile=kilometre*2;printf(“%.1f 公里=%.2f里=%.2f米”,kilometre,mile,metre); 第5章 控制结构程序设计上机实习一 关系表达式和逻辑表达式二、上机内容1、运行下列程序,分析并观察运行结果。 运行结果:a=1, b=2, c=3ab 的值为:1ab 的值为:1 运行结果:x=3,y=4,z=5xy&xz的值为:1xz的值为:0xz的值为:1!x的值为:0!(xy)的值为:1(xy|xz)&yz的值为:0 运行结果:x=202x10 的值为:12x&x10的值为:02、完善程序b=(year%4= =0 & year%100 != 0 ) | | ( year%400= = 0 );上机实习二 if语句二、上机内容1、运行下列程序,分析并观察运行结果。 运行结果(输入测试数据一)number=300300是10的倍数(输入测试数据二)number=27无输出 运行结果:(输入测试数据二)number=300300是10的倍数(输入测试数据二)number=2727不是10的倍数分析:上两题虽然测试数据相同,但判断语句完整性不同,输出结果便不同。 运行结果: number=8(输入测试数据8)8是正数。 number=0(输入测试数据0)0是零。 number=-8(输入测试数据-8)-8是负数。分析:该题输出所输入的数据是正数、零、还是负数。2、完善程序if(m= =1|m= =3|m= =5|m= =7|m= =8|m= =10|m= =12) days=30 printf(“%d月份有%d天。n”,m,days) 上机实习三 switch语句二、上机内容1、运行下列程序,分析并观察运行结果。 1(输入测试数据1)* 2(输入测试数据2)* 3(输入测试数据3)*分析:输入数值为1、2、3时输出如上结果,输入其它数时无输出。2、完善程序switch(grade)case 9:printf(“等级为A”);break;case 8:printf(“等级为B);break;case 7:printf(“等级为C);break;case 6:printf(“等级为D);break;default:printf(“等级为E”);3、编写程序#include main()float n,c,sq,sqr;int i;while(1)clrscr();printf(输入一个实数:);scanf(%f,&n);printf(1.输出相反数n2.输出平方数n3.输出平方根n4.退出n);scanf(%d,&i);switch(i)case 1:printf(相反数为:%fn,-n);break;case 2:printf(平方数为:%fn,n*n); break;case 3:printf(平方根为:%fn,sqrt(n); break;case 4:exit(0);default:printf(输入错误!n); 上机实习四 for语句二、上机内容1、运行程序,分析并观察运行结果。 运行结果:4 8 12 16 20分析:该题输出20以内能被4整除的数。 运行结果:*程序修改后运行结果:*2、完善程序。. for(j=0;j_4-i_;j+). for(j=0;j_i_;j+).3、编写程序。main()int grade,n1,n2,i=1;clrscr();n1=n2=0;printf(“输入学生成绩:n”);while(i=60) n1+;else n2+;i+;printf(“及格人数为:%dn不及格人数为:%d”,n1,n2);上机实习五 while语句和do-while语句二、上机内容1、运行下列程序,分析并观察运行结果。 原程序运行结果: sum=6 程序修改后运行结果:sum=0分析:因为循环条件为i=3,当i=1改成i=4后循环未执行,因此sum=0(初始值)。 原程序运行结果:sum=10 程序修改后运行结果:sum=4分析:do-while循环先做一次循环体后再判定条件,因此原程序可做到+1+2+3+4使sum=10,程序修改后,只做一次循环体+4使sum=4。2、完善程序。.n1=n2=_0_;.scanf(“%d”,&grade);while(grade!=-1).else n2+;.3、编写程序。按题目要求编写输出10行杨辉三角形的程序提供了两种方法,其中第二种方法更加简单和便于理解,但需要学习了第6、7章的知识后再用才更为合适。因此,本题也可以作为习题放在以后再做。 main() int l,c; long int v; clrscr(); for(l=1;l=10;l+) v=1; printf(%d,v); for(c=2;c=l;c+) v=v*(l-1)-(c-1)+1)/(c-1); if(v100) if(v10) printf(% ld ,v); else printf(% ld ,v); else printf(%ld ,v); printf(n); main() static int m,n,b1010;b01=1;clrscr();for(m=1;m=10;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn); printf(n); 第6章 数 组上机实习一 数值型数组二、上机内容1、上机调试下面的程序,修改其中存在的错误。 定义数组长度不能使用变量。因此,“int ab=1,2,3,4,5;”应为“ int a5=1,2,3,4,5;”。 定义一维数组时,若不是通过初始化将所有的元素赋值,其长度值不能省略。因此,“int a ;”不正确,按此题意应为:“int a11;”。另外,求和变量应给初值赋零,“int i,sum;”应为:“int i,sum=0;”。2、运行下列程序,分析并观察运行结果。 运行结果: 输入要查找的数:89(输入数据一)89在这组数中的第1个位置 输入要查找的数:120(输入数据二)120不在这组数中 输入要查找的数:94(输入数据三)94在这组数中的第7个位置分析:输入的数据在数组中有无,其输出结果能明确告知。3、完善程序 . scanf(%d,&numi); if(numi0 )count+; sum=sum+numi; . . For(i=0;inum;i+) for(j=0;j2;j+) scorei2+=scoreij; avi=scoreij/2; . printf(“%8d”,i+1); printf(“%10d”,scoreij);printf(“%10.1fn”,avi); 上机实习二 字符型数组二、上机内容1、上机调试下面的程序,修改其中存在的错误。 该程序语句“str=Hello;”不正确,可将前两句程序合并为:char str =Hello;运行结果:Hello 本程序比较两个输入的字符串是否相同,使用如下语句是不正确的。if (str1= =str2) printf(两个字符串相同);应改为: if (strcmp(str1,str2)=0) printf(两个字符串相同);运行结果: abcabc两个字符串相同 abcdef两个字符串不同 2、完善程序。 if (_!strcmp(password,str_) printf(_密码不正确_); for(i=0;inum;i+)for(j= i ;jnum;j+).scorei=scorej;scorej=t;strcpy(namei,namej);strcpy(namej,str);printf(“%8s%12s%8sn”,”名次”,”姓名”,”成绩”);printf(“%8d%12s%8dn”,i+1,namei,scorei);第7章 函 数上机实习一 函数的定义和调用二、上机内容1、上机调试下面的程序,修改其中存在的错误。 该程序有如下缺陷: 返回值类型不为int型时,应指出该函数的类型,并应在主函数中予以指明; 定义sum( )函数时,形式参数类型说明使用不正确; 返回值变量的类型要与函数类型相一致。程序修改如下:main() float a,b,s; float sum(); scanf(%f%f,&a,&b); s=sum(a,b); printf(sum=%f,s);float sum(float x, float y) float s; s=x+y; return s; 该程序有如下缺陷: 该程序所使用的函数体用大括号不匹配; 自定义函数的形式参数没说明类型,且不用应用空值类型说明; 主程序中是要接收打印星号的数量值,而不是输出n的值。程序修改如下:main() int n; scanf(%d,&n); printstar(n); printstar(n) int n; int i; for (i=1;i=n;i+) printf(*); 2、运行下列程序,分析并观察运行结果。 运行结果:10,35,-20(输入数据)35 (输出数据)分析:求三个输入数据的最大值 运行结果:a0=11 (输入数据)a1=22a0=22 (输出数据)a1=11分析:输入到两个数组元素内的数,经调用s函数后,将其值进行了交换。3、完善程序.scanf(%d,&ascii);put(ascii);int n;for(i=1;imaxi) maxi=xij;上机实习三 一个应用程序的设计二、上机内容题目要求编写应用程序的三个函数如下:1、减法练习函数 subt() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,-);scanf(“%d”,&answer);if(answer=num1-num2)puts(“正确”);elsevoice();printf(“错了!正确答案是:%dn”,num1-num2);printf(“n减法练习做完了,按任意键返回菜单.”);getch();2、乘法练习函数mult() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,*);scanf(“%d”,&answer);if(answer= =num1*num2)puts(“正确”);elsevoice();printf(“错了!正确答案是:%dn”,num1*num2);printf(“n乘法练习做完了,按任意键返回菜单.”);getch();3、除法练习函数divid() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,/);scanf(“%d”,&answer);if(answer=num1/num2)puts(“正确”);elsevoice();printf(“错了!正确答案是:%dn”,num1/num2);printf(“n除法练习做完了,按任意键返回菜单.”);getch();第8章 文 件上机实习一 文件的顺序读写二、上机内容1、建立和运行给定程序,分析并观察运行结果 该题目要求改正错误上机运行,请参看本资料包的习题解答部分。 该程序运行时,送入的文件名应该是题中创建和操作过的xt1.txt。2、完善程序。 . fp=fopen(filename,”w”); . fprintf(fp,”%s %d %d”,name,s1,s2); . fclose(fp); . . if(fp=fopen(filename.”r”)= =NULL); .fscanf(fp,”%s %d %d”,name,&s1,&s2):if(strcmp(name,stuname)= =0).3、从文件中读出例8.8写入的字符串,可以放在字符数组中,通过屏幕输出查验读出的内容,写出参考程序如下:#include FILE *fp;main( ) static char a32; fp=fopen(w88.txt,r); fgets(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权赋能新质生产力的作用
- 医患关系发展时间线
- 建设工程安全管理实务讲解
- 工信新质生产力
- 2025年呼吸内科常见呼吸系统疾病诊断试卷答案及解析
- 构建新质生产力的实践路径
- 2025年呼吸内科疾病检测与治疗综合考试答案及解析
- 2025年精神科护理知识测试卷答案及解析
- 2025年骨科骨折固定术后康复方案制定模拟考试卷答案及解析
- 2025年骨科骨折固定操作规范考核模拟测试卷答案及解析
- 时事政治考试题(含答案)
- 生物标本课程讲解
- 专八备考单词讲解
- 《古代诗歌四首》理解性默写与训练-2023学年七年级语文上册知识梳理与能力训练
- 2025年非高危安全管理员和企业负责人习题有(含答案)
- 2025年度乡村医生能力提升培训考试试题及答案
- 2025法拍房屋代理竞买合同范本:专业中介服务
- 医院2025年年度窗口服务优化计划
- 营销部综合事务管理办法
- 机加工车间员工技能培训
- 部编人教版三年级上册道德与法治全册教案
评论
0/150
提交评论