C语言编程题求代码,不会做啊
用一个函数实现数据输入的功能,其首部为:
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 展开
一时半会儿没理解你这句话“函数返回值大于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);
}
不是,就一道课后习题而已代码怎么写啊
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;
}