《程序设计与问题求解》实验指导书.docx

上传人:b****6 文档编号:12523696 上传时间:2023-06-06 格式:DOCX 页数:24 大小:175.93KB
下载 相关 举报
《程序设计与问题求解》实验指导书.docx_第1页
第1页 / 共24页
《程序设计与问题求解》实验指导书.docx_第2页
第2页 / 共24页
《程序设计与问题求解》实验指导书.docx_第3页
第3页 / 共24页
《程序设计与问题求解》实验指导书.docx_第4页
第4页 / 共24页
《程序设计与问题求解》实验指导书.docx_第5页
第5页 / 共24页
《程序设计与问题求解》实验指导书.docx_第6页
第6页 / 共24页
《程序设计与问题求解》实验指导书.docx_第7页
第7页 / 共24页
《程序设计与问题求解》实验指导书.docx_第8页
第8页 / 共24页
《程序设计与问题求解》实验指导书.docx_第9页
第9页 / 共24页
《程序设计与问题求解》实验指导书.docx_第10页
第10页 / 共24页
《程序设计与问题求解》实验指导书.docx_第11页
第11页 / 共24页
《程序设计与问题求解》实验指导书.docx_第12页
第12页 / 共24页
《程序设计与问题求解》实验指导书.docx_第13页
第13页 / 共24页
《程序设计与问题求解》实验指导书.docx_第14页
第14页 / 共24页
《程序设计与问题求解》实验指导书.docx_第15页
第15页 / 共24页
《程序设计与问题求解》实验指导书.docx_第16页
第16页 / 共24页
《程序设计与问题求解》实验指导书.docx_第17页
第17页 / 共24页
《程序设计与问题求解》实验指导书.docx_第18页
第18页 / 共24页
《程序设计与问题求解》实验指导书.docx_第19页
第19页 / 共24页
《程序设计与问题求解》实验指导书.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《程序设计与问题求解》实验指导书.docx

《《程序设计与问题求解》实验指导书.docx》由会员分享,可在线阅读,更多相关《《程序设计与问题求解》实验指导书.docx(24页珍藏版)》请在冰点文库上搜索。

《程序设计与问题求解》实验指导书.docx

《程序设计与问题求解》实验指导书

 

程序设计与问题求解

 

实验指导书

《程序设计与问题求解》教改项目组

2015年9月

实验一熟悉上机环境和顺序结构编程

一、实验目的

1.了解和使用VC集成开发环境;

2.熟悉常用的功能菜单命令;

3.掌握C语言中的输入输出;

4. 掌握变量定义和使用;

5. 理解顺序结构程序设计方法。

二、实验内容和步骤

1.熟悉VC环境,练习自己的第一个程序

(1)启动VC环境

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

 

(2)创建新文件

单击菜单“文件/新建”,显示对话框。

在此对话框的列表栏中,有“文件、工程、工作区、其他文档”4个选项。

注意系统进入的时候是“工程”一栏被选中,简单起见,我们要用鼠标选中“文件”,会弹出下拉式菜单。

在菜单里用鼠标选中“C++sourcefile”,然后在右边的文件框里填入你要创建的文件名,如eg1_1.cpp.然后点击确定。

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

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

如图所示,键入上面程序。

(4)编译连接和运行源程序

选择菜单项“编译”,出现“编译”的下拉菜单,在该下拉式菜单中选择“编译eg1-1.cpp”菜单项,这时系统开始对当前的源程序进行编译,在编译过程中,将所发现的错误显示在屏幕最下方的“编译”窗口中。

所显示的错误信息中指出该错误所在行号和该错误的性质。

我们可根据这些错误信息进行修改。

编译无错误后,可进行连接生成可执行文件(.exe),这时选择“编译”下拉菜单中的“构件eg1-1.exe”选项。

“编译”窗口出现信息说明编译连接成功,并生成以源文件名为名字的可执行文件(eg1-1.exe)。

执行可执行文件的方法是选择“编译”菜单项中“执行eg1-1.exe”选项。

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

(5)关闭工作区,为下个实验做准备。

单击菜单“文件”中的“关闭工作区”选项,关闭工作区。

注意:

这一步很重要,不然其他的程序做不了,所以建议同学们每做完一个实验都要关闭工作区,这样可以一次做多个实验!

2.简单的数据输入输出实验

(1)输入下面的程序,运行并分析结果。

(注意:

绝对值函数fabs(x)。

#include

#include

intmain(void)

{doublequestion=-45.35,answer;

answer=fabs(question);

printf("数%.2f的绝对值是%.2f\n",question,answer);

}

(2)分析并修改下面程序错误,使之能够正常运行。

错误代码一:

#include

voidmain()

{inta;

floatb;

scanf("%d%f",&a,&b);

doublec;

scanf("%lf",&c);

printf("a=%d,b=%f,c=%lf\n",a,b,c);

}

错误代码二:

#include

voidmain()

{inta,b;

intsum;

sum=a+b;

scanf("%d%d",&a,&b);

printf("sum=%d\n",sum);

}

3.编写程序实现以下功能

1).输入3个数,求他们的平均值并输出。

(保留2为小数)

2).计算

的值,并输出结果(保留2为小数)

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.给出2

(1)的实验结果,(如有和自己预期的结果不一致的要分析);

3.说明2

(2)错误原因,给出正确的源程序代码并运行结果输出数据;

4.实验中遇到的问题和解决问题的方法。

实验二选择结构程序设计

一、实验目的

1.正确使用关系表达式和逻辑表达式表示条件;

2.掌握选择语句if-else和switch语句的使用方法;

3.掌握分支结构程序设计。

二、实验内容

1.选择结构编程示例

year是闰年,即year能被4整除但不能被100整除,或year能被400整除。

从键盘读入一个年份,然后输出其是否为闰年。

具体代码如下:

#include

voidmain()

{

intyear;

printf("请输入年份:

");

scanf("%d",&year);

if((year%4==0&&year%100!

=0)||(year%400==0))

{

printf("闰年!

");

}

else

{

printf("不是闰年!

");

}

}

2.分析并修改下面程序错误,使之能够正常运行。

错误代码一:

下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。

#include

voidmain()

{

inta=5,b=6;/*或inta=5,b=5;*/

if(a==b);

{

printf("a和b相等\n");

}

}

错误的代码二:

下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。

#include

voidmain()

{inta=5;/*或inta=6*/

intb=6;

if(a==b)

a++;

b++;

printf("a=%d,b=%d",a,b);

}

3.编写程序实现以下功能

1).身高预测

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。

小孩成人后的身高与其父母的身高和自身的性别密切相关。

设faHeight为其父身高,moHeight为其母身高,身高预测公式为

男性成人时身高=(faHeight+moHeight)×0.54cm

女性成人时身高=(faHeight×0.923+moHeight)/2cm

此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。

编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。

编程要求:

有用户输入输出提示信息。

2).简单的计算器

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:

操作数1运算符op操作数2

计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。

编程要求:

程序能进行浮点数的算术运算,有用户输入输出提示信息。

提示:

因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。

作为整型变量跟0的比较,简单的==就可以解决。

而浮点型等实型变量需要用

if(fabs(data2)<=1e-7)

进行判断(即判断其是否足够小)。

若使用函数fabs,需要包含头文件cmath.h

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析2中的程序错误,修改后运行并写出结果;

3.给出3中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验三循环结构程序设计

(一)

一、实验目的

1.掌握循环程序设计思想;

2.掌握三种循环结构程序的写法;

2.能熟练适当使用三种循环结构进行循环程序的编写。

二、实验内容

1.循环结构编程示例

要求编程计算1到100的和并输出,具体代码如下:

#include

voidmain()

{

inti;

intsum=0;//和的初值很重要

for(i=1;i<=100;i++)

{

sum+=i;

}

printf("sum=%d\n",sum);

}

2.分析并修改下面程序错误,使之能够正常运行。

错误代码如下:

该程序用于求从1到100的整数和。

#include

voidmain()

{

inti=1;

intsum=0;

while(i<=100);

{

sum+=i;

}

printf("sum=%d\n",sum);

}

3.编写程序实现以下功能

1).请用三种结构实现从1到100之间的偶数累加,奇数相乘,并将偶数累加的结果输出,奇数相乘的结果输出。

2).从键盘输入一批学生的成绩(以负数为结束标志),计算平均分,并统计不及格成绩的个数。

3).从键盘输入任意字符(直到输入字符q或Q时退出),分别统计输出一共有多少个数字,多少个小写字母,多少个大写字母及多少个除上述以外的其他字符的个数。

(注意:

这里最后一个q或Q也要计算在内!

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析2中的程序错误,修改后运行并写出结果;

3.给出3中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验四循环结构程序设计

(二)

一、实验目的

1.学习和掌握二重循环结构编程;

2.学习和使用基础算法--枚举算法

二、实验内容

1.二重循环结构编程示例

要求按如下数字形状输出,代码有错误,请修改正确。

1

123

12345

1234567

代码如下:

#include

intmain()

{

inti,j;

for(i=1;i<=4;i++)

{

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

{

printf(“%d”,j);

}

printf(“\n”);

}

}

2.编写程序实现以下功能

1)编写程序,打印99乘法表

2)将一面额为10元倍数的整钱(<=100元)换成1元、2元和5元的零钱组合(每种面值都要有)。

输入要换的面额(如10元),输出所有可能的换法(如2种)。

进阶:

若希望换出来的零钱数量越少越好,怎么修改程序可以很快得到最优方案?

3)输入一行字符,统计其中单词的个数。

各单词之间用空格分隔,空格数可以是多个。

输入输出示例

Inputwords:

Thesumoftheoddnumbers.

Count=6

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析1中的程序错误,修改后运行并写出结果;

3.给出2中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验五有序数据程序设计

一、实验目的

1.掌握数组的定义、赋值和输入输出方法

2.学习使用数组实现相关算法

二、实验内容

1.改正下列程序错误,使之完成规定的功能:

错误代码一:

该程序统计数组元素之和并输出。

#include

voidmain(void)

{

inta[5]={5,4,3,2,1};

inti;

intsum=0;

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

{

sum=sum+a[i];

}

printf("sum=%f\n",Sum);

}

2.编写程序实现以下功能

(1)随机产生N个正整数(10<Ν≤20)存入数组a中,输出a中的最大值,最小

值及求出其平均值(保留两位小数)。

Rand()#include

(2)餐饮服务质量调查打分

某公司的主管需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。

如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。

下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。

假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

GradeCountHistogram

15*****

210**********

37*******

...

103***

提示:

–定义数组score存放打的分数

–定义数组count为计数器(count[0]不用)

–计算统计结果:

设置一个循环,依次检查数组元素值score[i],是1则将数组元素count[1]加1,是2则将数组元素count[2]加1,依此类推

for(i=0;i

{

count[score[i]]++;

}

–打印统计结果,设置一个循环,按count数组元素的值,打印相应个数的符号’*’

提示:

输入40个数据太多,进行测试的时候,可以让计算机生成随机数代替手工输入数据。

3.检验并打印魔方矩阵(选做)

在下面的5×5阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。

17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析1中的程序错误,修改后运行并写出结果;

3.给出2、3中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验六模块化程序设计

一、实验目的

1.掌握函数的定义和调用方法;

2.掌握通过参数在函数(模块)间传递数据的方法;

二、实验内容

1.改正下列程序错误,使之完成规定的功能

输入两个数,输出其中较大的数,错误代码如下:

intmax(inta,b);

{

if(a>b)

max=a;

else

max=b;

returnmax;

}

voidmain()

{

intmax,x,y;

printf("输入两个整数,用空格隔开:

");

scanf("%d%d",&x,&y);

 max=max(x,y);

printf("max=%d\n",max);

}

2.编写简单编程题

(1)求

,其中n的值由键盘输入。

要求:

定义和调用函数doublefact(inta);求取a!

并返回结果。

注:

此题仅作为自定义函数练习使用,这个程序用函数实现效率会很低。

(2)编写程序,给小学生出加法运算题,然后判断学生输入的答案对错与否,并统计得分。

功能:

连续出10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!

”,否则显示“Notcorrect!

”,不给机会重做,10道题做完后,按每题10分统计总得分和错误题数,然后输出总分和做错的题数。

编程要求:

●较好的用户输入输出提示

●使用子函数实现两个数相加的测试。

此函数的输入参数是两个加数,返回值是用户运算的正确与否(用1或者0表示)。

在此函数中首先读入用户输入的加法结果,并与正确结果进行比较。

intAddTest(inta,intb) ;

●仅仅要求完成程序4的编写调试运行工作,程序1至程序3是对编写程序4的引导。

若可以直接编写出程序4,可以直接编写,如果不能一步编写成功,可以根据引导一步步编写。

3.选做附加题

通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!

”,否则显示“Notcorrect!

”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析1中的程序错误,修改后运行并出结果截图;

3.给出2、3中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验七结构体与文件程序设计

一、实验目的

1.学习掌握结构化数据的编程使用

2.文本文件的数据输入和存储

3.通过从文件读入结构化数据和写回文件来编写实际应用程序

二、实验内容

1.改正下列程序错误,使之完成规定的功能

   程序实现输出图书的名字和单价,错误代码如下:

#include

structbook

{

floatprice;//价格

charname[10];//名字

}

voidmain(void)

{

structbookmyBook;

myBook={5.6,"theworldisflat"};

printf("bookname=%s,bookprice=%f",myBook.name,myBook.price);

}

2.编写程序实现以下功能

(1)设计一个保存学生成绩信息的结构,包括学号、姓名、课程名、平时成绩、考试成绩、总评成绩。

分别用函数实现以下功能:

①输入n个学生的信息(平时和考试成绩)

②要求计算并输出学生的总分(平时20%,考试80%)并输出;

输出总分最高和最低的学生信息。

(2)从键盘输入n(n<10)本书的名称和单价并存入结构数组中,按照单价从高到低的顺序进行排序并输出。

(选作题)

①编写函数实现排序过程;

②在主函数中输入数据,调用排序函数排序后返回主函数输出排序结果。

(3)文件编程

先用记事本在当前目录下创建一个data.txt文件,在里面输入保存编程(1)中的学生成绩(平时及考试成绩),存盘关闭;然后写一个程序来打开这个文件,计算总分后显示在屏幕上,同时输出到结果文件T_data.txt文件中。

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析1中的程序错误,修改后运行并出结果截图;

3.给出2、3中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

 

实验八指针程序设计

一、实验目的

1.掌握变量的指针使用方法

2.掌握通过指针传递数组的方法

3.掌握指针与数组和函数编程的应用方法

4.学习和掌握基本的递归的程序设计方法

二、实验内容

1.改正下列程序错误,使之完成规定的功能

程序实现:

将字符串s连接到t的后面。

如输入Birthday和Happy,则程序输出HappyBirthday。

#include

voidmystrc(chars,chart);

intmain()

{  chars[80],t[80];

gets(s);gets(t);

mystrc(s,t);

puts(t);

return0;

}

voidmystrc(chars,chart);

{  while(*t!

=0)t++;

while(*t=*s);

}

2.编写程序实现以下功能

(1).main函数带命令行参数的使用

假设程序编译后生成的可执行文件为mycal.exe.。

在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:

c:

\>,键入mycal100+200运行的结果为300;键入mycal100*200运行的结果为20000等。

(2).字符串合并

输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。

如:

输入1223aabcc和233abbdkm

输出:

1222333aaabbbccdkm

编程要求:

a)较好的用户输入输出提示

b)先用普通数组编程方式编写,测试好后改用指针方式逐个访问字符数组元素

三、实验报告内容及要求

1.按实验报告要求(样板)撰写并打印实验报告;

2.分析1.中的程序错误,修改后运行并出结果截图;

3.给出2.中的源代码及输入输出结果截图;

4.实验中遇到的问题和解决问题的方法。

实验九简单有序表程序设计

一、实验目的

1.掌握指针与内存地址的关系

2.掌握通过指针动态申请和释放内存的编程方法

3.学习和掌握单向链表的基本操作

二、实验内容

1.调试示例

输入若干学生的信息(学号、姓名、成绩),当输入学号为0时结束,用单向链表组织这些学生信息后,再按序输出。

#include

#include

#include

structstud_node

{

intnum;

charname[20];

intscore;

structstud_node*next;

};

intmain()

{

structstud_node*head,*tail,*p;

intnum,score;

charname[20];

intsize=sizeof(structstud_node);

head=tail=NULL;

printf(“inputnum,nameandscore:

\n”);

scanf(“%d”,&num);

while(num!

=0)

{

p=malloc(size);

scanf(“%s%d”,name,&score);

p->num=num;

strcpy(p->name,name);

p->score=score;

p->next=NULL;

tail->next=p;

tail=p;

scanf(“%d”,&num);

}

for(p=head;p->next!

=NULL;p=p->next)

printf(“%d%s%d\n”,p->num,p->name,p->score);

return0;

2.简单有序链表的创建和查询修改

(1)建立一个单链表21315271118,并输出该链表;

(2)输入序号n,查找序号为n的结点,并输出;

(3)输入值x,查找值为x的结点,并输出;

(4)插入结点:

输入序号n和值x。

在序号为n的结点后插入x,并输出该链表;

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2