程序设计与问题求解实验报告三
——有序数据程序设计
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验目的
1.掌握循环程序设计思路;
2.能熟练使用3种循环结构对问题进行求解;
3.掌握穷举法、递推法等在工程问题中的应用。
二、实验内容和步骤
1.改正下列程序错误,使之完成规定的功能:
错误代码:该程序统计数组元素之和并输出。
#include <stdio.h>
int main(void)
{
int a[5]={5,4,3,2,1};
int i;
for (i=1;i<=5;i++)
{
sum=sum+a[i];
}
printf("sum=%f\n",Sum);
return 0;
}
修改后:
错误分析:
1.Sum没有定义
2.i的值只从0到4
3.整型格式改%f为%d
4.Sum改为sun
2.编写程序实现以下功能
(1) 输入N 个不大于100的正整数(Ν ≤10 )存入数组 a 中,输出 a 中的最大值,最小值及求出其平均值(保留两位小数),其中N的值由用户输入。
实现代码:
#include <stdio.h>
int main(void)
{
int a[100],i,j,N,sum=0,max=0,min=a[0];
double p;
scanf("%d\t",&N);
for(i=0;i<N;i++)
{
scanf("%d\n",&a[i]);
}
min=a[0];
for(i=0;i<N;i++)
{
sum+=a[i];
if(a[i]>max)max=a[i];
if(a[i]<min)
min=a[i];
}
p=sum/(double)N;
printf("%d %d %.2lf",max,min,p);
return 0;
}
测试:
(2) 餐饮服务质量调查打分
某公司的主管需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
Grade Count Histogram
1 5 *****
2 10 **********
3 7 *******
…
10 3 ***
代码实现:
#include<stdio.h>
#define N 10
int main()
{
int score[40],count[11]={0};
int i,j;
for(i=0;i<40;i++)
{
scanf("%d",&score[i]);
count[score[i]]++;
}
for(i=1;i<=10;i++)
{
printf("%d\t%d\t",i,count[i]);
for(j=0;j<count[i];j++)
printf("*");
printf("\n");
}
}
测试:
3.检验并打印魔方矩阵
在下面的5×5阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。
代码实现:
三、实验总结
遇到的问题:餐饮服务质量调查打分;检验并打印魔方矩阵
解决方法:餐饮服务这题一开始我是用switch语句来实现打分的选择的,可是测试的时候实际输出那一 栏显示的是超时了,后来我就换了一种语句来实现它的选择。
魔方矩阵这题我一开始并没有想到函数,而是尝试了很多种我觉得没问题的方法但它最终输 出的都是”NO”,原因我还没有找到。
实验收获:
1.掌握循环程序设计思路;
2.能熟练使用3种循环结构对问题进行求解;