一.实验目的:
1.掌握数组的定义、赋值和输入输出方法
2.学习使用数组实现相关算法
二、实验内容和步骤 |
1.分析并修改下面程序错误,使之能够正常运行。
错误代码一:
该程序统计数组元素之和并输出。
#include <stdio.h>
int main(void)
{
inta[5]={5,4,3,2,1};
inti;
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
正确代码:、
#include<stdio.h>
void main()
{
int a[5]={5,4,3,2,1};
int i,sum=0;
for (i=0;i<5;i++)
{
sum=sum+a[i];
}
printf("sum=%d\n",sum);
}
2.(1) 随机产生N 个正整数(10 < Ν ≤20 )存入数组 a 中,输出 a 中的最大值,最小
值及求出其平均值(保留两位小数)。
代码:
#include<stdio.h>
#include<time.h>
void main()
{
inti,N,rand_num[20],max,min,sum;
srand((unsigned)time(NULL));
N=(rand()%10+11);
for(i=0;i<N;i++)
{
rand_num[i]=rand();
}
max=min=rand_num[0];
sum=0;
while(i--)
{
sum+=rand_num[i];
if(i)
{
if(rand_num[i]>rand_num[i-1])
max=rand_num[i];
if(rand_num[i]<rand_num[i-1])
min=rand_num[i];
}
}
printf("max:%d\nmin: %d\naverage: %.2f\n",max,min,sum/(N*0.1));
}
(2) 餐饮服务质量调查打分
某公司的主管需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
Grade Count Histogram
1 5 *****
2 10 **********
3 7 *******
...
10 3 ***
提示:
– 定义数组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个数据太多,进行测试的时候,可以让计算机生成随机数代替手工输入数据。
代码:
#include<stdio.h>
void main()
{
intscore[40],count[11]={0},i=40,k;
srand((unsigned)time(NULL));
while(i--)
{
score[i]=rand()%10+1;
}
for(i=0;i<40;i++)
{
count[score[i]]++;
}
printf("Grade Count Histogram\n");
for(i=1;i<11;i++)
{
printf("%d%15d ",i,count[i]);
k=i;
while(k--)
{
printf("*");
}
printf("\n");
}
}