输入第一行为整数T(1<T<5)后边是T行正整数,个数不确定,以-1结束。输出为T行,每行对应输入中的T行测试数据,依次输出数据中的最小值、最大值以及平均值。三个数之间以一个空格分隔,平均值要求保留两位小数。测试数据保证求和结果可以用int型存储。我的代码如下:#include <stdio.h>int main(){ int T; scanf("%d",&T); int i,j,s[5][100]; for(i=0;i<T;i++) { for(j=0;j>=0;j++) { scanf("%d",&s[i][j]); if(s[i][j]==-1) break; } } int min,max; float sum,avg; for(i=0;i<T;i++) { min=s[i][0]; max=s[i][0]; sum=s[i][0]; for(j=1;s[i][j]!=-1;j++) { if(s[i][j]<min) min=s[i][j]; if(s[i][j]>max) max=s[i][j]; sum=sum+s[i][j]; } avg=sum/j; printf("%d %d %.2f\n",min,max,avg); } return 0;}
构思有问题——题目要求每行的数据个数不限,以-1结束,而你提供的代码每行只能输入最多100个数。就这一点就可以Don't pass!给你提供一个作参考——
#include "stdio.h"运行样例:
追问谢谢您的回答,但是我可以肯定是的100那儿没有问题,因为以前的地方,我都是这么操作的,所以还请帮忙看看还有哪儿的问题。
追答for(j=0;j>=0;j++)这一句什么时候结束?万一输入100个数了还没有输入-1不就乱套了?
avg=sum/j;这一句求不出平均值来,因为sum/j是取整除,得不到浮点平均值。应该写成avg=sum/(j+0.0);或者avg=(sum+0.0)/j;或者float(sum)/j;或(float)sum/j;等。
若你说的限制100长不算错,那经上面改进就可以了……