《C语言程序设计》实验手册《C语言程序设计》实验课程简介课程名称:C语言程序设计实验课程性质:专业必修课课程属性:专业必修课学时学分:学时32 学分1开课实验室:软件实验室面向专业:网络工程、软件工程、计算机科学与技术一、课程的任务和基本要求C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。
本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。
C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。
通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验项目【实验一】最简单的C程序---顺序程序设计【实验二】逻辑运算和判断选取控制【实验三】循环结构程序设计(一)【实验四】循环结构程序设计(二)【实验五】函数【实验六】数组(一)【实验七】数组(二)【实验八】指针【实验九】结构体、共用体和文件【实验十】C程序综合性实验三、有关说明1、与其它课程和教学环节的联系:先修课程:计算机文化后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程2、教材和主要参考书目:(1)教材:《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。
(2)主要参考书目:《C语言程序设计》谭浩强主编,清华大学出版社,2003年。
三、实验内容实验一最简单的C程序---顺序程序设计(验证性实验 2学时)(一)、实验目的1.熟悉win-tc程序运行环境2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法3.掌握C语言中使用最多的一种语句——赋值语句4.掌握数据的输入输出方法,能正确使用各种格式控制符(二)、实验内容1.写出下列程序的运行结果(1)#include <stdio.h>void main(){printf(“*****************\n”);printf(“This is a c program. \n”);printf(“****************\n”);}运行结果及分析:运行结果为:Printf函数语句表示输出引号内的字符串,最后的\n表示换行,将程序中的\n去掉后,运行结果及分析:运行结果为:去掉\n后不换行连续显示(2)#include <stdio.h>void main(){int a=100,b=20,sum,sb;sum=a+b;sb=a/b;printf("sum=%d,sb=%d",sum,sb);}运行结果及分析:sum=100+20=120;sb=100/20=5.(3)#include <stdio.h>void main( ){char c1,c2;c1=97;c2=98;printf("%c ,%c\n",c1,c2);printf("%d,%d\n",c1,c2);printf("%c %c\n",c1+1,c2+2);}运行结果及分析:运行结果为:声明c1,c2是字符型常量,第一个输出函数以字符格式输出c1,c2,97,98对应的是a,b的ASCII代码,所以输出的是“a,b”之后换行,第二个输出函数表示已十进制数形式输出c1,c2,故输出结果就是97.98,换行,第三个输出函数中表示以字符函数形式输出c1+1,c2+2,是b,d 的ASCII代码值。
(4)#include <stdio.h>void main (){int i=8,j=10,m,n;m=++i;n=j++;printf("%d,%d,%d,%d",i,j,m,n);}运行结果及分析:运行结果为:m=++i,当++运算符在前面时,先自增再将值赋给了m。
而++在后面时是先将值赋给了n再自增。
再将本程序的第3行改为m=i++;n=++j;运行结果及分析:运行结果分析同上2.程序填空任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。
#include <stdio.h>main(){int b1,b2,b3,b4,b5;① x;Scanf( “ %ld ”,&x);b5= ② ;b4=(x/1000)%10;b3= ③ ;b2=(x/10)%10;b1= ④ ;printf(“the number is ⑤ \n”,x);printf(“its bit is:%d,%d,%d,%d,%d\n”,b5,b4,b3,b2,b1);}程序分析:①long int②x/10000③(x/100)%10④ x%10⑤ %ld3.程序改错(注意:题中的编号为行序号,并非程序本身)计算任意一个半径为r的圆的面积和周长(结果保留两位小数)(1)#include <stdio.h>(2)main(){(3)float r; p=3.14,c,area;(4)printf(“input r:”);(5)scanf(“%f”, r);(6)c=2p*r;(7)area=p*r*r(8)printf(“c=%-7.2f,area=%-7.2f”,c,area);(9)}错误语句的行号:(3)改正后的语句全行:float r,p=3.14,area;错误语句的行号: (5)改正后的语句全行: scanf(“%f”,&r);错误语句的行号: (6)改正后的语句全行:c=2*p*r;错误语句的行号: (7)改正后的语句全行: area=p*r*r;改错分析:实验二逻辑运算和判断选取控制(验证性实验 2学时)(一)、实验目的1.了解逻辑量在C语言中的表示方法2.学会使用逻辑运算符和逻辑表达式3.熟练掌握if语句和switch语句(二)、实验内容1.写出下列程序的运行结果(1)#include <stdio.h>void main( ){int a,b,x=10,y=9;a=(--x == y++)? --x : ++y;b= y;printf(“%d,%d\n”,a,b);}运行结果及分析:运行结果为--x先自减=9=y,所以逻辑运算结果为1,故取值取--x=8,y只进行了一次自增运算,所以y=9. (2)#include <stdio.h>void main(){int a=2,b=-1,c=2;If(a<b)if(b<0)c=0;else c+=1;printf(“%d\n”,c);}运行结果及分析:运行结果为:由于第一个if选择的a<b条件不成立故后面的语句统统不运行,所以c=2。
(3)#include <stdio.h>void main( ){int a=0,b=0,c=0;if(++a > 0 || ++b > 0) ++c;printf(“\n a=%d,b=%d,c=%d”,a,b,c);}运行结果及分析:运行结果为:先判断++a>0,故++b不再运算,条件成立,计算++c。
故a=1,b=0,c=1。
(4)#include <stdio.h>void main(){int x=-1;switch (x){default: printf(“a”);case 1: printf(“b”);case 2: printf(“c”);}}运行结果及分析:运行结果为:由于x=-1,所以运行default后面的语句,由于没有break语句,所以继续运行,所以三个语句都运行了。
在case 1:printf(“b”);后加上break;语句,结果如何?修改程序并上机调试。
运行结果及分析:运行结果为:分析同上2.程序填空输入两个整数,从用户处获取这两个整数,显示其中较大的数,在其后跟随“is larger”。
如果这两个数相等,显示“These numbers are equal.”。
请在_____内填入正确内容。
#include <stdio.h>void main( ){int a,b;printf(“please input two numbers, a, b! “);scanf(“%d%d”,&a,&b);if( ① ) printf(“%d is larger”, a );else if(_______②____________) printf(“These numbers are equal”);else ___________ ③_____________________;}填空①:a>b填空②:a==b填空③:printf(“%d is larger”, b);结果分析:显示较大的数字3.编写程序(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。
程序清单:#include <stdio.h>int max(int x,int y,int z);int min(int x,int y,int z);main(){int a,b,c,d,e,max1,min1;printf("Please input five intergers:\n");scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);max1=max(a,b,c);max1=max(max1,d,e);min1=min(a,b,c);min1=min(min1,d,e);printf("These five numbers are:%d,%d,%d,%d,%d\n",a,b,c,d,e);printf("max=%d\nmin=%d",max1,min1);getch();}int max(int x,int y,int z){int p;p=x>y?x:y;p=p>z?p:z;return(p);}int min(int x,int y,int z){int p;p=x<y?x:y;p=p<z?p:z;return(p);}程序编写注意事项:(2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。
(提示:使用求模运算符。
偶数是2的倍数。
任何2的倍数除以2时,余数均为零。
)程序清单:#include <stdio.h>main(){long int a;printf("Please input a integer:\n");scanf("%ld",&a);if(a%2==0)printf("\n\n%ld:This is an even number\n");elseprintf("\n\n%ld:This is a odd number\n");getch();}程序编写注意事项:(3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、最小数和最大数。