C语言实验指导书新3.docx
《C语言实验指导书新3.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书新3.docx(38页珍藏版)》请在冰豆网上搜索。
C语言实验指导书新3
C语言程序设计
实验指导书
电气与电子工程学院
一实验报告要求
每次实验,提交一份实验报告。
具体格式见“实验报告格式范文”
将代码和运行截图粘贴到“C改革实验指导书24学时”word的相应位置。
如下图,
15电7班企且1实验扌艮告.doc
程序运行的截图如下:
旨-C:
\Users\wd\Deskto卩垃谴言改革救材垃改華\匚家例改30鵬\学生信息营酩野
请输A.要查询的学生的学号「
律号姓名
语文
数学
英语
平均分
134
56.6
778-0
23.0
285.7
按任意键进入主目录…-
2上机实验的目的上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。
学习程序语言,上机实验的目的如下:
1加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。
2了解和熟悉C语言程序开发环境。
熟悉一两种环境(计算机系统的软件和硬件条件)再遇到其他的系统时便会触类旁通,很快学会。
3学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。
要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。
4在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。
多动脑筋思考,将会对你有很大帮助。
3上机实验前的准备工作
1了解所用的计算机系统的性能和使用方法;
2复习和掌握与本实验有关的教学内容;
3准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;
4准备好调试和运行时所需的数据。
4上机实验的步骤
1调出C语言编译系统,进入C语言工作环境;
2输入自己编制好的程序;
3检查输入是否有错,及时更正;
4进行编译和连接;
5运行程序,分析结果。
重要说明:
上机实验目的和要求0
实验一C语言上机基础4
实验二基本数据类型、运算符和表达式7
实验三输入、输出函数的使用9
实验四选择结构程序设计11
实验五循环结构程序设计13
实验六数组16
实验七简单函数18
实验八高级函数19
实验九指针20
实验十自定义数据、文件22
附1:
c语言函数库24
实验一C语言上机基础
特别声明:
为了教学的便捷以及学生自学的方便,我们选择了便于下载和安装的MicrosoftVisualC++6.0软件作为编译环境。
但在实际工作中使用的编译环境
应该是visualstudio系列软件(如visualstudio2010)。
所以同学们课下必须自己XX(visualstudio2010使用手册),学习visualstudio的基本用法!
PS:
输入法必须切换成英文输入法!
!
!
一实验目的
1熟悉C语言运行环境MicrosoftVisualC++6.0中文版。
2掌握C语言程序的书写格式和C语言程序的结构,初步了解C源程序的特点。
3掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。
4掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对他们赋值的方法。
二实验内容
1C语言上机步骤
⑴开机,启动MicrosoftVisualC++6。
⑵建立工程文件:
在“文件”菜单中选择“新建”命令项,在弹出的“新建”对话框的“工程”选项卡中选择"Win32ConsoleApplication”选项,在"工程”框中输入工程文
件名sy1,在“c:
位置”下拉框中输入或选择文件夹,单击“确定”;在以下弹出的两个对话框中分别单击命令按钮“完成”和“确定”。
⑶建立C++源文件:
在“工程”菜单中选择“添加到工程”一“新建”命令项,在弹出的“新建”对话框的“文件”选项卡中选择“C++SourceFile”,在右边的“文件”框中输
入文件名sy11后单击“确定”。
⑷输入源程序:
在弹出的文件编辑窗口中输入下面的源程序:
#include
voidmain()
{printf("Hello,World!
\n”);
printf("WelcometotheCIanguageworld!
\n");
printf("Everyonehasbeenwaitingfor.\n");
}
⑸编译:
用“编译”菜单的“编译”命令项对源文件syll.cpp进行编译,如果程序有
语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。
直到修改了全部错误,屏幕下面的窗口会出现下面的信息:
Configuration*利1-Win32Debug
Compiling
51/11Tcpp
sy11.obj-0error(s),Duarning(s)
■IL|」HJ._■”
T”syl-创天中ZStVC++-[^yll.tpp]
文忡盘揖查看插入工程編谭工貝窗口帮助
胆OSQ@
1[Global^
zJ|(AI1g
迪件syl.ewe因重建全部
批构件…
F7
^Workspaccf'syj'!
1-53sylfiles
$_jSourceFiles•国syl1.cpp口HeaderFiles_|ResourceFile
牙始调试
调试程芋远程连接…
!
syl.exeCtrl+F5
啟潼可远行配直…
配養…
箧档小
(^}StepIntoFU
*{}RuntfiCursorCtrl+FID
attachh?
Processn,.
⑺运行:
最后用“编译”菜单的“!
执行sy1.exe”命令项运行可执行程序文件sy
.exe。
运行结果如下:
阿"E:
\sy1\Debug\syi.exe**
HeLLu.Uorld!
UeleonetotheClanguageworld!
Everyoneh技wbeenwaitingfor.
Ppessanykeytocontinue—
耐I—
縮译XM窗口藉肋
砂编桂^l+F7
拘件syl.exeF7
全部
批构件…
漬洁
开躺调试
週试程序远程连接…
执行钉l,e汨Ctrl+FE
蝕置可远行配萱…配養…
債档…
(8)程序可能出错,要学会调试修改,详见《VC++6.0使用方法》中的7.调试程序
PS:
输入法必须切换成英文输入法!
!
!
2完成下面程序的运行
2)输入并运行下面的程序,运行后记录并分析结果。
#include
main()
{charc1,c2;/*第2行*/c1=97;c2=98;/*第3行*/printf("%c%c\n",c1,c2);
}
在此基础上:
⑴在程序最后增加一个语句,再运行,并分析结果。
printf("%d%d\n",c1,c2);//ac9798
⑵将第2行改为:
intc1,c2;
再次运行,并分析结果。
ac9798
⑶再将第3行改为:
c1=305;c2=340;//1t305340N位二进制转成8位的char再使之运行,分析运行结果。
2输入并运行下面的程序
#include
main()
{charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);printf("\t\t\b%c%c\n",c4,c5);
}在上机前先用人工分析程序,写出应得结果,上机后将二者对照。
三案例项目
(如:
20.8)
1.输出你自己的生日,姓名拼音的首字母,用浮点型数输出你的年龄
实验二基本数据类型、运算符和表达式
一.实验目的:
1.练习使用基本类型的变量进行编程
2.练习使用C的运算符二.实验内容:
1.实验要求:
熟练使用运算符(%,++,--)
2.分析与设计:
求余运算符要求两个操作数都必须是整数;++和--要看清是先使用还是先自增(减)
3.源代码:
程序1:
取出一个三位整数的各个位,并输出main()//缺少#include
{intx=123;charc1,c2,c3;
c1=x%10;c2=x/10%10;c3=x/100;printf(“%n”,c3,c2,c1);//“”,输入法错误
}运行结果为:
1,2,3
程序2:
练习自增和自减运算符的使用
#include
main()
{inti,j,m,n;
i=8;j=10;
m=++i;/*第5行*/
n=j++;/*第6行*/
printf("%d,%d,%d,%d\n",i,j,m,n);
}
运行程序,注意i、j、m、n各变量的值;然后分别作以下改动并运行:
⑴将第5、6行改为如下以后再运行:
m=i++;
n=++j;
⑵将程序改为:
#include
main()
{inti,j;
i=8;j=10;
printf("%d,%d\n",i++,j++);/*第5行*/
}
⑶在⑵的基础上,将第5行printf语句改为:
printf("%d,%d\n",++i,++j);
⑷再将printf语句改为:
printf("%d,%d,%d,%d\n",i,j,i++,j++);
//先执行所有的i输出操作,再执行i+1⑸将程序改为:
#include
main()
{inti,j,m=0,n=0;
i=8;j=10;
m+=i++;n二-j;
printf("i=%d,j=%d,m=%d,n=%d\in",i,j,m,n);
}
三•案例项目(参考附1:
c语言函数库)
1.随机生成2个0~99之间的正整数,作为你2门课的成绩。
平均成绩(如果结果是整数,要求转换成浮点数),计算所有成绩的标准差要求必须用数学库函数rand(),sqrt。
标准差公式如下:
标准计算公式:
:
亘设有一组数直冷&冷…….xn(皆为实数),其平均恒(.轉.术平均備)为小公式如图仁
标准差也被称为标准幣差,或者实验标准差,公式为⑺二
1^1
2.用数学库函数实现你学过的数学公式,使用的库函数越多,考核分数越高
实验三输入、输出函数的使用
1.实验目的:
熟练使用格式输出函数printf()和格式输入函数seanf()
2.实验内容:
1.实验要求:
格式输入函数seanf()和格式输出函数printf()的使用
2•分析与设计:
输入函数中的普通字符需要原样输入,并注意分隔符的使用;
输出函数中的格式控制符和输出项数要对应。
3.源代码:
程序1:
为使得a=1,b=2,e=‘A',d=5.5,在键盘上如何输入?
#include
main()
{inta,b;
charc;
floatd;
scanf(“a=%db=%d,&a,&b);
scanf(“%c%en”,&c,&d);
}
程序在运行时,输入:
a=1b=2A5.50
程序2:
判断下面程序的运行结果。
main()
{intx=3,y=2,z=1;
printf(“%dn”,(++x,y++),z+2);}运行结果:
2,3
分析得到此结果的原因。
程序3:
以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并
把他们在屏幕上输出。
完成以下填空,并把程序调通,写出当输入为45,34.5,A<回车〉时程序
的运行结果。
#include
main()
{inta;floatb;charc;
scanf(
"%d,%f,%c"
&a,&b,&c
printf(
"a=
%d
\n",a);
printf(
"b=
%f
\n",b);
printf(
"c=
%c
\n",c);
程序4:
指出以下程序的错误并改正,并上机把程序调通。
#inelude
main()
{inta;
scanf("%f",a);〃scanf(
"%d',a);
printf(
"a=%f,a);//printf(
"a=%d,a);
charc;
c=A;〃
c='A;
printf(
"%f,c)〃printf(
"%c,c);
}
三•案例项目
1.用scanf,printf进行如下的输入和输出:
1)输入自己的生日,姓名拼音的首字母,年龄(如:
20.8),然后输出。
注意使用fflush(stdin)函数清除缓存区域,pp89,例4-6第15行
2)输入自己上学期所有课程的成绩(不一定跟真实成绩一模一样),计算平均成绩和标准差,将其输出。
3)输出“学生管理系统”的菜单,如下:
实验四选择结构程序设计
一.实验目的:
1.熟练掌握分支结构if语句及其嵌套
2.掌握分析具体问题的方法二.实验内容:
1实验要求:
利用if语句和seanf函数模拟简单的ATM取款机界面2.分析与设计:
用户先输入密码,密码正确后,可以进行帐户的操作,如
查询,取款等。
3.源代码:
模拟ATM取款机界面#inelude//#ineludemain()
{intpassword,op,number=0,eount=1000,n=0;printf("pleaseinputpassword:
");seanf("%d",&password);
while(password!
=1234)/*有三次输入密码的机会*/{n++;
if(n==3)
{printf("youhaveinput3,eannotinputagain!
\n");
geteh();
return;
}printf("passworderror!
pleaseinputagain:
");seanf("%d",&password);
}loop:
printf("\nweleome!
Pleaseehoieeoneoperate:
(1,2,3)\n");printf("1:
eount\n2:
getmoney\n3:
return\n");seanf("%d",&op);/*输入一种操作*/switeh(op)
{
ease1:
printf("\nyoureountis%d.\n",eount);gotoloop;
/*帐户查询*/
ease2:
printf("\npleaseinputeountthatyouwanttoget:
");seanf("%d",&number);if(number>eount||number<0)printf("\nerror");
else{printf("\nnow,youeantakemoney!
");eount-=number;}gotoloop;
/*取款*/
case3:
break;
/*返回*/
default:
printf("\noperateerror!
");gotoloop;
}
}
三•案例项目
1.输入3门课的成绩,并输出所有成绩中最大的一门课。
用逻辑,关系运算判断:
如果所有成绩中至少有一门课大于90,则输出good;
2.
B的姓名和生日。
用逻辑,
则输出yes否则输出no
先输入一个学生A的姓名和生日,再输入一个学生关系运算判断:
如果A,B的姓名,生日都是正确的,
3.根据实验二中的“学生管理系统”的菜单,如果输入1,则输出“显示所有学员信息”;如果输入2则输出“查询学员信息”;如果输如3,贝U00000用switch()语句完成,运行效果图如下:
实验五循环结构程序设计
一目的和要求
1掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。
2熟悉用while语句,do-while语句和for语句实现循环的方法。
3掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。
4掌握选择结构与循环结构的嵌套。
实验内容
1程序分析
F面是一个计算e的近似值(使误差小于给定的S)的程序。
#include
main()
{doublee=1.0,x=1.0,y,delta;
inti=1;
printf("请输入给定的误差:
");
scanf("%lf",&delta);
y=1/x;
while(y>=delta)
{e=e+y;
i++;
x=x*i;
y=1/x;
}
printf("计算结果是:
%12.10lf\n",e);
}
⑴阅读上面的程序,写出程序所依据的计算公式。
1+1/(1*2)+1/2*3+1/6*4
⑵当输入的delta是什么值时,能分别使程序按下面的要求运行:
i不进入循环;delta>1
ii只循环一次;delta>1/2
iii只循环两次;1/2>delta>1/6
iv进入死循环(程序将永远循环下去)。
Delta=0
V为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
printf("%d\n",i);
⑶原程序中while语句中的y>=delta,分别换成y>delta,y=delta,y观察程序运行将会有什么变化。
⑷把程序中的while结构改写成do-while结构,再运行程序,说明两种结构的区别。
⑸将程序改成用for循环结构,计算前50项,并运行程序,写出运行结果。
2有一数列:
2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。
#include
main()
{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;
}
printf("%f\n",s);
}
要求:
跟踪执行,观察s、t、a、b的变化。
方法:
使用功能键F10单步跟踪执行程序,可以在监视窗口设置要观察的变量或表达式。
]j專倉环国g囱币眇P|(ftf|園画園匡
停止调试
运行的程序
单步运行此处
^include—
耐inf)
—
{intn;
Float,s=0;
c[>For(n=1;n<^10;n++)
<5-S+a/b;
a™a+b;
b=t;
•案例项目
1输入3门成绩,用for循环求平均值。
提示:
每次循环输入一门成绩,并将其加入总和
2,用do-while编写一个循环程序,用户不停的进行“学生管理系统”菜单的选择,直到用户输入数字0。
运行效果图如下:
实验六数组
实验目的
1掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2掌握字符数组和字符串函数的使用;
3掌握与数组有关的算法(特别是排序算法)
二、实验内容
编程序并上机调试运行。
1调试下列错误程序,使之具有如下功能:
输入12个整数,按每行3个数输出这些整数,最后输出12个整数的平均值。
写出调试过程。
#include
#defineN12
main()
{inti,a[N],av;//av=0
for(i=0;ifor(i=0;i{printf("%d",a[i]);
if(i%3==0)printf("\n");//if((i+1)%3==0)printf("\n")
}
for(i=0;i!
=N;i++)av+=a[i];//av/=N;
printf("av=%f\N",av);//printf("av=%d",av)
}上面给出的程序有错误和缺陷,请找出程序中的错误并改正。
2.按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。
⑴定义整型变量i、j,字符串s1、s2
⑵输入字符串s1、s2
⑶当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处
⑷当字符串s2尚未结束,将字符串s2逐个字符连接到字符串si的后面⑸为字符串s1添加结束标志
⑹输出连接后的字符串
三.案例项目
1.输入3门成绩,并用数组记录.在输入前显示提示文字“请输入第i门课成绩”然后用数组与循环语句求成绩的均值,并输出均值,每门课的成绩
2.用二维数组记录3个同学的所有成绩,并输出所有人的成绩
3.用数组记录学生A姓名的字符串,并输出。
再输入一个学生B的姓名字符串,与A的姓名字符串比较,如果一样则输出yes,否则no
4(选做)用数组存放4个学生的学号,用冒泡排序法将学号升序放置在原数组中并输出数组数据
实验七简单函数
.实验目的:
1.理解函数的概念和应用。
2.掌握无参无返回函数的使用
3.掌握无参有返回函数的使用。
.案例项目
1.完成主函数中的下列自定义函数
1)无参无返回的函数inputInfo():
/输入一个学生的信息(name,number,score[3])
2)无参无返回的函数OutputInfo();//输出一个学生的信息(name,number,score[3])
3)无参有返回的函数
4)无参有返回的函数
5)无参有返回的函数
6)无参无返回的函数
Average():
求成绩的均值.Max():
求成绩的最大值.
Standar()求成绩的方差.
Sort():
对成绩进行排序2.用上述自定义函数完成主函数的编写
voidmain()
{/输入学生A的信息(name,number,score[3])//输出学生A的信息(name,number,score[3])//求成绩的均值,并输出