c语言实验报告.docx
- 文档编号:3989392
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:72
- 大小:61.76KB
c语言实验报告.docx
《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(72页珍藏版)》请在冰豆网上搜索。
c语言实验报告
师大学计算机科学学院
《C语言程序设计》
实
验
手
册
2012年2月
年级:
2011级
专业:
电子商务
班级:
04班
:
罗桂清
学号:
2009110438
指导教师:
廖雪花
《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
voidmain()
{
printf(“*****************\n”);
printf(“Thisisacprogram.\n”);
printf(“****************\n”);
}
运行结果及分析:
运行结果:
*****************
Thisisacprogram
*****************
分析:
1.c程序中的#include
2.一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
3.这个程序中的prinft函数是用来显示输出的,这三条命令全都会显示输出。
将程序中的\n去掉后,运行结果及分析:
运行结果:
************************Thisisaprogram***************************
分析:
1.一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
2.c程序支持一些特殊的反斜杠字符常量,这些常量常用于输出函数中,\n是指换行输出,所以将\n去掉后,printf中的三条语句就不会换行输出,只显示在一排。
(2)#include
voidmain()
{
inta=100,b=20,sum,sb;
sum=a+b;
sb=a/b;
printf("sum=%d,sb=%d",sum,sb);
}
运行结果及分析:
运行结果:
sum=120.sb=5
分析:
1.这是一个关于数的简单加法计算和除法计算并显示出结算结果的c程序;一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
2.用int将变量定义成了整型变量;
3.在定义变量时就将a和b初始化了值用于后面计算;
4.将a和b的和赋值到了sum中,将a和b的商赋值到了sb中,并显示输出;
5.%d是指输出的时候是输出整数型
(3)#include
voidmain()
{
charc1,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);
}
运行结果及分析:
运行结果:
ab
97,98
c,d
分析:
1.一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
2.用char将c1和c2定义成字符变量,并给其赋值;所以;
3.用printf("%c,%c\n",c1,c2)输出c1和c2所对应的字符,而97、98所对应的ASCII值是a和b
4.用printf("%d,%d\n",c1,c2)输出所对应的值;
5.printf("%c%c\n",c1+1,c2+2)是指将c1和c2中的值加上1和2后所对应的字符值输出。
(4)#include
voidmain()
{
inti=8,j=10,m,n;
m=++i;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行结果及分析:
运行结果:
9,11,9,10
分析:
1.一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
2.用int将i,j,m,n定义成整型变量;
3.m=++i是指将i加1后赋值给m和i,n=j++是指先将j的值赋给n,然后j=j+1;
4.用printf("%d,%d,%d,%d",i,j,m,n)显示输出各变量所对应的值。
再将本程序的第3行改为m=i++;n=++j;
运行结果及分析:
运行结果:
9,11,8,11
分析:
1.一个c程序中必须只能有一个main函数,voidmain()是指子最后不给程序返回任何值;
2.用int将i,j,m,n定义成整型变量;
3.m=i++是指先将i的值赋给m,然后i=i+1的值;n=j++是指将j+1的值赋给j和m;
4.用printf("%d,%d,%d,%d",i,j,m,n)显示输出各变量所对应的值。
2.程序填空
任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。
#include
main()
{
intb1,b2,b3,b4,b5;
longintx;
Scanf(“%ld”,&x);
b5=(x/10000)%10;
b4=(x/1000)%10;
b3=(x/100)%10;
b2=(x/10)%10;
b1=x%10;
printf(“thenumberis%ld\n”,x);
printf(“itsbitis:
%d,%d,%d,%d,%d\n”,b5,b4,b3,b2,b1);
}
程序分析:
1.由于此程序要输出一个五位数,所以应将变量的类型定义成longint,以免超出围后导致乱码输出;
2.scanf函数用于键盘输入,此命令将用户输入的值赋给x;
3.将输入的五位数的每一位的值通过运算公式转换成数,并用prinft函数显示输出。
3.程序改错(注意:
题中的编号为行序号,并非程序本身)
计算任意一个半径为r的圆的面积和周长(结果保留两位小数)
(1)#include
(2)main()
{
(3)floatr;p=3.14,c,area;
(4)printf(“inputr:
”);
(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)
改正后的语句全行:
floatr,p=3.14,c,area;
错误语句的行号:
(5)
改正后的语句全行:
scanf(“%f”,&r);
错误语句的行号:
(6)
改正后的语句全行:
c=2*p*r;
错误语句的行号:
(7)
改正后的语句全行:
area=p*r*r;
改错分析:
1.在c程序中,一个语句中声明多个变量是需要用“,”隔开;
2.用scnf函数时,变量前面必须加操作符&,指明该变量的地址;
3.乘法表示要用*号表示;
4.每一个执行语句结束后必须用分号“;”结束。
实验二逻辑运算和判断选取控制
(验证性实验2学时)
(一)、实验目的
1.了解逻辑量在C语言中的表示方法
2.学会使用逻辑运算符和逻辑表达式
3.熟练掌握if语句和switch语句
(二)、实验容
1.写出下列程序的运行结果
(1)#include
voidmain()
{
inta,b,x=10,y=9;
a=(--x==y++)?
--x:
++y;
b=y;
printf(“%d,%d\n”,a,b);
}
运行结果及分析:
运行结果:
8,10
分析:
1.此程序是关于逻辑运算符、递增和递减运算符以及条件运算符的应用;
2.voidmain()是指程序结束后不返回任何值;
3.inta,b,x=10,y=9;是定义int类型的整数变量及给想x和y初始化值;
4.a=(--x==y++)?
--x:
++y;是指当x-1的值等于y的值时x=x-1,否则x=++y,因为—x=9=y,所以条件成立,a的值就等于—x,而在前面的运算中x=9、y=10,因此—x=8;b=y=9;
5.printf函数显示输出所运算出来的结果。
(2)#include
voidmain()
{
inta=2,b=-1,c=2;
If(a
if(b<0)c=0;
elsec+=1;
else
printf(“%d\n”,c);
}
运行结果及分析:
运行结果:
2
分析:
1.此程序时关于if函数和c+=1类型的复合函数语句的应用;
2.当if条件成立时就执行if下面的语句,不成立时则直接执行else语句,此程序中的if(a
3.c+=1;是指c=c+1,
(3)#include
voidmain()
{
inta=0,b=0,c=0;
if(++a>0||++b>0)++c;
printf(“\na=%d,b=%d,c=%d”,a,b,c);
}
运行结果及分析:
运行结果:
a=1,b=0,c=1;
分析:
1.此程序是关于if函数和递增运算符的应用;
2.inta=0,b=0,c=0;是定义整形变量并给其赋值;
3.if(++a>0||++b>0)++c;是值当++a>0和++b>0同时满足时,执行后面的++才,因为前面条件满足,所以执行++c;因此a=1,c=1,而因为在逻辑条件成立时,值进行前面的运算,所以b还是等于0;
4.Printf输出运算结果。
(4)#include
voidmain()
{
intx=-1;
switch(x)
{
default:
printf(“a”);
case1:
printf(“b”);
case2:
printf(“c”);
}
}
运行结果及分析:
运行结果:
abc
分析:
1.此程序是关于switch语句的应用,在C语言中它经常跟Case一起使用,是一个判断选择代码。
其功能是控制业务流程流转的;
2.voidmain()是指程序结束后不返回任何值;intx=-1,是指定义整形变量并给其赋值;
3.在switch()开始时,从default处开始执行,输出a,在往下执行,不满足case1,输出b,再执行case2,也不满足,因此输出c。
在case1:
printf(“b”);后加上break;语句,结果如何?
修改程序并上机调试。
运行结果及分析:
运行结果:
ab
分析:
1.此程序是关于switch语句的应用,在C语言中它经常跟Case一起使用,是一个判断选择代码。
其功能是控制业务流程流转的;
2.voidmain()是指程序结束后不返回任何值;intx=-1,是指定义整形变量并给其赋值;
3.在switch()开始时,从default处开始执行,输出a在往下执行,不满足case1出c.
在遇到break时退出执行。
2.程序填空
输入两个整数,从用户处获取这两个整数,显示其中较大的数,在其后跟随“islarger”。
如果这两个数相等,显示“Thesenumbersareequal.”。
请在_____填入正确容。
#include
voidmain()
{
inta,b;
printf(“pleaseinputtwonumbers,a,b!
“);
scanf(“%d%d”,&a,&b);
if(a>b)printf(“%dislarger”,a);
elseif(______a=b________)printf(“Thesenumbersareequal”);
else_____printf(“%dislarger”,b);
}
填空①:
a>b
填空②:
__a=b__
填空③:
_printf(“%dislarger”,b);
结果分析:
运行结果:
5islarger
分析:
1.此程序涉及到了scanf键盘输入和if条件语句的应用;
2.scanf(“%d%d”,&a,&b)指用户输入两个数保存到a和b中;
3.if(a>b)printf(“%dislarger”,a);
elseif(______a=b________)printf(“Thesenumbersareequal”);
else_____printf(“%dislarger”,b);指当a>b成立时输出aislarger,若a=b时输出Thesenumbersareequal,若前面都不成立,a
3.编写程序
(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。
程序清单:
#include
voidmain()
{
intmax,min,x,n;
printf("pleaseinputthefirstnumber:
");
scanf("%d",&x);
max=min=x;
for(n=2;n<=5;n++)
{
printf("pleaseinputthe%dnumber:
",n);
scanf("%d",&x);
if(x>max){max=x;continue;}
if(x } printf("thebiggestnumberis: %d;thesmallestnumberis: %d.\n",max,min); getch(); } 程序编写注意事项: 1.此程序要连续输入五个数,可用for循环输出五条printf函数; 2.五个数排列大小,在输入第一个数的时候这个数既是最大数也是最小数,在之后没输入一个是数的时候就与前一个数进行比较,大的储存在max里,小的话就存在min里,直到第五个数比较完后输出结果,printf("pleaseinputthe%dnumber: ",n); scanf("%d",&x); if(x>max){max=x;continue;} if(x (2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。 (提示: 使用求模运算符。 偶数是2的倍数。 任何2的倍数除以2时,余数均为零。 ) 程序清单: #include voidmain() { intn; printf("pleaseinputanumber"); scanf("%d",&n); if(n%2==0) printf("Thisnumberisevennumber"); else printf("Thisnumberisoddnumber"); getch(); } 程序编写注意事项: 1.键盘输入函数不能丢掉位置控制符号&; 2.%是模运算符,取两数相处的余数; 3.判断是奇数还是偶数要用条件运算符if。 。 else语句。 (3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、最小数和最大数。 (用if语句)屏幕中的对话容如下所示: Inputthreedifferentintegers: 132714 Sumis54 Averageis18 Productis4914 Smallestis13 Largestis27 程序清单: #include voidmain() { inta,b,c,m,n; printf("Inputthreedifferentintegers: \n"); printf("Inputfirstnumber: "); scanf("%d,",&a); printf("Inputscendnumber: "); scanf("%d,",&b); printf("Inputthirdnumber: "); scanf("%d,",&c); printf("Sumis%d\n",a+b+c); printf("Averageis%d\n",(a+b+c)/3); printf("Productis%d\n",a*b*c); if(a>b&&a>c)m=a; elsem=b; if(b>c)m=b; elsem=c; printf("Maxis%d\n",m); if(a elsen=b; if(b elsen=c; printf("Minis%d\n",n); getch(); } 程序编写注意事项: 1.函数要在main函数中进行定义,然后用scanf函数给定义好的三个变量赋值; 2.对函数进行算术运算是要用c语言中特定的运算符,乘号用*表示,除号用/表示,括号代表优先级运算; 3.比较三个数大小的时候要用if..else条件函数进行比较; 4.如果要在一条语句中显示,要注意c语言中的运算顺序。 实验三循环结构程序设计 (一) (验证性实验2学时) (一)、实验目的 1.熟悉用while语句、do-wile语句和for语句实现循环的方法 2.掌握在程序设计中用循环方法实现的算法 (二)、实验容 1.写出下列程序的运行结果 (1)#include voidmain() { intcount=1; while(count<=10) { count++; printf(“%s\n”,count%2? “****”: “++++++++++”); } } 运行结果及分析: 运行结果: ++++++++++ ****** ++++++++++ ****** ++++++++++ ****** ++++++++++ ****** ++++++++++ ****** 分析: 1.while是入口控制循环语句,先计算测试条件,如果该条件为真,那么就运行其循环体语句,运行完后,再次计算测试条件,如果仍为真,则继续计算循环体,直到条件为假,所以在本程序中,直到将count++运行到count等于10时停止运算; 2.在prinrf语句中,count%2是对count进行求模运算,并用? 条件语句,当count%2时输出******,否则就输出++++++++++。 因为count一直循环到10,所以就各出了五次。 (2)#include voidmain() { introw=10,Column; while(row>=1) { Column=1; while(Column<=10) { printf(“%s”,row%2? “<”: “>”); Column++; } row--; printf(“\n”); } } 运行结果及分析: 运行结果: >>>>>>>>>>> <<<<<<<<<<< >>>>>>>>>>> <<<<<<<<<<< >>>>>>>>>>> <<<<<<<<<<< >>>>>>>>>>> <<<<<<<<<<< >>>>>>>>>>> <<<<<<<<<<< 分析: 1.while是入口控制循环语句,先计算测试条件,如果该条件为真,那么就运行其循环体语句,运行完后,再次计算测试条件,如果仍为真,则继续计算循环体,直到条件为假; 2.while可进行循环的嵌套,在本程序中就进行了循环的嵌套,在第一个循环下,再进行while循环,第二个循环是对Column进行求模和用? 判断输出<>,一直循环到Column=10为止,第一个while循环是控制换行输出的,直到row>=1时退出循环。 (3)#include voidmain() { inty=9; for(;y>0;y--) if(y%3==0)printf("%d\n",--y); } 运行结果及分析: 运行结果: 8 5 2 分析: 1.for语句也是一种入口控制循环,在本程序中for(;y>0;y--)是循环条件,先将y初始化为9,每执行一次后面的循环体y就自减一次,知道y>=0是停止循环; 2.if(y%3==0)printf("%d\n",--y);是循环体,意识是当y除以3没有余数时就输出y-1的值; 3.该程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)