#include <stdioh>
#define MAXSIZE 100
void main(void)
{
int i, m;
int max, min;
int arr[MAXSIZE];
float sum = 0;
printf("m = ");
scanf("%d", &m);//输入数据的个数
for (i=0; i<m; i++)
{
scanf("%d", &arr[i]);//输入数据
}
max = min = arr[0];//初始化最大最小值
for (i=0; i<m; i++)
{
sum += arr[i];//求所有数据总和
if (max < arr[i])//找最大值
{
max = arr[i];
}
if (min > arr[i])//找最小值
{
min = arr[i];
}
}
printf("\nMAX = %d\nMIN = %d\nAVG = %f\n", max, min, sum / m);//输出结果
}
#include <stdioh>
#include <conioh>
#include <mathh>
#include <processh>
#define N 5//N个点
#define T 3 //T次拟合
#define W 1//权函数
#define PRECISION 000001
float pow_n(float a,int n)
{
int i;
if(n==0)
return(1);
float res=a;
for(i=1;i<n;i++)
{
res=a;
}
return(res);
}
void mutiple(float a[][N],float b[][T+1],float c[][T+1])
{
float res=0;
int i,j,k;
for(i=0;i<T+1;i++)
for(j=0;j<T+1;j++)
{
res=0;
for(k=0;k<N;k++)
{
res+=a[i][k]b[k][j];
c[i][j]=res;
}
}
}
void matrix_trans(float a[][T+1],float b[][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<T+1;j++)
{
b[j][i]=a[i][j];
}
}
}
void init(float x_y[][2],int n)
{
int i;
printf("请输入%d个已知点:\n",N);
for(i=0;i<n;i++)
{
printf("(x%d y%d):",i,i);
scanf("%f %f",&x_y[i][0],&x_y[i][1]);
}
}
void get_A(float matrix_A[][T+1],float x_y[][2],int n)
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<T+1;j++)
{
matrix_A[i][j]=Wpow_n(x_y[i][0],j);
}
}
}
void print_array(float array[][T+1],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<T+1;j++)
{
printf("%-g",array[i][j]);
}
printf("\n");
}
}
void convert(float argu[][T+2],int n)
{
int i,j,k,p,t;
float rate,temp;
for(i=1;i<n;i++)
{
for(j=i;j<n;j++)
{
if(argu[i-1][i-1]==0)
{
for(p=i;p<n;p++)
{
if(argu[p][i-1]!=0)
break;
}
if(p==n)
{
printf("方程组无解!\n");
exit(0);
}
for(t=0;t<n+1;t++)
{
temp=argu[i-1][t];
argu[i-1][t]=argu[p][t];
argu[p][t]=temp;
}
}
rate=argu[j][i-1]/argu[i-1][i-1];
for(k=i-1;k<n+1;k++)
{
argu[j][k]-=argu[i-1][k]rate;
if(fabs(argu[j][k])<=PRECISION)
argu[j][k]=0;
}
}
}
}
void compute(float argu[][T+2],int n,float root[])
{
int i,j;
float temp;
for(i=n-1;i>=0;i--)
{
temp=argu[i][n];
for(j=n-1;j>i;j--)
{
temp-=argu[i][j]root[j];
}
root[i]=temp/argu[i][i];
}
}
void get_y(float trans_A[][N],float x_y[][2],float y[],int n)
{
int i,j;
float temp;
for(i=0;i<n;i++)
{
temp=0;
for(j=0;j<N;j++)
{
temp+=trans_A[i][j]x_y[j][1];
}
y[i]=temp;
}
}
void cons_formula(float coef_A[][T+1],float y[],float coef_form[][T+2])
{
int i,j;
for(i=0;i<T+1;i++)
{
for(j=0;j<T+2;j++)
{
if(j==T+1)
coef_form[i][j]=y[i];
else
coef_form[i][j]=coef_A[i][j];
}
}
}
void print_root(float a[],int n)
{
int i,j;
printf("%d个点的%d次拟合的多项式系数为:\n",N,T);
for(i=0;i<n;i++)
{
printf("a[%d]=%g,",i+1,a[i]);
}
printf("\n");
printf("拟合曲线方程为:\ny(x)=%g",a[0]);
for(i=1;i<n;i++)
{
printf(" + %g",a[i]);
for(j=0;j<i;j++)
{
printf("X");
}
}
printf("\n");
}
void process()
{
float x_y[N][2],matrix_A[N][T+1],trans_A[T+1][N],coef_A[T+1][T+1],coef_formu[T+1][T+2],y[T+1],a[T+1];
init(x_y,N);
get_A(matrix_A,x_y,N);
printf("矩阵A为:\n");
print_array(matrix_A,N);
matrix_trans(matrix_A,trans_A);
mutiple(trans_A,matrix_A,coef_A);
printf("法矩阵为:\n");
print_array(coef_A,T+1);
get_y(trans_A,x_y,y,T+1);
cons_formula(coef_A,y,coef_formu);
convert(coef_formu,T+1);
compute(coef_formu,T+1,a);
print_root(a,T+1);
}
void main()
{
process();
}
]]>
</Content>
<PostDateTime>2007-4-19 19:23:57</PostDateTime>
</Reply>
<Reply>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>100</credit>
<ReplyID>40389872</ReplyID>
<TopicID>5478010</TopicID>
<PostUserId>1526752</PostUserId>
<PostUserName>jiangxc2004</PostUserName>
<Point>0</Point>
<Content>
<![CDATA[
你可以改一下
不从终端输入,直接在程序中给出参数
请输入5个已知点:
(x0 y0):-2 -01
(x1 y1):-1 01
(x2 y2):0 04
(x3 y3):1 09
(x4 y4):2 16
矩阵A为:
1 -2 4 -8
1 -1 1 -1
1 0 0 0
1 1 1 1
1 2 4 8
法矩阵为:
5 0 10 0
0 10 0 34
10 0 34 0
0 34 0 130
5个点的3次拟合的多项式系数为:
a[1]=0408571, a[2]=0391667, a[3]=00857143, a[4]=000833333,
拟合曲线方程为:
y(x)=0408571 + 0391667X + 00857143XX + 000833333XXX
]]>
</Content>
<PostDateTime>2007-4-19 19:26:11</PostDateTime>
</Reply>
<Reply>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>100</credit>
<ReplyID>40390406</ReplyID>
<TopicID>5478010</TopicID>
<PostUserId>1526752</PostUserId>
<PostUserName>jiangxc2004</PostUserName>
<Point>0</Point>
<Content>
<![CDATA[
这样就可以直接调用process()函数了!
二次拟合的话就把宏 T 成2;
拟合点的数目 N 也可以修改!
也可以去到注释的部分进行返回值的调用!
#include <stdioh>
#include <malloch>
void main()
{
int N,flag = 1;
printf("Please input the N:");
while(flag)
{
scanf("%d",&N);
flag = 0;
if(N<2)
{
printf("Input the N again:");
flag = 1;
}
}
int data =(int)malloc(sizeof(int)N);
for(int i=0;i<N;i++)
scanf("%d",&data[i]);
int p,q;
p=q=data[0];
for(int j=0;j<N;j++)
{
if(data[j]<p)
{
p = data[j];
}
}
for(int k=0;k<N;k++)
{
if(data[k]==p)
continue;
if(data[k]<q)
q = data[k];
}
printf("%d %d\n",p,q);
}
#include<stdioh>
int main()
{
int a[5],i,max,min;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=1;i<5;i++)
{
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
}
printf("最大值为%d\n",max);
printf("最小值为%d\n",min);
return 0;
}
用指针求含有十个元素的数组最大值和最小值
主函数参考
int main()
{
int a[10],i,maxnum,minnum;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
FindMaxandMin(a,10,&maxnum,&minnum);
printf("%d %d",maxnum,minnum);
}
输入格式:
数组
输出格式:
最大值 最小值
输入样例:
1 2 3 5 4 6 7 8 9 10
输出样例:
10 1
扩展资料
#include
int main()
{
int a[3];
int i,j,temp;
printf("请输入3个数:");
for(i=0;i scanf("%d",&a[i]);
for(i=0;i for(j=0;j if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("最大值%d最小值%d",a[2],a[0]);
return 0;
}
参考资料:
以上就是关于如何设计“输入m个数,求其最大值、最小值、平均数”的c程序全部的内容,包括:如何设计“输入m个数,求其最大值、最小值、平均数”的c程序、求一个最小二乘法C语言程序、用C语言编译程序:求最小的两个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)