C语言实验指导书文档格式.docx
- 文档编号:21571642
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:38.67KB
C语言实验指导书文档格式.docx
《C语言实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
②在程序的最后增加一句:
printf(“%c\t%c\n”,m,n);
再运行程序,并分析结果。
③将第2行改为:
charm,n;
再运行程序,并观察结果。
④将第3行和第4行改为:
m=‘x’;
n=‘p’;
⑤将第3行和第4行改为:
m=x;
n=p;
如果产生了错误,说明是什么引起的?
⑥再将第3行和第4行改为:
m=280;
/*用大于255的整数*/
n=320;
再运行程序,并观察分析运行结果。
实验二顺序结构程序设计
1.掌握数据的输入输出的方法,能正确使用有关格式转换符;
2.熟悉顺序结构程序中语句的执行过程。
3.掌握顺序结构程序的设计方法。
二.实验内容
1.编写C程序,按下列公式计算并输出S的值。
其中a和b的值由键盘输入。
源程序清单:
main
{
inta,b;
floats;
scanf(“%d,%d”,&
s=2.0*a*b/((a+b)*(a+b));
printf(“s=%f\n”,s);
①输入并调试上述源程序;
②对源程序进行编译、连接;
③运行源程序并存盘(文件名自定);
④将scanf函数改为:
scanf(“%d%d”,&
b)再编译、连接、运行;
⑤写出程序运行结果。
输入数据
4,5
输入修改后数据
45
45
运行结果
原因
2、编写下列程序,并上机调试运行程序。
(1)编程:
设圆的半径为r=1.5,求圆周长、圆面积与圆球的体积。
要求用scanf函数输入数据,输出计算结果。
输出时取小数点后两位数据。
(2)程:
输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9(f-32)。
(3)编程:
用getchar函数读入两个字符,然后分别用putchar函数和printf函数输出这两个字符。
上机运行程序,比较用putchar和printf函数输出字符的特点。
实验三选择结构程序设计
1.学会正确使用关系运算符和关系表达式;
2.学会正确使用逻辑运算符和逻辑表达式;
3.学会使用逻辑表达式和关系表达式等表达条件;
4.熟练掌握if语句和switch语句;
5.熟悉选择结构程序中的语句执行过程;
并掌握选择结构程序的设计方法;
1、编写程序,判断从键盘上输入的一个字符,并按下列要求输出。
(1)若该字符是数字,输出字符串“0-9”;
(2)若该字符是大写字母,输出字符串“A-Z”;
(3)若该字符是小写字母,输出字符串“a-z”;
(4)若该字符是其他字母,输出字符串“!
,@,……”。
部分源程序清单:
{ charc;
scanf(“%c”,&
c)
if(‘0’<
=c&&c<
=‘9’)
elseif()
printf(“A-Z\n”);
(‘a’<
=c&&c<
=‘z’)
printf(“a-z\n”);
printf(“!
@,…\n”);
具体要求:
①输入、完善上述源程序,并调试;
②对源程序进行编译、连接;
③运行源程序并存盘;
④写出程序运行结果(输入四组数据,分别对应四种情况)。
(1)有一函数
y=
用函数输入的值(分别为小x<
1,1<
=x<
10,>
=10三种情况),求y值。
(2)给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。
90分以上为’A’,81~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
用switch语句实现。
(3)给一个不多于5位的正整数,要求:
①求出它是几位数;
②分别打印出每一位数字;
③按逆序打印出各位数字,例如原数为321,应输出123。
(4).编程:
要求输入a、b、c三个值,输出其中最大者
(5)输入四个整数,要求按大小顺序输出。
实验四循环结构程序设计
一、目的要求
1.熟悉用while语句,do-while语句和for语句实现循环的方法;
2.掌握在程序设计中用循环的方法实现各种算法;
3.理解循环结构程序中语句的执行过程;
二、实验内容
1、编一个C程序,计算并输出数列:
1,3,5,…2n-1,…的前几项之和,其中n由键盘输入。
要求分别用三种循环语句实现。
方法1:
用for语句实现。
{longs,n,k,i;
scanf(“”,&n);
k=2*n-1;
;
for(i=1;
i<
=k;
)s+=i;
printf(“1+3+……+%ld=%ld\n”,k,s);
方法2:
用while语句实现。
{long,n,i=1;
scanf(“%ld”,&n);
while()
{s+=i;
}
printf(“1+3+……+%ld=%ld\n”,2*n-1,s);
方法3:
用do语句实现。
{longs=0,n,;
do
s+=i;
i=i+2;
while();
①输入、完善上述源程序,并用热键调试;
④写出程序运行结果。
方法1
方法2
方法3
2、编写程序并上机调试运行:
(1)输入两个正整数,求其中最大公约数和最小公倍数。
(2)求1!
+2!
+3!
+…+20!
(3)一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?
第10次反弹多高?
(4)打印出以下图案。
*
***
*****
*******
(5)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想在吃时,见只剩下一个桃子了。
求第一天共摘了多少个桃子。
(6)打印九九乘法表。
实验五 综合运用三种基本结构进行程序设计
一、目的要求
1.进一步掌握选择结构程序设计的方法和技巧。
2.进一步掌握循环结构程序设计的方法和技巧。
3.综合运用三种基本结构进行程序设计。
三、实验内容
编写程序并上机调试运行:
1.百马百担问题。
有100匹马,驮100担,大马驮3担,中马驮2担,两个小马驮1担。
问大,中,小马各多少?
(程序应考虑适当减少重复次数)
2.输入一行字符,分别统计其中的英文字母、空格、数字和其它字符的个数。
3.打印出所有的“水仙花数”。
所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。
例如153是一水仙花数。
4.将一个正整数分解成质因数的乘积。
例如:
输入90,打印90=2*3*3*5。
5.利用循环语句编写程序:
对一个正整数,将各位数字反序后的数输出。
例如原数是12345,则计算机输出是54321;
原数是987,则计算机输出是789。
6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:
6 itsfactorsare1,2,3
7.
实验六数组
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串函数的使用;
3.掌握与数组有关的算法(特别是排序算法)。
1、从键盘输入一个整数n(n≤10)和n个整数,存入数组a中,先依次输出各个数组元素的值,然后对数组a的所有元素值按从小到大的顺序重新排列后,再依次输出。
main()
{ inta[10],n,i,j:
;
printf(“inputn=”);
scanf(“%d”,&n);
printf(“inputarraya[0]a[1]…a[%d]:
\n”,n-1);
for(i=0;
n;
i++)
scanf(“%d”,);
printf(“beforesort:
array\n”);
for(i=0;
printf(“%d”,a[i]);
printf(“\n”);
;
{min=i;
for(j=;
j<
if(a[j]<
a[min]);
ax=;
a[i]=a[min];
=ax;
printf(“aftersort:
:
printf(“%d”,a[i]);
printf(“\n”);
具体要求:
①输入、完善并调试上述源程序;
②对源程序进行编译,连接,运行;
③写出程序运行结果(输入三组数据)。
输入整数n
输入n个整数
输出(排序前)
输出(排序后)
(1)用选择法对10个整数排序。
10个整数用scanf函数输入。
(2)已有一个已排好序的数组,现输入一个数,要求按原来排序的规律将它插入数组中。
(3)求一个3*3矩阵两对角线元素之和。
(4)打印出以下杨辉三角形(要求打印10行)。
1
11
121
1331
14641
……
(5)将两个字符串连接起来,不要用strcat函数。
(6)*.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
实验七、八函数与预处理
1.掌握定义函数的方法;
2.掌握函数实参与形参的对应关系,以及“值传递”的方式和数组名作为参数的传递方式;
3.掌握函数的嵌套调用和递归调用的方法;
4.掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。
5.理解宏的概念,掌握宏的定义。
6.了解文件包含的概念,掌握其用法。
1、从键盘输入10个数存入数组a中,调用fmax求数组中的最大值并输出。
#include<
stdio.h>
{inta[10],i,jmax;
10;
++i)
scanf(“%d”,&
a[i]);
fmax(,10,jmax);
printf(“%d”,jmax);
fmax(intb[],intt,intimax)
{inti;
imax=b[0];
for(i=1,i<
if(b[i]>
imax);
}
①输入并完善源程序;
②对源程序进行编译、连接、运行;
③写出程序运行结果。
2、编写下列程序,并上机调试运行:
(1)求方程ax
+bx+c=0的根,用三个函数分别求当b
-4ac大于0,等于0和小于0时的根,并输出结果。
从主函数输入a、b、c的值。
(2)写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。
(3)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。
(4)输入10个学生5门课程的成绩,分别用函数求:
(1)每个学生平均分;
(2)每门课的平均分;
(5)用递归法求n阶勒让德多项式的值,递归公式为
(6)写一函数,输入一个十六进制数,输出相应的十进制数。
(7)定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。
输出已交换后的两个值。
(8)输入两个整数,求它们相除的余数。
用带参的宏来实现,编程序。
注:
该实验可用4学时。
实验九、十指针
1.掌握指针的概念,会定义和使用指针变量;
2.掌握指针的运算;
3.学会使用数组的指针和指向数组的指针变量;
4.学会使用字符串的指针和指向字符串的指针变量;
5.了解指向函数的指针变量;
6.了解指向指针的指针的概念及其使用方法。
1、有如下程序。
#include<
{charch[2][5]={“1213”,“8421”},*p[2];
inti,j,s=0;
2;
p[i]=;
for(j=0;
p[i][j]>
‘\0’&
&
p[i][j]<
=‘9’;
j+=2)
s=;
printf(“%d\n”,s);
①完善并输入上述源程序;
2、编写下列程序,并上机调试运行(都要求用指针实现)
(1)输入三个数,按由小到大的顺序输出。
(2)将一个3*3的矩阵转置,用一函数实现之。
在主函数中用scanf函数输入矩阵元素,将数组名作为函数的实参。
函数调用后在主函数中输出已转置的矩阵。
(3)将n个数按输入时顺序的逆序排列,用函数实现。
(4)有n个整数,使前面个数顺序向后移m个位置,最后m个数变成最前面m个数。
写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
(5)写一函数,求一个字符串的长度。
main函数中输入字符串,并输出其长度。
(6)输入三个字符串,按由小到大顺序输出。
(7)输入一个字符串,内有数字和非数字字符,如
a123xf4617654?
389tabc5609
将其中连续的数字作为一个整数,依次存放到一数组a中。
例如123放在a[0],46放在a[1]……统计共有多少个整数,并输出这些数。
(8)用一个函数实现两个字符串的比较,即自己写一个strcmp函数:
strcmp(s1,s2)
如果s1=s2,则函数返回值为0;
如果s1
s2,返回它们二者的第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79—65=14);
如果S1>
S2,则输出正值;
如S1<
S2则输出负值。
两个字符串S2、S2由main函数输入,strcmp函数的返回值也在main函数输出。
(9)
用指向指针的指针的方法对n个整数排序并输出。
要求将排序单独写成一个函数。
n和整数在主函数中输入。
最后在主函数中输出。
实验十一结构体和共用体
1.掌握结构体类型变量的定义和使用;
2.掌握结构体类型数组的概念和应用;
3.掌握链表的概念,初步学会对链表进行操作;
4.掌握共用体的概念与使用。
1、分析并验证以下程序的结果。
#include<
structstudent
{longnum;
char*name;
floatscore;
}stu[5]={930001,“Wang”,80.5,
930002,“Zhang”,79.6,
930003,“Li”,95.3,
930004,“Zhao”,84.5,
930005,“Huang”,91.2
};
voidmain(void)
{inti;
structstudent*sp;
sp=stu;
for(i=0;
5;
i++,sp++)
if(sp->
score>
=90.0)
printf(“%10ld%10s%6.1f\n”,sp->
num,sp->
name,sp->
score);
具体要求:
①输入调试上述源程序,直到无错误为止;
2、编程并上机调试运行。
(1)有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入个学生数据,要求打印出三门课总平均成绩,以及最高分的学生数据(包括学号、姓名、三门课的成绩、平均分数)。
要求用一个input函数输入5个学生数据;
用一个average函数求总平均分;
max函数找出最高分学生数据;
总平均分和最高分的学生的数据都在住函数中输出。
(2)13个人围成一圈,从第一个人开始顺序报号1、2、3。
凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。
(3)输入和运行以下程序:
uniondata
intI[2];
floata;
longb;
charc[4];
};
{uniondatau;
scanf(“%d,%d”,&
u.i[0],&
u.i[1]);
printf(“i[0]=%d,i[1]=%d\na=%f\nb=%ld\nc[0]=%c,c[1]=%c,c[2]=%c,
c[3]=%c\n”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);
输入零个整数10000、20000给u.i[0]和u.i[1]。
分析运行结果。
然后将scanf语句改为:
scanf(“%ld”,&
u.b);
输入60000给b。
(4)
.建立一个链表,每个节点包括:
学号、姓名、性别、年龄。
输入一个年龄,如果链表中的节点所包含的年龄等于此年龄,则将此节点删去。
实验十二位运算和文件
1.加深对二进制的认识;
2.理解位运算的概念,掌握各种位运算的功能;
学会使用位运算修改数据的方法;
3.掌握文件以及缓冲文件系统、文件指针的概念;
4.学会使用文件打开、关闭、读、写等文件操作函数;
5.学会用缓冲文件系统对文件进行简单的操作。
1.分析以下程序输入数据,给出结果,并上机验证。
{
inta;
unsignedb;
scanf(“%d,%d”,&
a=>
>
b=b<
<
3;
printf(“%d,%d”,a,b);
要求:
(1)输入调试上述源程序;
(2)对源程序进行编译,连接,运行;
(3)写出程序运行结果(输入三组数据)。
若输入
-1,2
3,4
-2,1
输出结果
2.编写程序并上机调试运行。
(1)从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。
输入的字符串以“!
”结束。
(2)有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号、姓名、三门课的成绩),计算平均成绩,将原有数据和计算出的平均分存放在磁盘文件“stud”中。
(3)将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“studsort”中。
.将上题已排序的学生成绩文件进行插入处理。
插入一个学生的三门课的成绩。
程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。
对上题的学生原有数据为
990101Wang89,90,76.5
990103Li78,81,87
990105Lin81,68,79
990108Lei65,84,71
990112Yuan58,73,82
要插入的学生数据为:
990110Xin82,79,90
编写者:
刘涛
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 指导书