C实验指导书16学时Word格式.docx

上传人:b****1 文档编号:866366 上传时间:2023-04-29 格式:DOCX 页数:33 大小:186.19KB
下载 相关 举报
C实验指导书16学时Word格式.docx_第1页
第1页 / 共33页
C实验指导书16学时Word格式.docx_第2页
第2页 / 共33页
C实验指导书16学时Word格式.docx_第3页
第3页 / 共33页
C实验指导书16学时Word格式.docx_第4页
第4页 / 共33页
C实验指导书16学时Word格式.docx_第5页
第5页 / 共33页
C实验指导书16学时Word格式.docx_第6页
第6页 / 共33页
C实验指导书16学时Word格式.docx_第7页
第7页 / 共33页
C实验指导书16学时Word格式.docx_第8页
第8页 / 共33页
C实验指导书16学时Word格式.docx_第9页
第9页 / 共33页
C实验指导书16学时Word格式.docx_第10页
第10页 / 共33页
C实验指导书16学时Word格式.docx_第11页
第11页 / 共33页
C实验指导书16学时Word格式.docx_第12页
第12页 / 共33页
C实验指导书16学时Word格式.docx_第13页
第13页 / 共33页
C实验指导书16学时Word格式.docx_第14页
第14页 / 共33页
C实验指导书16学时Word格式.docx_第15页
第15页 / 共33页
C实验指导书16学时Word格式.docx_第16页
第16页 / 共33页
C实验指导书16学时Word格式.docx_第17页
第17页 / 共33页
C实验指导书16学时Word格式.docx_第18页
第18页 / 共33页
C实验指导书16学时Word格式.docx_第19页
第19页 / 共33页
C实验指导书16学时Word格式.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C实验指导书16学时Word格式.docx

《C实验指导书16学时Word格式.docx》由会员分享,可在线阅读,更多相关《C实验指导书16学时Word格式.docx(33页珍藏版)》请在冰点文库上搜索。

C实验指导书16学时Word格式.docx

stdio.h>

voidmain()

{printf("

Hello,World!

\n"

);

printf("

WelcometotheClanguageworld!

Everyonehasbeenwaitingfor.\n"

}

⑸编译:

用“编译”菜单的“编译”命令项对源文件sy11.cpp进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;

这时候要修改源程序、保存后重新编译。

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

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

⑹调试:

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

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

⑺运行:

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

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

运行结果如下:

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

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

main()

{charc1,c2;

/*第2行*/

c1=97;

c2=98;

/*第3行*/

printf("

%c%c\n"

c1,c2);

在此基础上:

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

printf("

%d%d\n"

c1,c2);

⑵将第2行改为:

intc1,c2;

再次运行,并分析结果。

⑶再将第3行改为:

c1=305;

c2=340;

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

2输入并运行下面的程序

{charc1='

a'

c2='

b'

c3='

c'

c4='

\101'

c5='

\116'

;

a%cb%c\tc%c\tabc\n"

c1,c2,c3);

\t\t\b%c%c\n"

c4,c5);

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

三分析与讨论

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

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

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

四思考题

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

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

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

五注意事项

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

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

实验二顺序结构与输入/输出方法

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

2掌握C语言中赋值语句的使用。

3掌握C语言中各种数据的输入/输出方法,能正确使用各种格式转换符。

4理解C语言程序的顺序结构。

上机调通以下程序。

1输入下面的程序

{inti,j,m,n;

i=8;

j=10;

m=++i;

/*第5行*/

n=j++;

/*第6行*/

%d,%d,%d,%d\n"

i,j,m,n);

运行程序,注意i、j、m、n各变量的值;

然后分别作以下改动并运行:

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

m=i++;

n=++j;

⑵将程序改为:

{inti,j;

%d,%d\n"

i++,j++);

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

printf("

++i,++j);

⑷再将printf语句改为:

i,j,i++,j++);

⑸将程序改为:

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

m+=i++;

n-=--j;

i=%d,j=%d,m=%d,n=%d\n"

2运行以下程序,并分析其输出结果

{shorti;

i=-2;

\ni:

dec=%d,oct=%o,hex=%x,unsigned=%u\n"

i,i,i,i);

【注意】在VC++6.0中,short和int类型的数据在内存中占用4个字节。

3按格式要求输入、输出数据。

{inta,b;

floatx,y;

charc1,c2;

scanf("

a=%d,b=%d"

&

a,&

b);

%f,%e"

x,&

y);

%c%c%c"

c1,&

c2);

/*第8行*/

a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n"

a,b,x,y,c1,c2);

运行该程序,按如下方式在键盘上输入数据:

a=3,b=7

85,71.82

aA

请同学们写出输出的结果。

【思考】程序第8行中,为什么变量c1要输入两次?

4运行以下程序,并分析其输出结果

main(){floatf;

f=3.1415;

\n%f,%4.3f,%5.3f,%-10.3f,%10.3f\n"

f,f,f,f,f);

floatc,d;

a=61;

b=62;

c=31.5;

d=-68.87;

c1='

c2='

A'

a=%d,b=%d\n"

a,b);

c=%f,d=%f\n"

c,d);

c=%e,d=%e\n"

c1=%c,%c\n"

【注意】在VC++6.0中,实数的指数形式是:

±

X.XXXXXXe±

XXX

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

完成以下填空,并把程序调通,写出当输入为45,34.5,A<

回车>

时程序的运行结果。

{inta;

floatb;

charc;

%d,%f,%c"

);

a=\n"

a);

b=\n"

b);

c=\n"

c);

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

%f"

a=%f,a);

c=A;

%f,c)

三思考题

1编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。

并思考以下问题:

⑴变量c1,c2应定义为字符型或整型?

还是二者皆可?

⑵要求输出c1和c2的ASCII码,应如何处理?

用putchar函数还是printf函数?

⑶整型变量和字符型变量是否在任何情况下都可以互相代替?

2设圆半径r=2,圆柱高h=3,求圆周长,圆柱底面积,圆柱体积。

用scanf输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。

实验三逻辑运算和选择结构程序设计

1掌握C语言表示逻辑量的方法(0代表“假”,1代表“真”);

2学会正确使用逻辑运算符和逻辑表达式;

3熟练掌握if语句和switch语句。

二实验内容

1已知三个数a,b,c,找出最大值放在max中。

{inta,b,c,max;

请输入3个整数(中间用逗号分开):

"

%d,%d,%d"

b,&

c);

if(a>

=b)max=a;

elsemax=b;

if(c>

max)max=c;

max=%d\n"

max);

若输入下列数据,分析程序的执行顺序并写出输出结果。

序号

输入的3个整数a、b、c

输出max

1

1,2,3

2

1,3,2

3

2,1,3

4

2,3,1

5

3,1,2

6

3,2,1

2输入某学生的成绩,经处理后给出学生的等级,等级如下:

90分以上(包括90):

A80~90分(包括80):

B

70~80分(包括70):

C60~70分(包括60):

D

60分以下:

E

方法一:

用嵌套的if语句

#include"

stdio.h"

{intscore;

chargrade;

请输入学生成绩:

%d"

score);

if(score>

100||score<

0)printf("

\n输入成绩错误!

else{if(score>

=90)grade='

elseif(score>

=80)grade='

B'

elseif(score>

=70)grade='

C'

=60)grade='

D'

elsegrade='

E'

\n成绩等级是%c\n"

grade);

}

输入测试数据,调试程序。

测试数据要覆盖所有路径,注意临界值,例如此题中100分,60分,0分以及小于0和大于100的数据。

如果稍不注意就会出现小的程序缺陷。

方法二:

用switch语句

分析:

switch语句是用于处理多分支的语句。

注意,case后的表达式必须是一个常量表达式,所以在用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。

所有A(除100以外)、B、C、D类的成绩的共同特点是十位数相同,此外都是E类。

则由此可把score除十取整,化为相应的常数。

请同学们自己根据分析写出完整的程序段,并编译、运行、查看结果。

1有一函数:

x(-5<

x<

0)

y=x-1(x=0)

x+1(0<

10)

要求输入x的值,输出y的值。

分别用:

⑴不用嵌套的if语句;

⑵用嵌套的if语句;

⑶用switch语句编写程序。

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

如果能构成三角形,求出三角形的面积(取小数2位)。

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

a

b

c

类型

三角形面积

1.58

2.37

3.21

4.25

5.16

2.48

2.35

9.28

3.83

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

四注意事项:

1if-else语句书写时应采用分层缩进的格式。

2switch语句的句法格式。

实验四循环结构程序设计

一目的和要求

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

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

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

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

1程序分析

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

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

inti=1;

请输入给定的误差:

%lf"

delta);

y=1/x;

1.01111

while(y>

=delta)e=1+1i=2x=2y=1/2

{e=e+y;

2+1/232*31/6

i++;

2+1/2+1/642*3*41/24

x=x*i;

2++1/(n-1)!

nn!

1/n!

y=1/x;

计算结果是:

%12.10lf\n"

e);

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

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

ⅰ不进入循环;

ⅱ只循环一次;

>

0.5<

=1

ⅲ只循环两次;

=0.5>

1/6

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

<

=0

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

⑶原程序中while语句中的y>

=delta,分别换成y>

delta,y=delta,y<

delta,y<

=detax观察程序运行将会有什么变化。

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

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

2有一数列:

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

{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;

%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个整数的平均值。

写出调试过程。

#defineN12

{inti,a[N],av;

for(i=0;

i<

N;

i++)scanf("

a[i]);

i++)

{printf("

if(i%3==0)printf("

for(i=0;

i!

=N;

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

av=%f\N"

av);

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

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

2编写程序,输入9个整数到3×

3二维数组,输出:

1231123

4564556

7897899

3有一个3×

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

#defineM3

#defineN4

{intmax,i,j,r,c;

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

max=a[0][0];

M;

for(j=0;

j<

j++)

if(a[i][j]>

max){max=a[i][j];

r=i;

c=j;

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添加结束标志

⑹输出连接后的字符串s1[4]=s2[0]

S1

A

C

d

/0

S1[0]s1[1]s1[2]s1[3]s1[4]

S2

F

H

I

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各元素

n-1;

k=i

for(j=i+1;

n;

a[j]<

a[k]

k=j

交换a[k]与a[i]

输出已排序的n个数

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

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

2在C语言中,定义数组时,其长度必须指定且必须用常量表示。

实验六函数

1掌握定义函数的方法;

2掌握函数实参与形参的对应关系以及“值传递”的方式;

3掌握函数的嵌套调用和递归调用的方法;

4掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

1编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。

【提示】设有两个正整数m和n

⑴实验五介绍了求最大公约数的算法,下面介绍用递归求m和n的最大公约数h的方法。

设hcf(intm,intn)是用来求m和n的最大公约数h函数,k=m%n,则:

⑵若最大公约数为h,则最小公倍数l=m*n/h。

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2