C语言编程题求代码,不会做啊

题目描述从键盘输入若干数据整数(零表示结束),统计出数据个数,以及最大值、最小值和平均值。用一个函数实现数据输入的功能,其首部为:intInput(ints[])Inpu... 题目描述从键盘输入若干数据整数(零表示结束),统计出数据个数,以及最大值、最小值和平均值。
用一个函数实现数据输入的功能,其首部为:
int Input(int s[])
Input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。
用一个函数实现求最大值、最小值和平均值的功能,首部为:
void statistics(int n, int s[], int *max, int *min, float *avg)输入从键盘输入若干数据整数(零表示结束)输出统计出数据个数,以及最大值、最小值和平均值 样例输入1 2 3 4 5 0样例输出Num=5
Max=5
Min=1
Avg=3.000
展开
 我来答
ttt139777
2012-12-03
知道答主
回答量:6
采纳率:0%
帮助的人:6.1万
展开全部

 

一时半会儿没理解你这句话“函数返回值大于0表示该行输入的数据个数,0表示输入结束。”,只能写成这个样了,你稍微改改。

#include<stdio.h> 

int Input(int s[]) 

{

 int i=0;

    scanf("%d",&s[i]); 

    while(s[i++]!=0)

 {

  scanf("%d",&s[i]); 

 }   

 s[i]='\0';

 return *s;

}

 

void statistics(int n, int s[], int *max, int *min, float *avg)

{

 int i=0,j=0,temp,sum=0;

 temp=s[0];

 for(i=1;i<n;i++)

    if(s[i]>temp) temp=s[i];

 *max=temp;   

 temp=s[0];

 for(i=1;i<n;i++)

    if(s[i]<temp) temp=s[i];

    *min=temp;

    for(i=0;i<n;i++)

  sum+=s[i];

 *avg=(float(sum/(1.0*n)));

}

 

void main()   

{

 int num=0,max=0,min=0,data[100];

 float avg=NULL;

 printf("Input(0表示结束):\n");

    Input(data);

 while(data[num]!='\0')

  num++;

 statistics(num,data,&max,&min,&avg);

 printf("Num=%d\nMax=%d\nMin=%d\nAvg=%.3f\n",num,max,min,avg);

}

 

 

yangxufeiasd
2012-12-02 · 超过11用户采纳过TA的回答
知道答主
回答量:29
采纳率:100%
帮助的人:15.7万
展开全部
编程大赛的题么?自己想吧,多行输入,多行输出,0结束,编程大赛的破题
追问
不是,就一道课后习题而已代码怎么写啊
追答
scanf接受输入,用一个变量存储数据就可以了
int tmp = 0;

while(1) {
scanf(" %d", &tmp);
if (tmp == 0) break;
}
统计数据个数,明白了么,我只加了一个变量而已;
int tmp = 0;
int count = 0;
while(1) {
scanf(" %d", &tmp);
if (tmp == 0) break;
count++;

}
求平均值,你要学会用最少的变量完成某个任务,就像下面这样,但是,你首先要保证不能使程序变得反复无常;
int tmp = 0;
int count = 0;
double avg = 0;
while(1) {
scanf(" %d", &tmp);
if (tmp == 0) break;
count++;
avg += tmp;

}
avg /= count;
最大值最小值,你也只需要这样就行了;
int tmp = 0;
int count = 0;
int max = 0;
int min = 0;
double avg = 0;
while(1) {
scanf(" %d", &tmp);
if (tmp == 0) break;
count++;
avg += tmp;
if (max tmp) min = tmp; /* 这里为什么要加else,想不出来去问老师*/
}
avg /= count;
行了,程序就这么简单,把它拾掇拾掇就OK了;
int func (double *avg, int *max, int *min)
{
int tmp = 0;
int count = 0;
*avg = 0; *max = 0; *min = 0;
while ( 1) {
scanf(" %d", &tmp);
if (tmp == 0) break;
count++;
*avg += tmp;
if (*max tmp) *min = tmp;
}
*avg /= count;
return count;
}
主函数:
#include
int main (void)
{
int count, max, min;

double avg;

while (1) {

count = func(&avg, &max, &min);
if (count == 0) break;

printf("%lf, %d, %d\n", avg, max, min);

}

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式