C语言程序设计实验指导书沈岚岚吕元长编写桂林电子科技大学信息科技学院2012.03前言上机实验的目的和要求一上机实验的目的上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。
学习程序语言,上机实验的目的如下:1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。
2 了解和熟悉C语言程序开发环境。
熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。
3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。
要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。
4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。
多动脑筋思考,将会对你有很大帮助。
二上机实验前的准备工作1 了解所用的计算机系统的性能和使用方法;2 复习和掌握与本实验有关的教学内容;3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;4 准备好调试和运行时所需的数据。
三上机实验的步骤1 调出C语言编译系统,进入C语言工作环境;2 输入自己编制好的程序;3 检查输入是否有错,及时更正;4 进行编译和连接;5 运行程序,分析结果。
四、实验结束,整理实验报告实验报告应包括以下内容:1 上机题目;2 程序清单;3 运行结果;4 对结果的分析和本次获得的经验和体会。
实验一 C语言程序初步数据类型、运算符和表达式一实验目的1 掌握C语言程序的书写格式和C语言程序的结构,初步了解C源程序的特点。
2 掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。
3 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对他们赋值的方法。
4掌握不同的类型数据之间赋值的规律。
二实验内容1 输入并运行下面的程序,运行后记录并分析结果。
#include <stdio.h> /* 第1行 */main(){ char c1,c2; /* 第3行 */c1=97;c2=98; /* 第4行 */printf ("%c %c\n",c1,c2); /* 第5行 */}在此基础上:⑴在程序最后增加一个语句,再运行,并分析结果。
printf ("%d %d\n",c1,c2); /* 第6行 */⑵将第3行作如下修改后运行程序,并分析结果。
int c1,c2; /* 第3行 */⑶在⑵的基础上将第4行如下修改后运行程序,并分析结果。
c1=305;c2=340; /* 第4行 */2 输入并运行下面的程序,运行后记录并分析结果。
#include <stdio.h>main(){ printf("123456789012345\n");printf(" ab c\t de\r f\tg\n");printf(" h\ti\b\bj k\n");printf("abc\t\101d\\e\x62Q\bg\n");}3 分析下面的程序,写出应得结果。
#include <stdio.h>main(){ char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\t\b%c%c\n",c4,c5);}然后上机输入程序并运行,记录输出结果,并与分析的结果作对照。
三思考题1 总结运行C程序的一般步骤。
2 编写一个C程序,输入a、b、c三个数,输出其中最大者;如果求四个数中的最大者,则程序该如何修改。
四注意事项当程序在编译时发现很多错误,此时应从上到下逐一改正;或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
实验二顺序结构与输入/输出方法一实验目的1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算符的使用。
2 掌握C语言中赋值语句的使用。
3 掌握C语言中各种数据的输入/输出方法,能正确使用基本格式符。
二实验内容1 输入下面的程序:#include <stdio.h>main(){ int i,j,m,n;i=8;j=10;printf("%d,%d,%d,%d\n",i,j,m,n); /* 第5行 */m=++i; n=j++; /* 第6行 */printf("%d,%d,%d,%d\n",i,j,m,n); /* 第7行 */}运行程序,分析第5行和第7行输出的不同。
⑴将第6行按如下修改以后再运行,分析第5行和第7行输出的不同。
m=i++; n=++j; /* 第6行 */⑵在程序最后增加两行,记录并分析该行的输出。
i=j=8; /* 第8行 */printf("%d,%d,%d,%d\n",i,++i,j,j++); /* 第9行 */2 运行以下程序,并分析输出结果#include <stdio.h>main(){ int a=-2; long b; float c;b=20000+20000; c=1.23e-1;printf("a=%d,%3d,%-3d,b=%Ld\n",a,a,a,b);printf("a=%o,%x,%u\n",a,a,a);printf("d=%f,%8.2f,%.2f\n",c,c,c);printf("d=%e,%8.2e,%g\n",c,c,c);printf("%c,%s,",'\072',"China");printf("|-%5.2s|%5.2s|\n","China","China");}3 按格式要求输入、输出数据。
#include <stdio.h>main(){ int a,b; float x,y; char c1,c2;scanf("a=%d,b=%d",&a,&b);scanf("%f,%e",&x,&y);scanf("%c%c%c",&c1,&c1,&c2); /* 第8行 */printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);}运行该程序,按如下方式在键盘上输入数据,写出输出的结果。
a=3,b=785,71.82aA【思考】程序第8行中,为什么变量c1要输入两次?4 以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。
完成以下填空,并把程序调通,写出当输入为45,34.5,A<回车>时程序的运行结果。
#include <stdio.h>main(){ int a; float b; char c;scanf("%d,%f,%c", );printf("a= \n",a);printf("b= \n",b);printf("c= \n",c);}5 指出以下程序的错误并改正,并上机把程序调通,记录输出的结果#include <stdio.h>main(){ int a;scanf("%f",a);printf("a=%f, a);char c;c=A;printf("%f,c)}6 编写根据圆柱体半径r,圆柱高h,求圆柱底周长l,底面积s,圆柱体积v的程序。
要求用scanf输入数据,用printf输出计算结果,小数点后取3位数字。
键盘输入半径r为2.14,高h为3.48,记录程序运行后的输出结果。
三思考题编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf 函数输出这两个字符。
并思考以下问题:⑴变量c1,c2应定义为字符型或整型?还是二者皆可?⑵要求输出c1和c2的ASCII码,应如何处理?用putchar函数还是printf函数?⑶整型变量和字符型变量是否在任何情况下都可以互相代替?实验三逻辑运算和选择结构程序设计一实验目的1 掌握C语言表示逻辑量的方法(0代表“假”,1代表“真”);2 学会正确使用逻辑运算符和逻辑表达式;3 熟练掌握if语句和switch语句。
二实验内容1 已知三个整数a,b,c,找出最大值放在max中。
#include <stdio.h>main(){ 定义整数变量a,b,c,max;键盘输入3个整数a,b,c;在a,b中间求出较大数max(如果a>=b,则max=a;否则max=b);c与max比较,如果c>max,则max=c;输出最大数max;}2 输入某学生的成绩,经处理后给出学生的等级,等级如下:90分以上(包括90):A 80~90分(包括80):B 70~80分(包括70):C60~70分(包括60):D 60分以下:E方法一:用嵌套的if语句#include "stdio.h"main(){ 定义整数变量:成绩score,字符型变量:等级grade;输入学生成绩score;如果score>100或score<0,则输出信息:“输入成绩错误!”;否则 { 如果score>=90,则等级grade='A';否则如果score>=80,则等级grade='B';否则如果score>=70,则等级grade='C';否则如果score>=60,则grade='D';否则grade='E';输出成绩等级grade;}}输入测试数据,调试程序。
测试数据要覆盖所有路径,注意临界值,例如此题中100分,60分,0分以及小于0和大于100的数据。