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语言数组比较求最小值的主要内容,如果未能解决你的问题,请参考以下文章

c语言求两个数组的并交集

c语言计算数组的长度,最大最小值 补全程序?

c语言 输入五行六列的数组,求最大值

c语言求解,,,输出一组数的最大值,最小值,和,平均值(保留2位小数)。。不能用数组

C语言 利用指针实现求数组元素中的最大值和最小值

C语言编程:任意输入10个整数放入数组中,然后求其中的最大值和最小值