C语言求助!!!

C语言求助!!!练习5-9... C语言求助!!!练习5-9 展开
 我来答
碧海风云

2017-07-14 · 碧海风的秘密小据点!
碧海风云
采纳数:909 获赞数:10281

向TA提问 私信TA
展开全部
#include <stdio.h>

#define NUMBER 80 /*人数上限*/

int main(void) {
/*为了测试方便,以下学生人数、分数,按照代码清单5-12右侧运行结果直接赋值*/
int i,j;
int num = 15; /*实际的人数*/
int tensu[NUMBER] = {17,38,100,95,23,62,77,45,69,81,83,51,42,36,60}; /*学生的分数*/
int bunpu[11] = {0,1,1,2,2,1,3,1,2,1,1}; /*分布图*/
int bunpuCol[NUMBER][11] = {0}; /*纵向分布图*/
int bunpuTmp[11] = {0}; /*分布图备份*/
int bunpuMax; /*分布图最大值*/

bunpuMax = bunpu[0]; 
for (j=0; j<11; j++) {
bunpuTmp[j] = bunpu[j]; /*将分布图复制到bunpuTmp*/
if (bunpu[j]>bunpuMax)
bunpuMax = bunpu[j];
}

for (i=0; i<bunpuMax; i++) { /*将分布图转录为纵向分布图*/
for (j=0; j<11; j++) {
if (bunpuTmp[j]!=0) {
bunpuCol[i][j] = 1; /*将分布图中的*转录为二维数组中的标记*/
bunpuTmp[j]--;
}
}
}

for (i=bunpuMax-1; i>=0; i--) { /*上下颠倒输出*/
for (j=0; j<11; j++) {
if (bunpuCol[i][j]==1)
printf ("%2c%c%2c",32,'*',32);
else
printf ("%5c",32);
}
putchar ('\n');
}

puts("-------------------------------------------------------");
printf ("  %d    %d   %d   %d   %d   %d   %d   %d   %d   %d  %d \n"
,0,10,20,30,40,50,60,70,80,90,100);

getch (); /*屏幕暂留*/
    return 0;
}

运行结果

知行合一且止于至善
2017-07-14 · TA获得超过155个赞
知道小有建树答主
回答量:174
采纳率:74%
帮助的人:43.9万
展开全部
首先,源程序是从100到0一个个输出的,比较符合输出的格式,所以简单一些。而图二的输出不能只知道一个100分的就输出,必须要把所有的成绩统计出来,找出所有每个分数段的人数,还要比较出最高人数,以最高人数确定输出的总行数,总行数减去已经输出的行数的结果与分数段数比较,小于等于就输出*否则输出空格。最后输出0到100的一行字。

还有一个方法,也是要统计个分数段人数,并找出最大值,这次把她们保存到一个二维数组中,假设各分数段最大值是6,就定义一个二维数组a[11][7],初始化全为0,其中11可以理解为表示分数段0到10,7表示人数,从0开始,有一个人就将其赋1,这样,输出时就是遍历二维数组,0为空格,1为星号,这个思路在游戏里经常使用,可以试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5537万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式