C语言实验报告作业分析Word下载.docx
《C语言实验报告作业分析Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实验报告作业分析Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
数据类型、运算符、表达式在C语句中充当什么成分?
什么是标识符?
如何书写整型、实型、字符型常量?
如何定义整型、实型、字符型变量?
怎样表示字符串?
如何求表达式的值?
混合表达式的求值规则是怎样的?
1.输入下列源程序,进行修改、编译、连接和运行。
分析++运算符。
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
%d,%d,%d,%d\n"
i,j,m,n);
前++的含义是:
后++的含义是:
分析++和--运算符。
inti,j;
%d,%d\n"
i,j);
i++,j--);
++i,--j);
分析如何得出此运行结果:
3.输入下列源程序,进行修改、编译、连接和运行。
分析表达式的值。
stdio.h>
inta=7,b=3;
floatx=2.5,y=4.7,z1,z2;
z1=%f\n"
x+a%3*(int)(x+y)%2/4);
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.输入下列源程序,进行修改、编译、连接和运行。
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);
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函数中不同数据类型对应的格式字符和附加格式说明字符是怎样的?
charc1,c2,x;
c1=97;
c2=98;
%c,%c\n"
c1,c2);
Thefollowingoutputintofc1andc2.yesorno?
\n"
/*下面是否输出c1和c2的数值*/
Pleaseinputy:
/*请输入字母y,从而输出*/
x=getchar();
程序最后两个printf输出的结果不同,这种不同是由什么引起的:
2.运行下面的程序,写出运行结果。
inta=5,b=7;
floatx=67.8564,y=-789.124;
longn=1234567;
charc='
A'
;
a=%3d,b=%3d\n"
a,b);
x=%10.2f,y=%10.2f\n"
x,y);
n=%ld\n"
n);
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
max
1
200
30
-300
88
9
2
3
2.有一函数如下:
xx<
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。
60分以下(不含60分)为E(使用switch语句)。
④构造switch表达式;
⑤将switch表达式的值与case常量匹配,打印相应等级。
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表达式的值n与case常量匹配,得到存款利率r;
⑥根据p、n、r计算利息a=p*r*n;
⑦输出2位小数的结果。
p
n
1000
3.计算多项式前n项的值:
s=a+aa+aaa+aaaa+·
,整数a、n由键盘输入(0<
a≤9,0<
n≤9)。
term=term*10+a,sum=sum+term。
请思考:
哪些变量需要初始化?
请画出流程图:
输入a=2,n=4时上机运行结果为:
输入a=5,n=6时上机运行结果为:
输入a=1,n=8时上机运行结果为:
实验10一维数组
1.掌握一维数组的基本概念,定义一维数组和初始化一维数组的方法。
2.掌握一维数组的基本操作,如输入/输出、引用数组元素等。
3.掌握与数组有关的算法,例如找最大或最小值、排序、数列首尾颠倒等。
如何定义一维数组?
如何初始化一维数组?
inta[10];
定义了几个数组元素?
各数组元素如何表示(引用)。
1.某整数数组a具有8个数组元素,用冒泡法对这些元素从小到大进行排序。
8个数组元素用scanf函数输入。
2.将一个数列首尾颠倒。
设该数列为1,3,6,7,9,11,15。
要求按15,11,9,7,6,3,1的顺序存放并输出。
先找到数组的中点位置,然后依次将首尾元素交换。
实验11二维数组
1.掌握二维数组的基本概念,定义二维数组和初始化二维数组的方法。
2.掌握二维数组的基本操作:
引用数组元素、行(列)求和,整个数组的输入/输出等。
说出二维数组的存储结构。
二维数组的输入/输出采用什么方法?
1.求一个5×
6矩阵的所有靠外侧的元素之和,元素均为整数。
输入数据:
2.分别求一个4×
4矩阵的一条对角线上的元素之和与另一条对角线上的元素之和的乘积。
3.打印杨辉三角形前10行。
1
11
121
1331
14641
15101051
N-S图如图13-1所示。
创建二维数组a[N][N],i,j
for(i=0,i<
N,i++)
a[i][0]=1
a[i][i]=1
for(i=2;
i<
N;
i++)
for(j=1;
j<
i;
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]
for(i=0;
i++)
for(j=0;
=i;
printf("
%6d"
a[i][j])
)
图13-1打印杨辉三角形的N-S图
运行程序。
实验12字符数组和字符串
1.掌握字符数组的基本概念,定义字符数组和初始化字符数组的方法。
2.掌握字符数组和字符串的关系,用字符串初始化字符数组的方法。
3.了解常用字符串处理函数的使用方法。
字符串的结构是怎样的?
字符数组可以用字符串来初始化,这时要注意什么?
设charword[10]="
China"
,那么strlen(word)=?
sizeof(word)=?
(sizeof函数求表达式和类型的字节数)常用的字符串处理函数有哪些?
1.输出钻石图形,用字符串初始化二维字符数组编写程序。
上机验证。
*
**
**
**
提示:
用chara[][5]={{'
'
'
*'
},{'
}};
初始化。
2.输出下面几何图形。
*****
*****
3.将字符数组a中下标为单号(1,3,5,…)的元素值赋给另一个字符数组b,然后输出a和b的内容。
输入字符串a:
输出字符串:
a=
b=
4.输入一行字符,统计其中有多少个单词。
比如,输入“Iamaboy”,有4个单词。
令num为单词数目(初值为0),word=0表示字符为空格,word=1表示字符不是空格,word初值为0。
如果当前字符是空格,令word=0,否则如果当前字符不是空格,而word=0,说明出现新单词,令num+=1,word=1。
①创建字符数组charstring[81];
②初始化num=0,word=0;
③输入一行字符string;
④重复执行以下操作,直到遇到空字符:
如果string[i]=空格,令word=0;
否则如果word=0,令word=1,num++。
⑤输出num。
输入一行字符:
统计结果:
num=
实验13函数
(一)
1.掌握函数、函数参数的基本概念。
2.定义和调用用户自定义函数的语法规则。
3.掌握函数声明的概念及函数声明的时机。
调用库函数时应在程序开头添加什么命令?
什么是void函数?
void函数与有返回值函数的调用格式有什么不同?
形参、实参的对应有什么规定?
1.根据下列公式,编写一个函数fun(floatx),并编写一个主函数调用它。
要求在主函数中输入已知值和输出结果。
x2-6x+1x<
y=
x3+2x-5x≥0
2.编写一个函数prt(charc,intn),重复输出给定的字符c(这里的c是@),输出n次。
在主函数中调用该函数,输出如下的直角三角形。
@
@@
@@@
@@@@
@@@@@
@@@@@@
函数prt(charc