c语言问题 10

随机输入一批(不超过100人)学生的学号和身高,统计超过平均身高或身高超过170cm的学生人数并输出相应的学生信息和统计结果。#include<stdio.h>voidm... 随机输入一批(不超过100人)学生的学号和身高,统计超过平均身高或身高超过170cm的学生人数并输出相应的学生信息和统计结果。

#include <stdio.h>
void main( )
{
int i,aver,n=0,count=0,sum=0;/* n-总人数,count-满足条件人数,sum-身高和 */
int xh[100],sg[100];
printf("输入一批(不超过100人)学生的学号与身高:\n",n); /* 输入提示 */
//在两条星线间填入相应代码, 输入一批学生学号与身高,求身高和与总人数
/***********************************************************************/
for(i=0;i<100;i++)
{
scanf("%d%d",&xh[i],&sg[i]);
n=n+i;
sum=sum+sg[i];
}

/***********************************************************************/
if(n>0)aver=sum/n;else aver=0; /* 求平均身高 */
/* 输出结果 */
printf("身高超过平均身高或身高超过170cm的学生信息\n");
printf("学号 身高\n");
//在两条星线间填入相应代码, 输出满足条件的学生信息
/***********************************************************************/
for(i=0;i<n;i++)
{
if(sg[i]>aver||sg[i]>170)
{
printf("%d%d",xh[i],sg[i]);
count=count+1;
}
}

/***********************************************************************/
printf("身高超过平均身高%.0fcm或超过170cm的学生人数是%d人\n",aver,count);
}
哪里错了
展开
 我来答
石榴玉露香凝2510
推荐于2017-12-16 · TA获得超过134个赞
知道答主
回答量:94
采纳率:0%
帮助的人:100万
展开全部
n 越界了,超过了100.

似乎应当把 n=n+i 改成 n=n+1 或 n++

还有其他问题:建议这样修改:

for(i=0;i<100;i++)
{
setbuf(stdin, NULL); //清空当前输入缓存(连续使用 scanf 时最好这样做)
scanf("%d,%d",&xh[i],&sg[i]);
if(xh[i] == 0 || sg[i] == 0) break;
n=n+1;
sum = sum+sg[i];
}

每输入两个数后回车,如 23,45 回车,
最后输入 0,0 后回车,表示输入完毕
天下唯我驰骋
2013-11-23 · 超过11用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:24.5万
展开全部
首先你这个程序输入个数是不可控的,n没起到作用,因为你控制输入的循环已经规定了i是从0到99,必须要输入100个。而你这个“自认为统计总人数”的n=n+i,相当于n=1+2+3+...,那是不可能的。
while(xh(i)!='$')
{scanf("%d%d",&xh[i],&sg[i]);
n++;
i++;
sum=sum+sg[i];
)
用美元符号做输入结束符号,N是人数,sg是身高,后面一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式