C实验指导书16学时文档格式.docx
- 文档编号:16391555
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:26
- 大小:65.45KB
C实验指导书16学时文档格式.docx
《C实验指导书16学时文档格式.docx》由会员分享,可在线阅读,更多相关《C实验指导书16学时文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
#include<
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运行以下程序,并分析其输出结果
{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;
while(y>
=delta)
{e=e+y;
i++;
x=x*i;
y=1/x;
计算结果是:
%12.10lf\n"
e);
⑴阅读上面的程序,写出程序所依据的计算公式。
⑵当输入的delta是什么值时,能分别使程序按下面的要求运行:
ⅰ不进入循环;
ⅱ只循环一次;
ⅲ只循环两次;
ⅳ进入死循环(程序将永远循环下去)。
ⅴ为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
⑶原程序中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++)
{
%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编写程序,任意输入10个整数的数列,并按从小到大的顺序进行排序。
10个整数用scanf函数输入。
排序的方法很多,教材P134介绍了冒泡排序法,算法如下:
①定义变量,输入排序数据数n和待排序的n个数据。
②n个数排序要进行n-1遍。
以下是一遍排序(第i遍)的算法:
③设本趟排序中没有交换,即flag=0。
④从下标j=n-1的元素起,到i+1个元素,比较a[j]与a[j-1]:
若a[j]<
a[j-1],将a[j]与a[j-1]交换;
并置flag=1。
⑤若没有交换(flag=0),排序完成,退出循环。
⑥输出排序结果。
上述算法的①、⑥在main函数中实现,其余各步调用sort函数完成。
主函数如下:
inta[100];
/*外部数组*/
{inti,n;
voidsort(int);
/*说明被调函数*/
请输入排序的数据个数n:
n);
请输入要排序的%d个整数:
n);
n;
a[i]);
sort(n);
/*调用sort函数完成排序*/
排序结果:
i++)printf("
%6d"
请编写sort函数(注意:
函数只有一个形参intn)。
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添加结束标志
⑹输出连接后的字符串
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;
a[j]<
a[k]
k=j
交换a[k]与a[i]
输出已排序的n个数
用冒泡排序同样的主函数,请根据上面的N-S图编写选择排序函数。
1在C语言中,数组元素的下标从0开始,最大下标总是比定义的数组长度少1。
2在C语言中,定义数组时,其长度必须指定且必须用常量表示。
实验六函数
1掌握定义函数的方法;
2掌握函数实参与形参的对应关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导书 16 学时