《高级语言程序设计》实验指导书.docx

上传人:b****5 文档编号:7308055 上传时间:2023-01-22 格式:DOCX 页数:44 大小:569.99KB
下载 相关 举报
《高级语言程序设计》实验指导书.docx_第1页
第1页 / 共44页
《高级语言程序设计》实验指导书.docx_第2页
第2页 / 共44页
《高级语言程序设计》实验指导书.docx_第3页
第3页 / 共44页
《高级语言程序设计》实验指导书.docx_第4页
第4页 / 共44页
《高级语言程序设计》实验指导书.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

《高级语言程序设计》实验指导书.docx

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

《高级语言程序设计》实验指导书.docx

《高级语言程序设计》实验指导书

 

《高级语言程序设计》

实验指导书

 

浙江农林大学数学实验室

 

前言

一、实验的目的

学习C程序设计课程不能满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果。

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

程序设计课程上机实验的目的是:

1.加深对讲授内容的理解,尤其是一些语法规定。

通过实验来掌握语法规则是行之有效的方法。

2.学会上机调试程序。

通过反复调试程序掌握根据出错信息修改程序的方法。

3.通过调试完善程序。

二、实验前的准备工作

1.了解所用的计算机系统(包括C编译系统)的性能和使用方法。

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

3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机。

4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。

5.准备好调试程序和运行程序所需的数据。

三、实验任务与时间安排

实验序号

实验内容

拟实验时间

实验

形式

1

熟悉开发环境

1

验证性

2

数据类型、运算符和表达式

2

验证性

3

顺序结构程序设计

3

验证性

4

选择结构程序设计

3

验证性

5

循环结构程序设计

4

验证性

6

数组程序设计

5

验证性

7

函数程序设计

(一)

3

验证性

8

函数程序设计

(二)

3

验证性

9

指针程序设计

(一)

3

验证性

10

指针程序设计

(二)

3

验证性

11

结构体与共用体

2

验证性

12

文件操作

1

验证性

13

综合实验

3

设计性

四、完成实验报告

完成实验后,需撰写实验报告。

实验报告中应包含以下内容:

1.实验目的。

2.实验内容。

3.程序清单。

4.运行结果。

5.对运行结果的分析,以及本次调试程序所取得的经验。

实验一熟悉开发环境(验证性)

(上机实验1学时)

一、实验目的

1.了解Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。

2.了解在该系统上如何编辑、编译、连接和运行一个C源程序。

3.通过运行简单的C源程序,初步了解C源程序的特点。

二、实验内容

1.检查自己所用的计算机系统。

(1)了解Windows资源管理器的使用方法,查找VisualC++6.0所在目录。

(2)启动“记事本”程序,掌握文本文件(后缀名为.txt)的建立方法。

2.学习进入并熟悉VC++6.0集成环境。

(1)在桌面上找到名为“MicrosoftVisualC++6.0”的图标,或通过“开始”菜单

进入VisualC++6.0,新建一个名为“实验一”的工程。

(2)熟悉VC++6.0的集成环境,了解各菜单项有哪些子菜单。

3.练习在工程“实验一”中编辑并运行简单的C源程序。

(1)新建一个C源文件Exercise1_1.c(程序见教材例1.1),注意区分大小写,在英

文模式输入代码。

(2)编译、连接并运行程序,并熟悉Ctrl+F7、F7、Ctrl+F5等快捷键的作用。

(3)新建一个C源文件Exercise1_2.c(程序见教材例1.3)。

运行程序,若程序有

错(出现error(s)),则修改后继续运行程序。

当没有错误信息时,输入:

2,5

并按Enter键,查看运行结果。

4.新建一个C源文件Exercise1_3.c,编辑并运行一个自己编写的程序,程序的

功能是求两个整数的最小者,要求如下(譬如输入:

6,11):

(1)在输入两个整数之前,有语句提示“请输入两个数:

”。

(2)最终输出结果为“较小数为6”。

三、实验步骤

1.启动VisualC++6.0

单击“开始/程序/MicrosoftVisualStudio6.0/MicrosoftVisualC++6.0”,得到VisualC++6.0启动后的用户界面,如图1-1所示。

*2.创建新工程

(1)单击菜单“文件/新建”,显示“新建”对话框,如图1-2所示。

(2)在此对话框的列表栏中,选择“Win32ConsoleApplication”(Win32控制台应用程序)。

在“工程名称”栏中输入一个工程名,如“实验一”。

在“位置”栏选择(或输入)工程所在的路径,如图中所示“D:

\C实验\实验一”。

单击“确定”按钮。

(3)再单击的“Win32ConsoleApplication-步骤1共1步”对话框中选择一个空工程(Anemptyproject)单选项。

然后单击“完成(Finish)”按钮,如图1-3所示。

(4)在“新建工程信息”对话框中单击“确认”按钮,完成工程创建过程。

图1-1VisualC++6.0用户界面

图1-2“新建”对话框

3.创建C源程序文件

(1)选择“文件”菜单项,出现一个下拉式菜单,再选择该菜单中的“新建”选项(热键为Ctrl+N),打开“新建”窗口。

(2)选择“文件”,在它的下拉列表框中选择“C++SourceFile”,如图1-4所示。

在右边的“文件名”栏中输入你要创建的C源程序名字,譬如“eg1_1.c”,再单击“确定”,出现编辑屏幕,如图1-5所示。

点左边窗口下方的“FileView”,可以看到“实验一Files”下有3个文件夹:

“SourceFiles”、“HeaderFiles”和“ResourceFiles”。

其中“SourceFiles”文件夹下面可以找到新创建的文件“eg1_1.c”。

(3)在“C源程序编辑”窗口下编辑C源程序。

在编辑窗口键入C源程序。

如图

图1-3“Win32ConsoleApplication-Step1of1”对话框

图1-4“新建C源文件”对话框

1-6所示。

4.对源程序进行编译

按热键“Ctrl+F7”或通过“组建”菜单中的“编译”命令,或使用工具栏中的“编译”工具进行编译(如图1-7所示),生成目标程序(eg1_1.obj)。

在编译过程中发现的错误显示在屏幕下方的“编译”窗口中。

上述程序的“编译”窗口,如图1-8所示。

5.将目标程序进行连接

编译无错误后,按热键“F7”或执行“组建”菜单中的“组建”命令或通过工具栏中的“连接”工具,连接成功后,生成可执行文件实验一.exe(如果刚开始没有新建工程“实验一”,只是新建一个源程序,得到的将是eg1_1.exe),见图1-9。

图1-5编辑C源程序窗口

图1-6编辑C源程序

编译连接运行

图1-7工具栏中的“编译”、“连接”、“运行”命令

图1-8“编译”窗口

图1-9“连接”窗口

6.执行程序

按热键“Ctrl+F5”,或通过“组建”菜单中的“执行”命令,或通过工具栏中的“!

”工具运行程序。

这时,运行该可执行文件,并将结果显示在另外一个显示执行文件输出结果的窗口中,如图1-10所示。

图1-10控制台窗口

7.退出VC++6.0环境

单击菜单“文件/退出”,可以退出VC++6.0环境,回到Windows环境。

※如何关闭/打开工作空间

单击菜单“文件/关闭工作空间”,关闭工作空间。

再单击菜单“文件/打开工作空间”,在弹出的对话框中选定“D:

\C实验\实验一\实验一.dsw”,单击“打开”按钮,则可打开工作空间,对已建立的工程文件进行修改。

*如果只要求建立一个C源程序,可以跳过步骤2。

若要求同时建立几个源文件,必须先完成步骤2。

四、实验要求

1.复习教材有关内容。

2.掌握C控制台程序的开发、调试步骤。

3.完成实验报告。

实验二数据类型、运算符和表达式(验证性)

(上机实验2学时)

一、实验目的

1.掌握C语言的基本数据类型。

2.理解常量、变量的意义与区别。

3.理解不同类型的数据在内存中的存储形式(注意区别字符常量与字符串常量)。

4.掌握运算符的规则。

5.掌握不同数值类型的混合运算规则。

二、实验内容与步骤

1.新建源文件Exercise2_1.c,比较整型数据、字符型数据以及字符串型数据的区别与联系。

/*Exercise2_1.c*/

#include

intmain()

{charc1,c2;//第3行

c1='a';c2='b';//第4行

printf("%c%c\n",c1,c2);

printf("%d,%d\n",c1,c2);

return0;

}

(1)运行此程序。

(2)将第3行改为:

intc1,c2;

然后再运行程序,并观察结果是否相同。

说明整型数据与字符型数据有什么关系?

(3)将第4行依次改为:

c1=a;c2=b;

c1="a";c2="b";

每改一次后,都运行程序,观察结果。

说明单引号“'”能去掉吗?

能改成双引号“"”吗?

(4)请修改程序,使输出结果为一个笑脸符号和一个百分比符号“%”。

2.新建源文件Exercise2_2.c,体会C编译系统自动的数据类型转换,问'a'与a有什么区别?

/*Exercise2_2.c*/

#include

intmain()

{

inta=2;

floatb=1.0;

doublec=2.5;

printf("%f\n",'a'%3+a+b-c);

return0;

}

3.将习题编程并上机运行。

(1)源文件如下,源文件名Exercise2_3.c

/*Exercise2_3.c*/

#include

intmain()

{

inti,j,m,n;

i=8;

j=10;

m=++i;//第7行

n=j++;

printf("%d,%d,%d,%d\n",i,j,m,n);

return0;

}

①运行程序,注意i,j,m,n的值,分析赋值运算符“=”与自增运算符“++”的优先级和结合性。

能否找到等价的两个语句可以替代第7行的语句“m=++i;”?

②将第7,8行改为:

m=i++;

n=++j;

再次运行程序,并分析运行结果。

(2)按第3章习题6的要求编程并上机运行,源文件名Exercise2_4.c。

要将“China”译成密码,密码规律是:

用原来的字母后面第4个字母代替原来的字母。

例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。

请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为'C','h','i','n','a',经过计算,使c1、c2、c3、c4、c5分别变为:

'G','l','m','r','e',并输出。

※程序提示:

①定义变量;(变量应该定义成何种类型?

②赋值;(如何操作?

③输出;

三、实验要求

1.复习教材有关内容。

2.完成实验报告。

 

实验三顺序结构程序设计(验证性)

(上机实验3学时)

一、实验目的

1.掌握C语言的语句。

2.掌握输入输出函数的格式。

3.掌握顺序结构的程序设计方法。

二、实验内容与步骤

1.掌握各种格式转换符的正确使用方法,源文件名Exercise3_1.c。

/*Exercise3_1.c*/

#include

intmain()

{charc1,c2;

inti1,i2;

floatf1,f2;

doubled;

unsignedshortu1,u2;

c1='a';c2='b';/*第7行*/

i1=48;i2=49;/*第8行*/

f1=3.56f;f2=-6.87f;/*第9行*/

d=55.5555;/*第10行*/

u1=1;u2=-1;

printf("c1=%c,c2=%c\n",c1,c2);

printf("i1=%d,i2=%d\n",i1,i2);

printf("123456\n");

printf("f1=%6.2f\nf2=%6.2f\n",f1,f2);

printf("123456789ABCDEF\n");

printf("d1=%15.8f\n",d);

printf("u1=%u,u2=%u\n",u1,u2);

return0;

}

(1)运行程序并分析运行结果,特别要注意u2的输出结果。

(2)分析程序第9行为什么加字母“f”,加上有什么意义?

在此基础上,修改程序的第7行:

c1=a;c2=b;

分析运行结果。

(3)依次修改程序第8-10行语句,采用scanf函数接收从键盘输入的数据,特别注意double型数据的输入:

scanf("%d,%d”,&i1,&i2);//输入int型数据用%?

scanf("%f,%f",&f1,&f2);//输入float型数据用%?

scanf("%lf",&d);//输入double型数据用%?

运行程序,输入数据如下(注意每组数据间的空格,相邻的两个用“,”隔开的数据为一组):

48,493.56,-6.8755.5555

2.编写程序,练习小数的输出用法,源文件名Exercise3_2.c。

按第3章习题7的要求编写程序并运行:

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积,圆球表面积、圆球体积、圆柱体体积。

用scanf输入数据,输出计算结果,输出时要有文字说明,取小数后2位数字。

程序中的π用PI代替。

※程序提示:

/*Exercise3_2.c*/

#definePI3.14159

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

求解;/*程序中的语句和数学公式的区别?

*/

输出;/*输出格式?

*/

3.参考例3.9,用getchar函数读入两个字符给变量c1和c2,然后分别用putchar函数和printf函数输出这两个字符。

源文件名Exercise3_3.c。

※程序提示:

/*Exercise3_3.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*用getchar函数怎么输入两个字符?

*/

输出;

注意:

输入两个字符时必须是连续的,两个字符之间不能有分隔字符,否则系统会把分隔字符作为第二个字符读入。

(1)变量c1,c2应定义为字符型还是整型?

还是两者皆可。

(2)如想读入字符’a’和’b’给变量c1和c2,用getchar函数和scanf函数分别应该怎么读入数据?

两个函数各有什么特点?

(3)要求输出c1和c2值的ASCII码,应如何处理?

用putchar函数还是printf函数?

4.(项目拓展题)使用printf函数编写学生成绩管理系统的用户界面。

源文件名Exercise3_4.c。

运行结果如下:

三、实验要求

1.复习教材有关内容。

2.完成实验报告。

 

实验四选择结构程序设计(验证性)

(上机实验3学时)

一、实验目的

1.掌握关系运算符和逻辑运算符。

2.掌握if语句。

3.掌握switch语句。

4.掌握选择结构程序设计。

二、实验内容与步骤

1.求下列分段函数的输出值,程序运行中动态输入x的值,根据x所在范围决定输出值。

用scanf函数输入x的值,求y的值,并用“%.2f”的格式输出。

源文件名Exercise4_1.c。

※程序提示:

/*Exercise4_1.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

求解;/*采用什么结构?

*/

输出;/*输出格式?

*/

2.输入一个百分制成绩,输出成绩等级A、B、C、D、E和成绩(保留2位小数)。

90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。

要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现,参考例5.7。

源文件名Exercise4_2.c和Exercise4_3.c。

※程序提示:

(1)使用if语句的main函数结构如下:

/*Exercise4_2.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

根据不同的成绩段,得到相应的等级;/*采用if语句*/

输出;/*输出格式?

*/

(2)使用switch语句的main函数结构如下:

(参考例4.6)

/*Exercise4_3.c*/

定义变量;

输入;

根据不同的成绩段,得到相应的等级;/*采用switch语句*/

问:

如何将一个分数段的分数转化成一个确定值?

break语句是否可加可不加,将break语句去掉再试一下。

输出;

3.输入4个整数,按由小到大顺序输出。

得到正确结果后,修改程序使之按由大到小的顺序输出,输出格式“%3d”。

参考例4.3,源文件名Exercise4_4.c。

※程序提示:

/*Exercise4_4.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

将4个整数从小到大排列;/*可以采用switch语句吗?

*/

输出;

4.输入一个不多于3位的正整数,要求输出它是几位数。

源文件名Exercise4_5.c。

应准备以下测试数据:

①要处理的数为1位正整数;

②要处理的数为2位正整数;

③要处理的数为3位正整数;

除此之外,程序还应当对不合法的输入作必要的处理,并给出中文提示。

例如:

①输入负数或零;

②输入的数超过3位

※程序提示:

/*Exercise4_5.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

判断是几位数以及不合法输入的处理;/*如何判断*/

输出;

5.(项目拓展题)在学生成绩管理系统中,使用getchar函数输入用户选择的编号,并显示结果。

输入数字字符1~5,显示“你正使用学生成绩**子系统”,输入6,显示“你已退出系统”,输入其他数字字符,显示“输入有误,请重新输入!

”。

源文件名Exercise4_6.c。

运行结果如下:

三、实验要求

1.复习教材有关内容。

2.完成实验报告。

 

实验五循环结构程序设计(验证性)

(上机实验4学时)

一、实验目的

1.掌握“当型”和“直到型”循环结构。

2.掌握while语句和do-while语句并区分二者的异同。

3.掌握for语句。

4.掌握循环结构程序设计。

二、实验内容与步骤

1.输入两个正整数m和n,求它们的最大公约数和最小公倍数。

采用两种方法,

辗转相除法和连续整数检测法。

源文件名Exercise5_1.c和Exercise5_2.c,要求:

※程序提示:

(1)辗转相除法的主要算法

/*Exercise5_1.c*/

定义变量;/*变量应该定义成何种类型?

*/

输入;/*输入格式?

*/

求出最大公约数和最小公倍数;

将m,n的值分别存储在两个变量tm,tn中;

若m小于n,则交换m和n的值;/*保证m大于n*/

r=m%n;/*m是被除数,n是除数,r是m除以n的余数*/

while(r)

/*r不为0时,将原来的除数作为新的被除数,原来的余数作为新的除数,并做求余操作得到新的r值*/

{

m=n;

n=r;

r=m%n;

}

n即为最大公约数;

tm*tn/n即为最小公倍数;/*为什么要借助tm,tn?

为何不能直接用m*n/n?

*/

输出;

(2)连续整数检测法的主要算法

/*Exercise5_2.c*/

定义变量;

输入;

求出最大公约数和最小公倍数;

从m和n中的大的数开始往下检测,直到第一个能被两个数整除的数r为止,则r即为两个数的最大公约数;/*如何求最小公倍数?

*/

输出;

2.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

源文件名Exercise5_3.c。

※程序提示:

/*Exercise5_3.c*/

定义变量;/*变量应该定义几个,对应何种类型?

*/

输入并统计个数;/*判断输入字符未结束,用(x=getchar())!

='\n'*/

/*采取什么结构?

*/

/*如何判断数字字符?

*/

输出;

3.编程求1到n中能被3或7整除的数之和,参考例5.3。

分别用for循环语句

和while循环语句完成本题。

源文件名Exercise5_4.c和Exercise5_5.c。

4.在正整数中找出被3,5,7除余数分别为1,1,5的最小正整数。

源文件名Exercise5_6.c。

5.(百钱百鸡问题)100元钱买100只鸡。

其中公鸡5元/只,母鸡3元/只,小鸡1元3只,问公鸡,母鸡和小鸡各多少只?

要求用二重循环和三重循环实现。

源文件名Exercise5_7.c和Exercise5_8.c。

※程序提示:

公鸡,母鸡和小鸡最多为多少只?

三种鸡的数量有什么关系?

6.(素质拓展题)1、2、3这3个数字,能组成多少个互不相同且无重复数字的三位正整数?

输出符合条件的所有3位数和个数。

源文件名Exercise5_9.c。

※程序提示:

定义变量i,j,k分别表示百位,十位,个位,则i,j,k应该定义成何种数据类型,取值范围为?

i,j,k互不相同如何表示?

运行结果如下:

7.(素质拓展题)打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

源文件名Exercise5_10.c。

※程序提示:

定义变量n,i,j,k分别表示三位数及对应的百位,十位,个位,则i=n/100,j=?

k=?

各位数字立方和等于该数本身如何表示?

运行结果如下:

三、实验要求

1.复习教材有关内容。

2.完成实验报告。

实验六数组程序设计(验证性)

(上机实验5学时)

一、实验目的

1.掌握一维数组和多维数组的定义。

2.掌握对数组的引用规则。

3.理解多维数组的特殊性。

4.掌握字符数组和字符串。

二、实验内容与步骤

1.用选择法对5个整数从小到大排序,5个整数用scanf函数输入,并将排序后的结果采用“%3d”的格式输出。

参考例6.3,源文件名Exercise6_1.c。

.

※程序提示:

定义变量和数组;/*数组长度有什么要求?

*/

输入5个整数放到数组中;/*如何输入?

*/

输出5个整数;

选择排序;

for(i=1;i<5;i++)/*对应数组声明inta[6]的情况*/

{

min=i;/*min是最小数所在位置的下标*/

for(j=i+1;j<=5;j++)

if(a[min]>a[j])min=j;

/*扫描后面的元素,若有更小的数,

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

当前位置:首页 > 高等教育 > 理学

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

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