C语言数组比较求最小值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数组比较求最小值相关的知识,希望对你有一定的参考价值。
有3个给定的1X3的数组
A(a1,a2,a3)
B(b1,b2,b3)
C(c1,c2,c3)
将第四个数组D(d1,d2,d3)与前三个数组比较,每位数取差值的绝对值,然后求和
即S=|d1-x1|+|d2-x2|+|d3-x3|,X即为前三个数组的对应位的值
然后返回S最小情况下的那个数组(第1组或第2组或第3组),有相同最小值时返回4
求C语言代码,谢谢。
刚才有事耽误了......()
#include <stdio.h>//用于求绝对值
#define ABSO(m) (m>0?m:-m)
int S_value(int tmp[3],int D[3]);//用于求S的值,
int* Compare(int tmp_1[3], int tmp_2[3], int tmp_3[3], int D[3]);//返回要求的数组指针
void main()
int i=0;
int a[3]=1,5,9;
int b[3]=4,8,12;
int c[3]=3,7,11;
int d[3]=2,6,10;//题目中的ABCD是给定的吧?不是的话你再改改
int temp[3],*p=temp;
printf("结果如下:\\n");
p=Compare(a,b,c,d);
for(i=0;i<3;i++)
printf("%d\\t",p[i]);
int S_value(int tmp[3],int D[3])
int k=0,i=0;
for(i=0;i<3;i++)
k+=ABSO((tmp[i]-D[i]));
return k;
int* Compare(int tmp_1[3], int tmp_2[3], int tmp_3[3], int D[3])
int *tmp,flag=0;
int i,j;
i=S_value(tmp_1,D);
j=S_value(tmp_2,D);
printf("%d,%d\\n",i,j);
tmp=(i<j?tmp_1:(i!=j?tmp_2:(flag=1,tmp_2)));
i=S_value(tmp,D),j=S_value(tmp_3,D);
printf("%d,%d\\n",i,j);
/*这时,如果前两组比较结果是不同的,那么这次1.相同,就输出D[3],2.不同,就输出最小的tmp[3]/D[3]
如果前两组比较结果是相同的,那么这次1.相同,就输出D[3]2.不同,如枿a.相同的那组是最小的,输出D[3]b.相同的那两组不是最小的,救输出tmp_3[3]
*/
tmp=i>j?tmp_3:(i!=j?(flag!=0?D:tmp):D);
return tmp;
参考技术A #include "stdio.h"
#include "stdlib.h"
void input(int d[])
int i;
for(i=0;i<3;i++)
scanf("%d",d+i);
int bj(int d1[],int d2[])
int i,s;
s=0;
for(i=0;i<3;i++)
s+=abs(d1[i]-d2[i]);
return s;
int main()
int A[3],B[3],C[3],D[3];
int s[3];
int i,m,j;
input(A);
input(B);
input(C);
input(D);
s[0]=bj(A,D);
s[1]=bj(B,D);
s[2]=bj(C,D);
m=0;
j=0;
for(i=1;i<=2;i++)
if(s[i]<=s[m])
m=i;
for(i=0;i<2;i++)
if(s[i]==s[j] && i!=j)
j++;
if(j>0) m=3;
printf("%d",m+1);
本回答被提问者和网友采纳
c语言求解,,,输出一组数的最大值,最小值,和,平均值(保留2位小数)。。不能用数组
不能用数组
#include "stdio.h"
int main()
int n,i=0;
double num,sum=0,ave=0,max,min;
printf("一共有多少个数:");
scanf("%d",&n);
printf("请输入%d个数:\\n",n);
scanf("%lf",&num);
max=min=num;
sum+=num;
for(i=1;i<n;i++)
scanf("%lf",&num);
if(num>max)
max=num;
if(num<min)
min=num;
sum+=num;
ave=sum/n;
printf("输入的%d个数中,最大值为%.2lf,最小值为%.2lf,和为%.2lf,平均值为%.2lf\\n",n,max,min,sum,ave);
参考技术A
#include "stdio.h"
int main()
float d,max,min,sum,n;
printf("输入一组数,以非数字结束:\\n");
n=0;
sum=0;
while(scanf("%f",&d)>0)
if(n==0)
max=d;
min=d;
if(max<d) max=d;
if(min>d) min=d;
sum+=d;
n=n+1;
printf("最大数是:%.2f\\n",max);
printf("最小数是:%.2f\\n",min);
printf("和是:%.2f\\n",sum);
printf("平均数是:%.2f\\n",sum/n);
以上是关于C语言数组比较求最小值的主要内容,如果未能解决你的问题,请参考以下文章