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);
}
哪里错了 展开
#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);
}
哪里错了 展开
2个回答
展开全部
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 后回车,表示输入完毕
似乎应当把 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 后回车,表示输入完毕
展开全部
首先你这个程序输入个数是不可控的,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是身高,后面一样。
while(xh(i)!='$')
{scanf("%d%d",&xh[i],&sg[i]);
n++;
i++;
sum=sum+sg[i];
)
用美元符号做输入结束符号,N是人数,sg是身高,后面一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询