学习《明解C语言第三版入门篇》笔记1

学习《明解C语言第三版入门篇》笔记1

5-1 数组:

题目如下:
(背景:统计班级内各个分数段的人数)
要求:首先输入学生人数,然后输入每个人的分数。以10分为一个区间(满分100分)统计各个学生的分数在每个区间里的频次。如图所示,生成纵向统计图。在这里插入图片描述

这是我学习这本书以来遇到的第一个偏难的题目,所以将解答代码记录于此。(仅学习一周C语言,代码非常幼稚,望谅解。)

代码如下:

#include<stdio.h>
#define NUMBER 80
int main(void)
{
int i,a,j;
int max,min;
int y[11]={0};
int x[NUMBER];
printf("请输入学生人数:");
do{
scanf("%d",&a);
if(a<1||a>NUMBER)
printf("\a请输入1~%d的整数!",NUMBER);
}while(a<1||a>NUMBER);
//人数(超过NUMBER则响铃)
printf("请输入%d人的分数。\n",a);
	for(i=0;i<a;i++){
	printf("%3d号:",i+1);
	do{
		scanf("%d",&x[i]);
	if(x[i]<0||x[i]>100)
	printf("\a请输入1~100之间的分数!");
	}while(x[i]<0||x[i]>100);
	y[x[i]/10]++;
	}
//分数(小于0或大于100则响铃)
max=y[0];
min=max;
//最高频次
puts("分布图如下:");
for(i=1;i<=10;i++)
{
	if (y[i]>max)
	{	
		max=y[i];
		min=max;
	}
}
for(i=1;i<=max;i++){
	for(j=0;j<=10;j++)
	{
		if(y[j]>=min)
			printf(" * ");
		else
			printf("   ");
	}
	min--;
	putchar('\n');
}
//每列大于等于最高频次则输出*,否则输出空格
//最高频次递减
puts("----------------------------------");
printf(" 0 10 20 30 40 50 60 70 80 90 100\n");
return 0;
}

运行结果如下:

编译环境:VC++6.0
(第一篇博客成就get!(๑╹◡╹)ノ""")

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页