语言实验指导书新.docx

上传人:b****6 文档编号:5836347 上传时间:2023-01-01 格式:DOCX 页数:33 大小:170.07KB
下载 相关 举报
语言实验指导书新.docx_第1页
第1页 / 共33页
语言实验指导书新.docx_第2页
第2页 / 共33页
语言实验指导书新.docx_第3页
第3页 / 共33页
语言实验指导书新.docx_第4页
第4页 / 共33页
语言实验指导书新.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

语言实验指导书新.docx

《语言实验指导书新.docx》由会员分享,可在线阅读,更多相关《语言实验指导书新.docx(33页珍藏版)》请在冰豆网上搜索。

语言实验指导书新.docx

语言实验指导书新

C语言程序设计

实验指导书

电气与电子工程学院

重要说明:

上机实验目的和要求

一实验报告要求

每次实验,提交一份实验报告。

具体格式见“实验报告格式范文”

将代码和运行截图粘贴到“C改革实验指导书24学时”word的相应位置。

如下图,

程序运行的截图如下:

二上机实验的目的

上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。

学习程序语言,上机实验的目的如下:

1加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。

2了解和熟悉C语言程序开发环境。

熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。

3学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。

要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。

4在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。

多动脑筋思考,将会对你有很大帮助。

三上机实验前的准备工作

1了解所用的计算机系统的性能和使用方法;

2复习和掌握与本实验有关的教学内容;

3准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;

4准备好调试和运行时所需的数据。

四上机实验的步骤

1调出C语言编译系统,进入C语言工作环境;

2输入自己编制好的程序;

3检查输入是否有错,及时更正;

4进行编译和连接;

5运行程序,分析结果。

实验一C语言上机基础

特别声明:

为了教学的便捷以及学生自学的方便,我们选择了便于下载和安装的MicrosoftVisualC++软件作为编译环境。

但在实际工作中使用的编译环境应该是visualstudio系列软件(如visualstudio2010)。

所以同学们课下必须自己XX(visualstudio2010使用手册),学习visualstudio的基本用法!

PS:

输入法必须切换成英文输入法!

一实验目的

1熟悉C语言运行环境——MicrosoftVisualC++中文版。

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("WelcometotheClanguageworld!

\n");

printf("Everyonehasbeenwaitingfor.\n");

}

⑸编译:

用“编译”菜单的“编译”命令项对源文件进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。

直到修改了全部错误,屏幕下面的窗口会出现下面的信息:

表示已通过编译,生成了目标程序。

⑹调试:

接下来进行调试,操作如下图所示。

完成调试后,生成可执行程序文件。

⑺运行:

最后用“编译”菜单的“!

执行”命令项运行可执行程序文件sy.exe。

运行结果如下:

(8)程序可能出错,要学会调试修改,详见《VC++使用方法》中的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);机生成2个0~99之间的正整数,作为你2门课的成绩。

平均成绩(如果结果是整数,要求转换成浮点数),计算所有成绩的标准差。

要求必须用数学库函数rand(),sqrt。

标准差公式如下:

2.用数学库函数实现你学过的数学公式,使用的库函数越多,考核分数越高

实验三输入、输出函数的使用

一.实验目的:

熟练使用格式输出函数printf()和格式输入函数scanf()

二.实验内容:

1.实验要求:

格式输入函数scanf()和格式输出函数printf()的使用

2.分析与设计:

输入函数中的普通字符需要原样输入,并注意分隔符的使用;输出函数中的格式控制符和输出项数要一一对应。

3.源代码:

程序1:

为使得a=1,b=2,c=‘A’,d=,在键盘上如何输入?

#include<>

main()

{inta,b;

charc;

floatd;

scanf(“a=%db=%d”,&a,&b);

scanf(“%c%e\n”,&c,&d);

}

程序在运行时,输入:

a=1b=2A0

程序2:

判断下面程序的运行结果。

main()

{intx=3,y=2,z=1;

printf(“%d,%d\n”,(++x,y++),z+2);}

运行结果:

2,3

分析得到此结果的原因。

程序3:

以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。

完成以下填空,并把程序调通,写出当输入为45,,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:

指出以下程序的错误并改正,并上机把程序调通。

#include<>

main()

{inta;

scanf("%f",a);scanf,printf进行如下的输入和输出:

1)输入自己的生日,姓名拼音的首字母,年龄(如:

,然后输出。

注意使用fflush(stdin)函数清除缓存区域,pp89,例4-6第15行

2)输入自己上学期所有课程的成绩(不一定跟真实成绩一模一样),计算平均成绩和标准差,将其输出。

3)输出“学生管理系统”的菜单,如下:

实验四选择结构程序设计

一.实验目的:

1.熟练掌握分支结构if语句及其嵌套

2.掌握分析具体问题的方法

二.实验内容:

1.实验要求:

利用if语句和scanf函数模拟简单的ATM取款机界面

2.分析与设计:

用户先输入密码,密码正确后,可以进行帐户的操作,如查询,取款等。

3.源代码:

模拟ATM取款机界面

#include<>n",count);gotoloop;

/*帐户查询*/

case2:

printf("\npleaseinputcountthatyouwanttoget:

");

scanf("%d",&number);

if(number>count||number<0)printf("\nerror");

else{printf("\nnow,youcantakemoney!

");count-=number;}

gotoloop;

/*取款*/

case3:

break;

/*返回*/

default:

printf("\noperateerror!

");gotoloop;

}

}

三.案例项目

1.输入3门课的成绩,并输出所有成绩中最大的一门课。

用逻辑,关系运算判断:

如果所有成绩中至少有一门课大于90,则输出good;

2.先输入一个学生A的姓名和生日,再输入一个学生B的姓名和生日。

用逻辑,关系运算判断:

如果A,B的姓名,生日都是正确的,则输出yes,否则输出no。

3.根据实验二中的“学生管理系统”的菜单,如果输入1,则输出“显示所有学员信息”;如果输入2则输出“查询学员信息”;如果输如3,则。

用switch()语句完成,运行效果图如下:

实验五循环结构程序设计

一目的和要求

1掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。

2熟悉用while语句,do-while语句和for语句实现循环的方法。

3掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。

4掌握选择结构与循环结构的嵌套。

二实验内容

1程序分析

下面是一个计算e的近似值(使误差小于给定的δ)的程序。

#include<>

main()

{doublee=,x=,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("计算结果是:

%\n",e);

}

⑴阅读上面的程序,写出程序所依据的计算公式。

1+1/(1*2)+1/2*3+1/6*4

⑵当输入的delta是什么值时,能分别使程序按下面的要求运行:

ⅰ不进入循环;delta>1

ⅱ只循环一次;delta>1/2

ⅲ只循环两次;1/2>delta>1/6

ⅳ进入死循环(程序将永远循环下去)。

Delta=0

ⅴ为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?

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单步跟踪执行程序,可以在监视窗口设置要观察的变量或表达式。

三.案例项目

1.输入3门成绩,用for循环求平均值。

提示:

每次循环输入一门成绩,并将其加入总和。

2,用do-while编写一个循环程序,用户不停的进行“学生管理系统”菜单的选择,直到用户输入数字0。

运行效果图如下:

实验六数组

一实验目的

1掌握一维数组和二维数组的定义、赋值和输入输出的方法;

2掌握字符数组和字符串函数的使用;

3掌握与数组有关的算法(特别是排序算法)

二、实验内容

编程序并上机调试运行。

1调试下列错误程序,使之具有如下功能:

输入12个整数,按每行3个数输出这些整数,最后输出12个整数的平均值。

写出调试过程。

#include<>

#defineN12

main()

{inti,a[N],av;按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。

⑴定义整型变量i、j,字符串s1、s2

⑵输入字符串s1、s2

⑶当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处

⑷当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面

⑸为字符串s1添加结束标志

⑹输出连接后的字符串

3.案例项目

1.输入3门成绩,并用数组记录.在输入前显示提示文字“请输入第i门课成绩”。

然后用数组与循环语句求成绩的均值,并输出均值,每门课的成绩

2.用二维数组记录3个同学的所有成绩,并输出所有人的成绩

3.用数组记录学生A姓名的字符串,并输出。

再输入一个学生B的姓名字符串,与A的姓名字符串比较,如果一样则输出yes,否则no

4(选做)用数组存放4个学生的学号,用冒泡排序法将学号升序放置在原数组中,

并输出数组数据

实验七简单函数

一.实验目的:

1.理解函数的概念和应用。

2.掌握无参无返回函数的使用。

3.掌握无参有返回函数的使用。

2.案例项目

1.完成主函数中的下列自定义函数:

1)无参无返回的函数inputInfo():

/输入一个学生的信息(name,number,score[3])

2)无参无返回的函数OutputInfo();4)无参有返回的函数Max():

求成绩的最大值.

5)无参有返回的函数Standar():

求成绩的方差.

6)无参无返回的函数Sort():

对成绩进行排序

2.用上述自定义函数完成主函数的编写

voidmain()

{/输入学生A的信息(name,number,score[3])

掌握有参无返回函数的使用。

3.掌握有参有返回函数的使用。

3.案例项目

1.定义一个带参数并有返回值的函数Average(intscore[3]),计算学生成绩score[3]的均值,并将其返回。

然后在主程序中调用Average()求均值,并输出均值。

2.用一个数组Student[1000],记录N个学生的学号。

定义一个函数AddStudent(intnumber[]),向Student[]数组中添加一个学生的学号。

然后用该函数添加3个学生的学号,并输出所有学号。

3.用一个数组Student[1000],记录N个学生的学号。

定义一个函数modify(inti,intnumber),修改Student[i]的学号为参数number,用主程序输入i和number,调用modify()函数,并输出

4.用一个数组Student[1000],记录N个学生的学号。

定义一个函数del(inti),删除Student[i]的学号,并把Student[1000]数组中的后续数据前移。

用主程序输入i,调用del()函数,并输出删除后的所有学号。

实验九指针

一实验目的

1了解指针的概念,学会定义和使用指针变量。

2.掌握函数的值调用和引用调用的含义

3.掌握简单变量、数组和指针作为函数参数进行传递的形式

2、实验内容

1.运行下列程序,写出运行结果。

#include""

main()

{inta[5],*p,j;

for(j=0;j<5;j++)a[j]=j+1;

p=a;

for(j=0;j<5;j++)printf("*(p+%d)=%d\n",j,*(p+j));想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?

swap(int*p1,int*p2)

{int*p;

p=p1;p1=p2;p2=p;指针数组score[]记录两个学生的成绩a[3],b[3],并用score输出所有成绩.

3(选做).输入学生课程的数目,并用指针与动态内存分配函数malloc()记录一个学生的成绩:

pp2811)函数malloc

实验十自定义数据、文件

一实验目的

1掌握结构体类型的概念和定义方法与使用。

2掌握指向结构体变量的指针变量的概念和应用。

二案例项目

1.完成下列自定义函数:

1)定义一个学生信息结构体Student_Info(其成员变量有姓名,学号,成绩数组,平均分),并在main()函数中用结构体变量记录一个学生的信息,然后输出该学生的所有信息。

2)用一个结构体数组Student_InfoStudent[1000],记录N个学生的结构体变量。

定义一个函数AddStudent(structStudent_Infos[]),向Student[]数组中添加一个学生的信息。

3)定义一个函数find(intnumber)查找指定学号number的学员,并返回该学生在Student[1000]数组中的下标i,如果指定学号不存在,返回-1;

4)定义一个函数voidquery(intnumber):

用find(intnumber)函数根据学号查找学生在Student[1000]数组中的下标i,并显示该学员的所有信息。

5)定义一个函数voiddel(intnumber),根据学号查找学生,并删除该学员信息

6)定义一个函数voidmodify(intnumber),根据学号查找并修改学员的信息

2.用上述自定义函数完成主函数的编写

abs、labs、fabs:

求绝对值函数

2.acos:

反余弦函数

3.asin:

反正弦函数

4.atan:

反正切函数

5.atan2:

反正切函数

6.ceil:

向上舍入函数

7.cos:

余弦函数

8.cosh:

双曲余弦函数

9.div、ldiv:

除法函数

10.exp:

求e的x次幂函数

11.floor:

向下舍入函数

12.fmod:

求模函数

13.frexp:

分解浮点数函数

14.hypot:

求直角三角形斜边长函数

15.ldexp:

装载浮点数函数

16.log、log10:

对数函数

17.modf:

分解双精度数函数

18.pow、pow10:

指数函数

19.rand:

产生随机整数函数

20.sin:

正弦函数

21.sinh:

双曲正弦函数

22.sqrt:

开平方函数

23.srand:

设置随机时间的种子函数

24.tan:

正切函数

25.tanh:

双曲正切函数

1.abs、labs、fabs:

求绝对值函数

  函数原型:

intabs(intx);

  longlabs(longx);

  doublefabs(doublex);

  头文件:

#include<>

  是否是标准函数:

  函数功能:

函数intabs(intx);是求整数x的绝对值;函数longlabs(longn);是求长整型数x的绝对值;函数doublefabs(doublex);是求浮点数x的绝对值。

  返回值:

返回计算结果。

  例程如下:

计算整数的绝对值。

#include<>

intmain(void)

{

intx=-56;

printf("number:

%dabsolutevalue:

%d\n",x,abs(x));

return0;

}

  例程说明:

  本例程通过abs函数计算出整型数-56的绝对值56,并在屏幕上显示结果。

本例程的运行结果为:

number:

-56absolutevalue:

56

  例程如下:

计算长整数的绝对值。

#include<>

intmain(void)

{

printf("number:

%ldabsolutevalue:

%ld\n",x,labs(x));

return0;

}

  例程说明:

  例程如下:

计算浮点数的绝对值。

#include<>

intmain(void)

{

floatx=;

printf("number:

%fabsolutevalue:

%f\n",x,fabs(x));

return0;

}

  例程说明:

  本例程通过fabs函数计算出浮点数的绝对值,并在屏幕上显示结果。

本例程的运行结果为:

number:

absolutevalue:

2.acos:

反余弦函数

  函数原型:

doubleacos(doublex);

  头文件:

#include<>

  是否是标准函数:

  函数功能:

求x的反余弦值,这里,x为弧度,x的定义域为[,],arccosx的值域为[0,π]。

  返回值:

计算结果的双精度值。

  例程如下:

求arccosx。

#include<>

#include<>

intmain(void)

{

doubleresult;

doublex=;

result=acos(x);

printf("arccos%lf=%lf\n",x,result);

return0;

}

  例程说明:

本例程应用函数acos计算的反余弦值,即:

arccos1。

返回计算结果的双精度值。

本例程的运行结果是:

arccos=

3.asin:

反正弦函数

  函数原型:

doubleasin(doublex);

  头文件:

#include<>

  是否是标准函数:

  函数功能:

求x的反正弦值,这里,x为弧度,x的定义域为[,],arcsinx值域为[-π/2,+π/2]。

  返回值:

计算结果的双精度值。

  例程如下:

求arcsinx。

#include<>

#include<>

intmain(void)

{

doubleresult;

doublex=;

result=asin(x);

printf("arcsin%lfis%lf\n",x,result);

return(0);

}

  例程说明:

本例程应用函数asin计算的反正弦值,即:

arcsin1。

返回计算结果的双精度值。

本例程的运行结果是:

arcsinis

4.atan:

反正切函数

  函数原型:

doubleatan(doublex);

  头文件:

#include<>

  是否是标准函数:

  函数功能:

求x的反正切值,这里,x为弧度,x的定义域为(-∞,+∞),arctanx的值域为(-π/2,+π/2)。

  返回值:

计算结果的双精度值。

  例程如下:

求arctanx。

#include<>

#include<>

intmain(void)

{

doubleresult;

doublex=;

result=atan(x);

printf("arctan%lf=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1