C语言实验报告作业分析.docx
- 文档编号:9087656
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:33
- 大小:35.82KB
C语言实验报告作业分析.docx
《C语言实验报告作业分析.docx》由会员分享,可在线阅读,更多相关《C语言实验报告作业分析.docx(33页珍藏版)》请在冰点文库上搜索。
C语言实验报告作业分析
第13章实验与指导
为了结合实际,强化操作,加强实践环节,激励创新意识,增强实验的针对性,提高程序设计的编程能力和调试能力,本章给出了与各章对应的实验题目,并给以必要的指导。
读者也可以举一反三,根据自己的学习兴趣,将自己专业领域或生活中的某些问题,作为实验题目,创造性地解决自己面临的实际问题,提高成就感和自豪感。
实验1C程序的运行环境和运行C程序的方法
一、目的要求
1.认识在计算机系统上编辑、编译、连接和运行C程序的步骤。
2.在调试程序中观察系统提示,改正编译错误或连接错误。
3.了解C语言源程序的结构及书写格式,了解表达C语言程序的各个组成成分的术语。
二、实验内容
思考问题:
什么是源程序?
C语言源程序的结构是怎样的?
C语言源程序的书写格式怎样?
指出第1章例题的程序中哪些是注释、预处理命令、声明部分、可执行语句、函数定义、函数调用、关键字、main函数等。
1.练习进入C语言编程界面。
输入下列源程序,进行修改、编译、连接和运行。
应了解是用什么命令进行编译、连接和运行的。
运行的结果是什么?
程序如下:
#include"stdio.h"
main()
{
printf("ProgrammingisFun.\n");
}
运行结果为:
2.输入下列源程序,进行修改、编译、连接和运行。
运行的结果是什么?
程序如下:
#include"stdio.h"
main()
{printf("Programming\n");
printf("isFun.\n");
}
运行结果为:
运行结果比上题多一行,可知\n的作用是:
3.输入下列源程序,进行修改、编译、连接和运行。
运行的结果是什么?
程序如下:
#include"stdio.h"
#include
main()
{
floatx;
x=sin(3.141593/4);
printf("%f\n",x);
}
运行结果为:
语句floatx;的作用是:
实验2数据类型、运算符与表达式
一、目的要求
1.掌握C语言的基本数据类型。
2.学会如何书写整型、实型常量,如何定义整型、实型变量。
3.掌握C语言的算术运算符、赋值运算符、逗号运算符及运算规则。
4.掌握表达式的求值规则。
二、实验内容
思考问题:
数据类型、运算符、表达式在C语句中充当什么成分?
什么是标识符?
如何书写整型、实型、字符型常量?
如何定义整型、实型、字符型变量?
怎样表示字符串?
如何求表达式的值?
混合表达式的求值规则是怎样的?
1.输入下列源程序,进行修改、编译、连接和运行。
分析++运算符。
程序如下:
#include"stdio.h"
main()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
运行结果为:
前++的含义是:
后++的含义是:
2.输入下列源程序,进行修改、编译、连接和运行。
分析++和--运算符。
程序如下:
#include"stdio.h"
main()
{
inti,j;
i=8;
j=10;
printf("%d,%d\n",i,j);
printf("%d,%d\n",i++,j--);
printf("%d,%d\n",i,j);
printf("%d,%d\n",++i,--j);
}
运行结果为:
分析如何得出此运行结果:
3.输入下列源程序,进行修改、编译、连接和运行。
分析表达式的值。
#include
main()
{
inta=7,b=3;
floatx=2.5,y=4.7,z1,z2;
printf("z1=%f\n",x+a%3*(int)(x+y)%2/4);
printf("z2=%f\n",(float)(a+b)/2+(int)x%(int)y);
}
运行结果为:
表达式x+a%3*(int)(x+y)%2/4得到这样的结果是因为:
表达式(float)(a+b)/2+(int)x%(int)y得到这样的结果是因为:
4.输入下列源程序,进行修改、编译、连接和运行。
分析表达式的值。
#include"stdio.h"
main()
{
intx,z;
floaty,w;
x=(1+2,5/2,-2*4,17%4);
y=(1.+2.,5./2.,-2.*4.);
z=(1+2,5/2,-2*4,-17%4);
w=(1+2,-2*4,-17%4,5/2);
printf("x=%d,y=%f,z=%d,w=%f\n",x,y,z,w);
}
运行结果为:
思考得出此运行结果的原因。
实验3顺序结构程序设计
一、目的要求
1.正确使用数据输入/输出函数scanf、printf及整型、实型、字符型数据的输入/输出格式。
2.正确使用字符输入/输出函数getchar、putchar。
3.学会编写简单顺序结构的程序。
二、实验内容
思考问题:
scanf与printf函数的格式控制字符串由什么组成?
scanf与printf函数中不同数据类型对应的格式字符和附加格式说明字符是怎样的?
1.输入下列源程序,进行修改、编译、连接和运行。
程序如下:
#include
main()
{
charc1,c2,x;
c1=97;
c2=98;
printf("%c,%c\n",c1,c2);
printf("Thefollowingoutputintofc1andc2.yesorno?
\n");/*下面是否输出c1和c2的数值*/
printf("Pleaseinputy:
\n");/*请输入字母y,从而输出*/
x=getchar();
printf("%d,%d\n",c1,c2);
}
运行结果为:
程序最后两个printf输出的结果不同,这种不同是由什么引起的:
2.运行下面的程序,写出运行结果。
#include"stdio.h"
main()
{
inta=5,b=7;
floatx=67.8564,y=-789.124;
longn=1234567;
charc='A';
printf("a=%3d,b=%3d\n",a,b);
printf("x=%10.2f,y=%10.2f\n",x,y);
printf("n=%ld\n",n);
printf("c=%corc=%d(ASCII)\n",c,c);
putchar(c);
putchar('\n');
}
运行结果为:
3.编程求圆周长c、圆面积s、圆球表面积area、圆球体积v。
在程序中调用scanf函数通过键盘输入半径r,输出计算结果,输出要求有文字说明,计算结果精确到小数点后两位。
圆周长、圆面积、圆球表面积、圆球体积的计算公式为:
c=2πr,s=πr2,area=4πr2,v=4/3πr3。
算法提示:
①定义符号常量PI的值为3.1416;
②定义实型变量r、c、s、area、v;
③提示输入"Pleaseenterr:
";
④读入r;
⑤根据公式计算c=2*PI*r,s=PI*r*r,area=4*PI*r*r,v=PI*r*r*r*4/3;
⑥打印两位小数的结果c、s、area、v。
编写程序:
测试结果为:
r
c
s
area
v
1.5
3.45
4.输入一个华氏温度f,要求输出摄氏温度c。
公式为c=5/9×(f-32)。
输出要求有文字说明,取2位小数。
算法提示:
①定义实型变量c、f;
②提示输入"Pleaseenterf:
";
③读入f;
④根据公式计算c;
⑤打印两位小数的结果。
编写程序:
测试结果为:
华氏温度f
摄氏温度c
100.25
0.5
23.78
实验4顺序结构程序设计(续)
一、目的要求
1.掌握编写简单顺序结构程序的方法。
2.掌握表达式的求值规则。
二、实验内容
1.输入两个正整数,求它们相除所得的商,商的整数部分、小数部分及余数。
例如17除以2,其商为8.5,商的整数部分为8,小数部分为0.5,余数为1。
算法提示:
若商为x,则(int)x即为商的整数部分。
编写程序:
输入为:
输出结果为:
2.设a=12,分析下列表达式的值,并编写一个(不是四个)程序,上机进行验证。
①a+=a
②a-=2
③a*=2+3
④a/=a+a
算法提示:
给a赋值后,输出第一个表达式的值;重新给a赋值后,输出第二个表达式的值;……
程序为:
四个表达式的值分别为:
3.从键盘输入一个小写字母,把它转化为大写字母后输出。
编写程序:
输入为:
输出结果为:
实验5选择结构程序设计
一、目的要求
1.掌握6个关系运算符、3个逻辑运算符及运算规则。
2.掌握if语句的3种形式及对应的语法规则、执行流程。
二、实验内容
思考问题:
比较运算符==与赋值运算符=有何区别?
如何表示复杂条件?
逻辑表达式的求值规则是怎样的?
怎样比较实数相等?
1.有3个整数a、b、c,由键盘输入,输出其中最大的数。
算法提示:
①定义整型变量a、b、c、max;
②提示输入"Pleaseentera,b,c:
";
③读入a、b、c;
④找出a、b中的较大数存入max;
⑤找出第3个数c与max中的较大数,并再次存入max;
⑥3个数中的最大数就是max,打印max。
编写程序:
测试结果为:
a
b
c
max
1
200
30
-300
88
9
2
1
3
2.有一函数如下:
xx<1
y=2x-1,当1≤x<10时
3x-11x≥10
用scanf函数输入x的值,求y值。
算法提示:
①定义实型变量x、y;
②提示输入"Pleaseenterx:
";
③读入x;
④判断x所在的区间,应用y的计算公式求值;
⑤打印结果。
编写程序:
测试结果为:
x
y
-1
5
10
3.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上(含90分)为A;80分以上、90分以下(含80分、不含90分)为B;70分以上、80分以下(含70分、不含80分)为C;60分以上、70分以下(含60分、不含70分)为D;60分以下(不含60分)为E。
(不用switch语句)
算法提示:
①定义百分制成绩(整型变量)score;
②提示输入"Pleaseenterscore:
";
③读入score;
④判断score所在的区间,对应得出score的等级并打印出来。
编写程序:
测试结果为:
score
打印等级
65
54
77
89
92
100
实验6选择结构程序设计(续)
一、目的要求
掌握选择结构程序设计的方法。
二、实验内容
1.从键盘输入一个字符,判断此字符属于下面哪一种。
(1)字母(a~z,A~Z)
(2)数字字符(0~9)
(3)其他字符
显示相应的提示信息。
编写程序:
2.输入三角形的三条边长,求三角形的面积。
要求检查输入的三条边是不是正数以及能否构成三角形(如果三角形的任意两条边的长度之和大于第三边,则可以构成三角形)。
编写程序:
输入为:
输出结果为:
3.求方程ax2+bx+c=0的根。
a、b、c从键盘输入,要考虑a=0,b2-4ac>0,b2-4ac=0,b2-4ac<0四种情况。
a=0时方程不是二次方程,b2-4ac>0时有两个不相等的实根,b2-4ac=0时有两个相等的实根,b2-4ac<0有两个共轭复根。
编写程序:
输入为:
输出结果为:
实验7循环结构程序设计
一、目的要求
1.掌握while、do…while、for语句的语法规则、执行流程。
2.比较3种循环语句的异同。
二、实验内容
思考问题:
3种循环语句的异同点是什么?
能否互相转换?
for循环中的3个表达式与while循环中的表达式是如何对应的?
1.分别用while、do…while、for语句编程,求数列前20项之和:
2/1,3/2,5/3,8/5,13/8·····
算法提示:
①定义实型变量sum、term、a、b、c,整型变量i;
②初始化:
sum=0,分子a=2,分母b=1;
③初始化:
计数器i=1;
④计算第i项term=a/b;
⑤累加sum=sum+term;
⑥计算c=a+b,更新b=a,更新a=c;
⑦计数器加1,i++;
⑧重复④~⑦,直到i>20;
⑨输出2位小数的结果。
编写程序:
方法1,用while语句:
方法2,用do…while语句:
方法3,用for语句:
3次测试结果,数列前20项之和sum为多少?
2.计算多项式的值:
s=1!
+2!
+3!
+4!
+···+20!
算法提示:
该多项式迭代公式为:
term=term*i,sum=sum+term。
请思考哪些变量需要初始化?
变量应采用什么类型?
编写程序:
上机运行结果为:
3.36块砖36人搬,男搬4女搬3,小孩2人搬1砖。
要求一次全搬完,问男、女、小孩各若干(人)?
算法提示:
设x、y、z表示男、女、小孩的人数,则有不定方程:
x+y+z=36
4x+3y+z/2=36
用穷举法,对x、y、z所有可能的组合测试出满足条件的解。
x、y、z的取值范围如下:
x:
1~8,步长1;
y:
1~11,步长1;
z:
2~36,步长2。
对x、y、z所有可能的组合:
8×11×(36/2)重复测试条件:
4*x+3*y+z/2==36&&x+y+z==36
是否成立,若成立则打印出x、y、z的值。
编写程序:
上机运行结果有几组解?
男、女、小孩各多少人?
4.打印ASCII码值为40~80的ASCII码值对照表。
注意打印格式,如何在一行中同时打印若干列?
编写程序:
观察上机输出结果。
输出结果为:
实验8循环结构程序设计(续)
一、目的要求
掌握循环结构程序设计的方法。
二、实验内容
1.把1张100元的人民币兑换成5元、2元和1元的纸币(每种都要有)共50张,问有哪几种兑换方案?
算法提示:
可参考百钱百鸡问题,本题与之类似。
编写程序:
2.韩信点兵问题:
有兵一队,若五人排成一行,则末行一人;六人排成一行,则末行五人;七人排成一行,则末行四人;十一人排成一行,则末行十人,问最少有多少兵?
算法提示:
用兵数作循环变量进行循环测试,若满足所说的条件则输出兵数并用break退出循环,否则兵数加1继续循环。
编写程序:
3.求100~300间的所有素数。
算法提示:
可参考第5章的例题,采用一个for循环,将例题中的多数语句作为for的循环体。
编写程序:
实验9选择、循环结构程序设计
一、目的要求
1.掌握switch语句的语法规则、执行流程;进一步掌握选择结构程序设计的方法。
2.进一步掌握循环结构程序设计的方法。
二、实验内容
思考问题:
用elseif语句和switch语句都能处理同一个问题,从程序的可读性上讲,那一种更好?
1.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上(含90分)为A;80分以上、90分以下(含80分、不含90分)为B;70分以上、80分以下(含70分、不含80分)为C;60分以上、70分以下(含60分、不含70分)为D;60分以下(不含60分)为E(使用switch语句)。
算法提示:
①定义百分制成绩(整型变量)score;
②提示输入"Pleaseenterscore:
";
③读入score;
④构造switch表达式;
⑤将switch表达式的值与case常量匹配,打印相应等级。
编写程序:
测试结果为:
score
打印等级
score
打印等级
65
89
54
92
77
100
2.请用switch语句求一笔定期存款的到期利息:
输入存款数、存款年数,输出到期利息。
设存款利率为1年期2%,2年期2.5%,3年期2.8%,5年期3%。
利息计算公式为a=p×r×n,设:
a为到期利息,p为存款数,n为年数,r为利率(使用switch语句)。
算法提示:
①定义实型变量a、p、r,整型变量n;
②提示输入"Pleaseenterp,n:
";
③读入p、n;
④构造switch表达式;
⑤将switch表达式的值n与case常量匹配,得到存款利率r;
⑥根据p、n、r计算利息a=p*r*n;
⑦输出2位小数的结果。
编写程序:
测试结果为:
p
n
a
1000
1
1000
2
1000
3
1000
5
3.计算多项式前n项的值:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 作业 分析