C语言实验指导书24学时.docx

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

C语言实验指导书24学时.docx

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

C语言实验指导书24学时.docx

C语言实验指导书24学时

前言上机实验的目的和要求

一上机实验的目的

上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。

学习程序语言,上机实验的目的如下:

1加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。

2了解和熟悉C语言程序开发环境。

熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。

3学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。

要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。

4在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。

多动脑筋思考,将会对你有很大帮助。

二上机实验前的准备工作

1了解所用的计算机系统的性能和使用方法;

2复习和掌握与本实验有关的教学内容;

3准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;

4准备好调试和运行时所需的数据。

三上机实验的步骤

1调出C语言编译系统,进入C语言工作环境;

2输入自己编制好的程序;

3检查输入是否有错,及时更正;

4进行编译和连接;

5运行程序,分析结果。

四、实验结束,整理实验报告

实验报告应包括以下内容:

1上机题目;

2程序清单;

3运行结果;

4对结果的分析和本次获得的经验和体会。

实验一C语言程序初步

一实验目的

1熟悉C语言运行环境——MicrosoftVisualC++6.0中文版。

2掌握C语言程序的书写格式和C语言程序的结构,初步了解C源程序的特点。

3掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。

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

5掌握不同的类型数据之间赋值的规律。

二实验内容

1C语言上机步骤

⑴开机,启动MicrosoftVisualC++6。

⑵建立工程文件:

在“文件”菜单中选择“新建”命令项,在弹出的“新建”对话框的“工程”选项卡中选择“Win32ConsoleApplication”选项,在“工程”框中输入工程文件名sy1,在“c:

位置”下拉框中输入或选择文件夹,单击“确定”;在以下弹出的两个对话框中分别单击命令按钮“完成”和“确定”。

⑶建立C++源文件:

在“工程”菜单中选择“添加到工程”—“新建”命令项,在弹出的“新建”对话框的“文件”选项卡中选择“C++SourceFile”,在右边的“文件”框中输入文件名sy11后单击“确定”。

⑷输入源程序:

在弹出的文件编辑窗口中输入下面的源程序:

#include

voidmain()

{printf("Hello,World!

\n");(

printf("WelcometotheClanguageworld!

\n");

printf("Everyonehasbeenwaitingfor.\n");

}

⑸编译:

用“编译”菜单的“编译”命令项对源文件sy11.cpp进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。

直到修改了全部错误,屏幕下面的窗口会出现下面的信息:

 

表示已通过编译,生成了目标程序sy11.obj。

⑹调试:

接下来进行调试,操作如下图所示。

完成调试后,生成可执行程序文件sy1.exe。

 

⑺运行:

最后用“编译”菜单的“!

执行sy1.exe”命令项运行可执行程序文件sy.exe。

运行结果如下:

2用同样的方法,完成下面程序的运行

1输入并运行下面的程序,运行后记录并分析结果。

#include

main()

{charc1,c2;/*第2行*/

c1=97;c2=98;/*第3行*/

printf("%c%c\n",c1,c2);

}

在此基础上:

⑴在程序最后增加一个语句,再运行,并分析结果。

printf("%d%d\n",c1,c2);ac9798

⑵将第2行改为:

intc1,c2;

再次运行,并分析结果。

ac9798

⑶再将第3行改为:

c1=305;c2=340;1c305340

再使之运行,分析运行结果。

2输入并运行下面的程序

#include

main()

{charc1='a',c2='b',c3='c',c4='\101',c5='\116';

printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);

printf("\t\t\b%c%c\n",c4,c5);

}

在上机前先用人工分析程序,写出应得结果,上机后将二者对照。

三分析与讨论

1下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论成功或失败的原因。

2总结C程序的结构和书写规则。

四思考题

1请写出C语言程序的构成和运行C语言程序的一般步骤。

2编写一个C语言程序,输入a、b、c三个数,输出其中最大者。

试想,如果求四个数中的最大者,则程序该如何编写。

五注意事项

1当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。

2当需要用比较复杂的逻辑表达式时,要避免发生优先级上的错误,可以使用最高优先级的运算符()将其括起来,这样既增加可读性,又不会出现不必要的错误。

 

实验二数据类型、运算符和表达式

一.实验目的:

1.练习使用基本类型的变量进行编程

2.练习使用C的运算符

二.实验内容:

1.实验要求:

熟练使用运算符(%,++,--)

2.分析与设计:

求余运算符要求两个操作数都必须是整数;++和--要看清是先使用还是先自增(减)

3.源代码:

程序1:

取出一个三位整数的各个位,并输出

main()

{intx=123;charc1,c2,c3;

c1=x%10;

c2=x/10%10;

c3=x/100;

printf(“%d,%d,%d\n”,c3,c2,c1);

}

运行结果为:

1,2,3

程序2:

练习自增和自减运算符的使用

#include

main()

{inti,j,m,n;

i=8;j=10;

m=++i;/*第5行*/

n=j++;/*第6行*/

printf("%d,%d,%d,%d\n",i,j,m,n);

}

运行程序,注意i、j、m、n各变量的值;然后分别作以下改动并运行:

⑴将第5、6行改为如下以后再运行:

m=i++;

n=++j;

⑵将程序改为:

#include

main()

{inti,j;

i=8;j=10;

printf("%d,%d\n",i++,j++);/*第5行*/

}

⑶在⑵的基础上,将第5行printf语句改为:

printf("%d,%d\n",++i,++j);

⑷再将printf语句改为:

printf("%d,%d,%d,%d\n",i,j,i++,j++);

⑸将程序改为:

#include

main()

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

i=8;j=10;

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

printf("i=%d,j=%d,m=%d,n=%d\n",i,j,m,n);

}

 

选做题:

一.分析下面程序运行结果产生的原因。

1.

main()

{intx,y;

charc;

x=y=5;

ch=’a’;

printf(“%d,%d,%c”,x++,++y,ch);

}

2

main()

{floatm,n,k;

k=(3.1,m=2.0+2.1);

printf(“%f”,k);

n=(m=3.8,k);

printf(“%f”,n);

}

3.

main()

{inta=2,b=1,c=1,d=6,e=9;

b+=a;printf(“%d”,b);

c*=a;printf(“%d”,c);

d/=a;printf(“%d”,d);

e%=a;printf(“%d”,e);

}

4.

main()

{inta1,a2;

floatb,c;

b=5.425;

c=52.954;

a1=(int)(b+c);

a2=(int)b+(int)c;

printf(“a1=%d,a2=%d”,a1,a2);

}

二.编程题

1.求1+2+3+4+5+6+7+8+9+10的和。

2.利用中间变量,实现两个变量的值互换。

实验三使用输入、输出函数

一.实验目的:

熟练使用格式输出函数printf()和格式输入函数scanf()

二.实验内容:

1.实验要求:

格式输入函数scanf()和格式输出函数printf()的使用

2.分析与设计:

输入函数中的普通字符需要原样输入,并注意分隔符的使用;输出函数中的格式控制符和输出项数要一一对应。

3.源代码:

程序1:

为使得a=1,b=2,c=‘A’,d=5.5,在键盘上如何输入?

#include

main()

{inta,b;

charc;

floatd;

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

scanf(“%c%e\n”,&c,&d);

}

程序在运行时,输入:

a=1b=2A5.5

0

程序2:

判断下面程序的运行结果。

main()

{intx=3,y=2,z=1;

printf(“%d,%d\n”,(++x,y++),z+2);}

运行结果:

2,3

分析得到此结果的原因。

程序3:

以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。

完成以下填空,并把程序调通,写出当输入为45,34.5,A<回车>时程序的运行结果。

#include

main()

{inta;floatb;charc;

scanf("%d,%f,%c",);

printf("a=\n",a);

printf("b=\n",b);

printf("c=\n",c);

}

程序4:

指出以下程序的错误并改正,并上机把程序调通。

#include

main()

{inta;

scanf("%f",a);

printf("a=%f,a);

charc;

c=A;

printf("%f,c)

}

 

选做题:

1.输入一个小写字母,将其改写为大写字母后输出。

2.设inta,b,c;要使得a=3;b=5;c=6;

问该如何在键盘上输入?

并用printf函数输出a,b,c的值。

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

3编程序输出下面的图形

**********

**********

**********

**********

实验四选择结构程序设计

一.实验目的:

1.熟练掌握分支结构if语句及其嵌套

2.掌握分析具体问题的方法

二.实验内容:

1.实验要求:

利用if语句和scanf函数模拟简单的ATM取款机界面

2.分析与设计:

用户先输入密码,密码正确后,可以进行帐户的操作,如查询,取款等。

3.源代码:

模拟ATM取款机界面

#include

main()

{intpassword,op,number=0,count=1000,n=0;

printf("pleaseinputpassword:

");

scanf("%d",&password);

while(password!

=1234)/*有三次输入密码的机会*/

{n++;

if(n==3)

{printf("youhaveinput3,cannotinputagain!

\n");

getch();

return;

}

printf("passworderror!

pleaseinputagain:

");

scanf("%d",&password);

}

loop:

printf("\nwelcome!

Pleasechoiceoneoperate:

(1,2,3)\n");

printf("1:

count\n2:

getmoney\n3:

return\n");

scanf("%d",&op);/*输入一种操作*/

switch(op)

{

case1:

printf("\nyourcountis%d.\n",count);gotoloop;

/*帐户查询*/

case2:

printf("\npleaseinputcountthatyouwanttoget:

");

scanf("%d",&number);

if(number>count||number<0)printf("\nerror");

else{printf("\nnow,youcantakemoney!

");count-=number;}

gotoloop;

/*取款*/

case3:

break;

/*返回*/

default:

printf("\noperateerror!

");gotoloop;

}

}

选做题:

1.从键盘输入学生成绩分数,输出对应的等级。

(100---90分为A,75---89为B,60---74为C,小于60为D)

2.从键盘输入一个字符,如果是小写字母,则输出“small”,如果是大写字母,则输出“big”,如果是数字,则输出“number”,其他字符则输出“other”

3.根据输入的x,输出对应y的值。

 

4.从键盘上输入三个实数,它们分别代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序;如果能构成三角形,求出三角形的面积(取小数2位)。

用下面的数据运行程序,记录程序的输出结果:

a

b

c

类型

三角形面积

1.58

2.37

1.58

3.21

4.25

5.16

2.48

2.48

2.48

2.35

9.28

3.83

【提示】已知三角形边长a、b、c,计算三角形面积s的公式是:

 

实验五循环结构程序设计

一目的和要求

1掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。

2熟悉用while语句,do-while语句和for语句实现循环的方法。

3掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。

4掌握选择结构与循环结构的嵌套。

二实验内容

1程序分析

下面是一个计算e的近似值(使误差小于给定的δ)的程序。

#include

main()

{doublee=1.0,x=1.0,y,delta;

inti=1;

printf("请输入给定的误差:

");

scanf("%lf",&delta);

y=1/x;

while(y>=delta)

{e=e+y;

i++;

x=x*i;

y=1/x;

}

printf("计算结果是:

%12.10lf\n",e);

}

⑴阅读上面的程序,写出程序所依据的计算公式。

⑵当输入的delta是什么值时,能分别使程序按下面的要求运行:

ⅰ不进入循环;

ⅱ只循环一次;

ⅲ只循环两次;

ⅳ进入死循环(程序将永远循环下去)。

ⅴ为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?

⑶原程序中while语句中的y>=delta,分别换成y>delta,y=delta,y

⑷把程序中的while结构改写成do-while结构,再运行程序,说明两种结构的区别。

⑸将程序改成用for循环结构,计算前50项,并运行程序,写出运行结果。

2有一数列:

2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。

#include

main()

{intn,t;

floata=2,b=1,s=0;

for(n=1;n<=10;n++)

{s=s+a/b;

t=a;

a=a+b;

b=t;

}

printf("%f\n",s);

}

要求:

跟踪执行,观察s、t、a、b的变化。

方法:

使用功能键F10单步跟踪执行程序,可以在监视窗口设置要观察的变量或表达式。

 

3计算两个数的最大公约数。

算法:

⑴输入两个整数m、n,并求m除以n的余数k。

⑵当k≠0,将除数n作为被除数m,余数k作为除数n,继续求m除以n的余数k;反复做第⑵步,直到余数为0结束循环。

⑶结束循环后,除数n就是m与n的最大公约数。

请同学们根据算法写出完整的程序,并编译、运行、检查结果的正确性。

三思考题

编写程序:

输入6名学生5门课程的成绩,分别统计出每个学生5门课程的平均成绩。

四、注意事项

1while语句的句法格式及用法。

2for语句的正确使用方法。

注意它的初始值、终止条件及步长的确定。

3当循环不能停止(出现死循环),应该用Ctrl+break中断程序的运行。

 

实验六数组

一实验目的

1掌握一维数组和二维数组的定义、赋值和输入输出的方法;

2掌握字符数组和字符串函数的使用;

3掌握与数组有关的算法(特别是排序算法)

二、实验内容

编程序并上机调试运行。

1调试下列错误程序,使之具有如下功能:

输入12个整数,按每行3个数输出这些整数,最后输出12个整数的平均值。

写出调试过程。

#include

#defineN12

main()

{inti,a[N],av;

for(i=0;i

for(i=0;i

{printf("%d",a[i]);

if(i%3==0)printf("\n");

}

for(i=0;i!

=N;i++)av+=a[i];

printf("av=%f\N",av);

}

上面给出的程序有错误和缺陷,请找出程序中的错误并改正。

【提示】请注意输入提示、变量赋初值、循环结束条件、输出格式等问题。

2编写程序,任意输入10个整数的数列,并按从小到大的顺序进行排序。

10个整数用scanf函数输入。

排序的方法很多,教材P134介绍了冒泡排序法,算法如下:

①定义变量,输入排序数据数n和待排序的n个数据。

②n个数排序要进行n-1遍。

以下是一遍排序(第i遍)的算法:

③设本趟排序中没有交换,即flag=0。

④从下标j=n-1的元素起,到i+1个元素,比较a[j]与a[j-1]:

若a[j]

⑤若没有交换(flag=0),排序完成,退出循环。

⑥输出排序结果。

上述算法的①、⑥在main函数中实现,其余各步调用sort函数完成。

主函数如下:

#include

inta[100];/*外部数组*/

main()

{inti,n;

voidsort(int);/*说明被调函数*/

printf("请输入排序的数据个数n:

");

scanf("%d",&n);

printf("请输入要排序的%d个整数:

",n);

for(i=0;i

sort(n);/*调用sort函数完成排序*/

printf("排序结果:

");

for(i=0;i

printf("\n");

}

请编写sort函数(注意:

函数只有一个形参intn)。

3有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

#include

#defineM3

#defineN4

main()

{intmax,i,j,r,c;

inta[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};

max=a[0][0];

for(i=0;i

for(j=0;j

if(a[i][j]>max){max=a[i][j];r=i;c=j;}

printf("max=%d,row=%d,colum=%d\n",max,r,c);

}

输入并调试、运行程序,记录程序的输出;若将a[0][0]改为1230,程序运行结果有错,应如何修改程序?

4按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。

⑴定义整型变量i、j,字符串s1、s2

⑵输入字符串s1、s2

⑶当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处

⑷当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面

⑸为字符串s1添加结束标志

⑹输出连接后的字符串

三思考题

1将一个数组中的值按逆序重新存放,例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。

2最常用的排序方法除了冒泡排序外,还有选择排序。

程序设计思路:

设有10个元素a[0]~a[9],将a[0]与a[1]~a[9]比较,若a[0]比a[1]~a[9]都小,则不进行交换,即无任何操作。

若a[1]~a[9]中有一个以上比a[0]小,则将其中最小的一个(假设为a[i])与a[0]交换,此时a[0]中存放了10个中最小的数。

第二遍将a[1]与a[2]~a[9]比较,将剩下9个数中的最小者a[i]与a[1]对换,此时a[1]中存放的是10个中第2小的数。

依此类推,共进行9遍比较,a[0]到a[9]就已按由小到大顺序存放。

 

n个数的选择排序的N-S图如下:

定义变量、输入n及数组a各元素

for(i=0;i

k=i

for(j=i+1;j

a[j]

k=j

交换a[k]与a[i]

输出已排序的n个数

用冒泡排序同样的主函数,请根据上面的N-S图编写选择排序函数。

四、注意事项

1在C语言中,数组元素的下标从0开始,最大下标总是比定义的数组长度少1。

2在C语言中,定义数组时

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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