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
得到Max=5
Min=1
Avg=3.000
答案:#include "stdio.h"
int input(int s[])
{
int i;
printf("请输入数据:\n");
for(i=0;;i++)
{
scanf("%d",&s[i]);
if(s[i]==0)
break;
}
return(i);
}
void statistics(int n, int s[], int *max, int *min, float *avg)
{
int i;
float agg=0;
*max=s[0];
*min=s[0];
for(i=0;i<n;i++)
{
if(*max<s[i])
*max=s[i];
if(*min>s[i])
*min=s[i];
sum+=s[i];
*avg=sum/n;
}
}
void main()
{
int s[100],n,max,min;
float avg;
n=input(s);
statistics(n,s,&max,&min,&avg);
printf("最大数为:%d\n最小数为:%d\n平均数为:%f\n",max,min,avg);
}
其他:把问题说出来 第二,func中应当对指针参数的合法性进行判断,避免非法调用。 写错了 #include #include<iostream>
using namespace std;
int main()
{
int input(int s[]) ;
void statistics( int s[], int *max, int *min, float *avg);
int *max,*min,*avg,n;
int s[100];
cin>>n;
input(s);
statistics(n,s[],max, min, avg);
return 0;
}
int input(int s[])
{
int i=0,m;
while(1)
{
scanf("%d",&m);
if(m=0)
break;
else
s[i]=m;
i++
}
}
void statistics( int s[], int *max, int *min, float *avg)
{
int sum;
for(i=0;s[i]!=0;i++)
{
sum+=s[i];
}
*avg=sum/n;
for(max=s;s[i]!=0;i++)
{
if(*max<s[i])
{
*max=s[i];
}
else
continue;
}
for(min=s;s[i]!=0;i++)
{
if(*min>s[i])
{
*min=s[i];
}
else
continue;
}
}
上一个:求解几道c语言题,求教高手
下一个:求2011全国计算机二级C语言考试的 《南开100题》公共基础知识和机试试题。