C语言实验指导书.docx

上传人:b****6 文档编号:8435398 上传时间:2023-01-31 格式:DOCX 页数:18 大小:38.67KB
下载 相关 举报
C语言实验指导书.docx_第1页
第1页 / 共18页
C语言实验指导书.docx_第2页
第2页 / 共18页
C语言实验指导书.docx_第3页
第3页 / 共18页
C语言实验指导书.docx_第4页
第4页 / 共18页
C语言实验指导书.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言实验指导书.docx

《C语言实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书.docx(18页珍藏版)》请在冰豆网上搜索。

C语言实验指导书.docx

C语言实验指导书

C语言上机实验指导

实验一熟悉C语言程序开发环境

一.目的要求

1.熟悉在所用的计算机系统上如何编辑、编译、连接和运行一个C语言程序。

2.掌握C语言的数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。

3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用。

4.通过运行简单的C语言程序,初步了解C语言程序的结构特点。

二.实验内容

1.调用编辑程序,输入以下程序,并进行编译和运行。

熟悉所用的系统使用什么命令进行编译和连接运行的。

编译和连接后所得到的目标程序的后缀是什么形式?

main()

{

printf(“Thisisacprogram.\n”);

}

2.从键盘依次输入两个整数,计算并输出这2个整数之差。

#include“stdio.h”

main()

{floata,b,c;

printf(“inputa,,b,:

\n”);

scanf(“%d,%d,”,&a,&b);

c=a-b;

printf(“c=%d\n”,c);

}

具体要求:

在TurboC或其他编译环境编辑窗口输入该程序,然后进行编译连接。

如果在编译过程中有错误发生,则仔细检查并修改程序,再进行编译连接,直到没有错误为止。

运行时按程序中要求的格式依次输入下列2个数:

212,84

3.输入并运行以下程序,分析结果,体会自增自减运算符的特点,上机验证;

main()

{inti,j,m,n,u=0,v=0;

i=8;j=10;

m=++i;n=j++;

u+=i--;n-=--j;

printf(“i=%d,j=%d,m=%d,n=%d,u=%d,v=%d\n”,i,j,m,n,u,v);

}

4.输入并运行下面的程序。

main()

{ intm,n;

m=120;

n=112;

printf(“%d\t%d\n”,m,n);

}

要求:

①运行程序记下结果。

②在程序的最后增加一句:

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”,&a,&b);

s=2.0*a*b/((a+b)*(a+b));

printf(“s=%f\n”,s);

}

具体要求:

①输入并调试上述源程序;

②对源程序进行编译、连接;

③运行源程序并存盘(文件名自定);

④将scanf函数改为:

scanf(“%d%d”,&a,&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)若该字符是其他字母,输出字符串“!

,@,……”。

部分源程序清单:

main()

{ charc;

scanf(“%c”,&c)

 if(‘0’<=c&&c<=‘9’)

elseif()

printf(“A-Z\n”);

(‘a’<=c&&c<=‘z’)

printf(“a-z\n”);

printf(“!

@,…\n”);

}

具体要求:

①输入、完善上述源程序,并调试;

②对源程序进行编译、连接;

③运行源程序并存盘;

④写出程序运行结果(输入四组数据,分别对应四种情况)。

输入数据

运行结果

原因

2、编写下列程序,并上机调试运行程序。

(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语句实现。

main()

{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语句实现。

main()

{long,n,i=1;

scanf(“%ld”,&n);

while()

{s+=i;

;}

printf(“1+3+……+%ld=%ld\n”,2*n-1,s);

}

方法3:

 用do语句实现。

main()

{longs=0,n,;

scanf(“%ld”,&n);

do

s+=i;

i=i+2;

while();

printf(“1+3+……+%ld=%ld\n”,2*n-1,s);

}

具体要求:

①输入、完善上述源程序,并用热键调试;

②对源程序进行编译、连接;

③运行源程序并存盘;

④写出程序运行结果。

方法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;i

  scanf(“%d”,);

printf(“beforesort:

array\n”);

  for(i=0;i

  printf(“%d”,a[i]);

  printf(“\n”);

for(i=0;i<;i++)

  {min=i;

 for(j=;j

  if(a[j]

ax=;

a[i]=a[min];

=ax;}

printf(“aftersort:

:

array\n”);

for(i=0;i

printf(“%d”,a[i]);

printf(“\n”);

}

  具体要求:

①输入、完善并调试上述源程序;

②对源程序进行编译,连接,运行;

③写出程序运行结果(输入三组数据)。

输入整数n

输入n个整数

输出(排序前)

输出(排序后)

2、编写程序并上机调试运行:

(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

main()

{inta[10],i,jmax;

for(i=0;i<10;++i)

scanf(“%d”,&a[i]);

fmax(,10,jmax);

printf(“%d”,jmax);

}

fmax(intb[],intt,intimax)

{inti;

imax=b[0];

for(i=1,i<10;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

main()

{charch[2][5]={“1213”,“8421”},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)

p[i]=;

for(i=0;i<2;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由main函数输入,strcmp函数的返回值也在main函数输出。

(9)

用指向指针的指针的方法对n个整数排序并输出。

要求将排序单独写成一个函数。

n和整数在主函数中输入。

最后在主函数中输出。

注:

该实验可用4学时。

实验十一结构体和共用体

一、目的要求

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;i<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];

};

main()

{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.分析以下程序输入数据,给出结果,并上机验证。

#include

voidmain(void)

{

inta;

unsignedb;

scanf(“%d,%d”,&a,&b);

a=>>2;

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”中。

(4)

.将上题已排序的学生成绩文件进行插入处理。

插入一个学生的三门课的成绩。

程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。

对上题的学生原有数据为

990101Wang89,90,76.5

990103Li78,81,87

990105Lin81,68,79

990108Lei65,84,71

990112Yuan58,73,82

要插入的学生数据为:

990110Xin82,79,90

 

编写者:

刘涛

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1