《程序设计与问题求解》实验指导书1126课件文档格式.docx
- 文档编号:3994211
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:24
- 大小:175.56KB
《程序设计与问题求解》实验指导书1126课件文档格式.docx
《《程序设计与问题求解》实验指导书1126课件文档格式.docx》由会员分享,可在线阅读,更多相关《《程序设计与问题求解》实验指导书1126课件文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
#include<
math.h>
stdio.h>
intmain(void)
{doublequestion=-45.35,answer;
answer=fabs(question);
printf("
数%.2f的绝对值是%.2f\n"
question,answer);
}
(2)分析并修改下面程序错误,使之能够正常运行。
错误代码一:
voidmain()
{inta;
floatb;
scanf("
%d%f"
&
a,&
b);
doublec;
%lf"
c);
printf("
a=%d,b=%f,c=%lf\n"
a,b,c);
错误代码二:
{inta,b;
intsum;
sum=a+b;
%d%d"
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整除。
从键盘读入一个年份,然后输出其是否为闰年。
具体代码如下:
{
intyear;
请输入年份:
"
);
%d"
year);
if((year%4==0&
&
year%100!
=0)||(year%400==0))
{
printf("
闰年!
}
else
不是闰年!
2.分析并修改下面程序错误,使之能够正常运行。
下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。
inta=5,b=6;
/*或inta=5,b=5;
*/
if(a==b);
a和b相等\n"
错误的代码二:
下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。
{inta=5;
/*或inta=6*/
intb=6;
if(a==b)
a++;
b++;
a=%d,b=%d"
a,b);
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
2.分析2中的程序错误,修改后运行并写出结果;
3.给出3中的源代码及输入输出结果截图;
实验三循环结构程序设计
(一)
1.掌握循环程序设计思想;
2.掌握三种循环结构程序的写法;
2.能熟练适当使用三种循环结构进行循环程序的编写。
1.循环结构编程示例
要求编程计算1到100的和并输出,具体代码如下:
inti;
intsum=0;
//和的初值很重要
for(i=1;
i<
=100;
i++)
sum+=i;
错误代码如下:
该程序用于求从1到100的整数和。
inti=1;
intsum=0;
while(i<
=100);
{
sum+=i;
1).请用三种结构实现从1到100之间的偶数累加,奇数相乘,并将偶数累加的结果输出,奇数相乘的结果输出。
2).从键盘输入一批学生的成绩(以负数为结束标志),计算平均分,并统计不及格成绩的个数。
3).从键盘输入任意字符(直到输入字符q或Q时退出),分别统计输出一共有多少个数字,多少个小写字母,多少个大写字母及多少个除上述以外的其他字符的个数。
这里最后一个q或Q也要计算在内!
实验四循环结构程序设计
(二)
1.学习和掌握二重循环结构编程;
2.学习和使用基础算法--枚举算法
1.二重循环结构编程示例
要求按如下数字形状输出,代码有错误,请修改正确。
1
123
12345
1234567
代码如下:
#include<
intmain()
inti,j;
for(i=1;
=4;
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
2.分析1中的程序错误,修改后运行并写出结果;
3.给出2中的源代码及输入输出结果截图;
实验五有序数据程序设计
1.掌握数组的定义、赋值和输入输出方法
2.学习使用数组实现相关算法
1.改正下列程序错误,使之完成规定的功能:
该程序统计数组元素之和并输出。
voidmain(void)
inta[5]={5,4,3,2,1};
=5;
sum=sum+a[i];
sum=%f\n"
Sum);
2.编写程序实现以下功能
(1)随机产生N个正整数(10<
Ν≤20)存入数组a中,输出a中的最大值,最小
值及求出其平均值(保留两位小数)。
Rand()#include<
stdlib.h>
(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<
STUDENTS;
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
3.给出2、3中的源代码及输入输出结果截图;
实验六模块化程序设计
1.掌握函数的定义和调用方法;
2.掌握通过参数在函数(模块)间传递数据的方法;
1.改正下列程序错误,使之完成规定的功能
输入两个数,输出其中较大的数,错误代码如下:
intmax(inta,b);
if(a>
b)
max=a;
max=b;
returnmax;
intmax,x,y;
输入两个整数,用空格隔开:
x,&
y);
max=max(x,y);
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!
”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。
2.分析1中的程序错误,修改后运行并出结果截图;
实验七结构体与文件程序设计
一、实验目的
1.学习掌握结构化数据的编程使用
2.文本文件的数据输入和存储
3.通过从文件读入结构化数据和写回文件来编写实际应用程序
二、实验内容
1.改正下列程序错误,使之完成规定的功能
程序实现输出图书的名字和单价,错误代码如下:
structbook
floatprice;
//价格
charname[10];
//名字
structbookmyBook;
myBook={5.6,"
theworldisflat"
};
bookname=%s,bookprice=%f"
myBook.name,myBook.price);
(1)设计一个保存学生成绩信息的结构,包括学号、姓名、课程名、平时成绩、考试成绩、总评成绩。
分别用函数实现以下功能:
①输入n个学生的信息(平时和考试成绩)
②要求计算并输出学生的总分(平时20%,考试80%)并输出;
③输出总分最高和最低的学生信息。
(2)从键盘输入n(n<
10)本书的名称和单价并存入结构数组中,按照单价从高到低的顺序进行排序并输出。
(选作题)
①编写函数实现排序过程;
②在主函数中输入数据,调用排序函数排序后返回主函数输出排序结果。
(3)文件编程
先用记事本在当前目录下创建一个data.txt文件,在里面输入保存编程(1)中的学生成绩(平时及考试成绩),存盘关闭;
然后写一个程序来打开这个文件,计算总分后显示在屏幕上,同时输出到结果文件T_data.txt文件中。
实验八指针程序设计
1.掌握变量的指针使用方法
2.掌握通过指针传递数组的方法
3.掌握指针与数组和函数编程的应用方法
4.学习和掌握基本的递归的程序设计方法
程序实现:
将字符串s连接到t的后面。
如输入Birthday和Happy,则程序输出HappyBirthday。
voidmystrc(chars,chart);
{ chars[80],t[80];
gets(s);
gets(t);
mystrc(s,t);
puts(t);
return0;
}
{ while(*t!
=0)t++;
while(*t=*s);
(1).main函数带命令行参数的使用
假设程序编译后生成的可执行文件为mycal.exe.。
在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:
c:
\>
,键入mycal100+200运行的结果为300;
键入mycal100*200运行的结果为20000等。
(2).字符串合并
输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
如:
输入1223aabcc和233abbdkm
输出:
1222333aaabbbccdkm
a)较好的用户输入输出提示
b)先用普通数组编程方式编写,测试好后改用指针方式逐个访问字符数组元素
2.分析1.中的程序错误,修改后运行并出结果截图;
3.给出2.中的源代码及输入输出结果截图;
实验九简单有序表程序设计
1.掌握指针与内存地址的关系
2.掌握通过指针动态申请和释放内存的编程方法
3.学习和掌握单向链表的基本操作
1.调试示例
输入若干学生的信息(学号、姓名、成绩),当输入学号为0时结束,用单向链表组织这些学生信息后,再按序输出。
string.h>
structstud_node
{
intnum;
charname[20];
intscore;
structstud_node*next;
structstud_node*head,*tail,*p;
intnum,score;
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);
score=score;
next=NULL;
tail->
next=p;
tail=p;
for(p=head;
next!
=NULL;
p=p->
next)
printf(“%d%s%d\n”,p->
num,p->
name,p->
return0;
2.简单有序链表的创建和查询修改
(1)建立一个单链表21315271118,并输出该链表;
(2)输入序号n,查找序号为n的结点,并输出;
(3)输入值x,查找值为x的结点,并输出;
(4)插入结点:
输入序号n和值x。
在序号为n的结点后插入x,并输出该链表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计与问题求解 程序设计 问题 求解 实验 指导书 1126 课件
![提示](https://static.bingdoc.com/images/bang_tan.gif)