C代码,用于查找两个用户输入数组的平均值、模式和中值

C代码,用于查找两个用户输入数组的平均值、模式和中值,c,arrays,mean,median,mode,C,Arrays,Mean,Median,Mode,我大约有100行,代码可以正常工作,但是值不正确,有什么办法解决这个问题吗 #include <stdio.h> #include <stdlib.h> #define size 6 #define size2 6 float mean(int arr1[],int arr2[],int i,float *mn1,float *mn2){ int sum1=0,sum2=0; for(i=0;i<=5;i++){ sum1=sum1+arr1[

我大约有100行,代码可以正常工作,但是值不正确,有什么办法解决这个问题吗


#include <stdio.h>
#include <stdlib.h>
#define size 6
#define size2 6
float mean(int arr1[],int arr2[],int i,float *mn1,float *mn2){
  int sum1=0,sum2=0;
  for(i=0;i<=5;i++){
      sum1=sum1+arr1[i];
      sum2=sum2+arr2[i];
  }
  *mn1=sum1/6;
  *mn2=sum2/6;
}
int median(int arr1[],int arr2[],int n,int n2,float *median1,float *median2){

  if(n%2==0){
      *median1=(arr1[(n-1)/2]+arr1[n/2])/2.0;
  }
  else{
      *median1=arr1[n/2];
  }
      if(n2%2==0){
      *median2=(arr2[(n2-1)/2]+arr2[n2/2])/2.0;
  }
  else{
      *median2=arr2[n2/2];
  }
  return *median2;
  return *median1;
}
int mode(int arr1[],int arr2[],int i,int q,int *max,int *max2){
  int xs[1000]={0};
  int xs2[1000]={0};
  for(i=0;i<6;i++){
      xs[arr1[i]]++;
      if(xs[arr1[i]]>*max){
          *max=xs[arr1[i]];
      }
  }
  for(q=0;q<6;q++){
      xs2[arr2[q]]++;
      if(xs2[arr2[q]]>*max2){
          *max2=xs2[arr2[i]];
      }
  }
  return *max;
  return *max2;
}
int main()
{
  float mn1=0.0,mn2=0.0;
  int arr1[size],arr2[size2];
  int i=0,q=0,temp,n=6,n2=6;
  float median1=0.0;
  float median2=0.0;
  int max=0,max2=0;
  printf("please fill array 1: ");
  for(i=0;i<size;i++){
      scanf("%d",&arr1[i]);
  }
      printf("please fill array 2: ");
  for(i=0;i<size2;i++){
      scanf("%d",&arr2[i]);
  }
   for(i=0 ; i<size ; i++){
      for(q=0 ; q<size-1 ; q++){
          if(arr1[q]>arr1[q+1]){
              temp=arr1[q];
              arr1[q]=arr1[q+1];
              arr1[q+1]=temp;}}}
   for(i=0 ; i<size2 ; i++){
      for(q=0 ; q<size2-1 ; q++){
          if(arr2[q]>arr2[q+1]){
              temp=arr2[q];
              arr2[q]=arr2[q+1];
              arr2[q+1]=temp;}}}
              if(mn1&&median1&&max>mn2&&median2&&max2){
                  printf("You're playing more video games you have to spent more time studying.\n ");
              }
             else{
                  printf("Good, you're spending considerable time in studying.\n");
              }
  mn1=mean( arr1, arr2, i, &mn1, &mn2);
  mn2=mean( arr1, arr2, i, &mn1, &mn2);
  median1=median( arr1, arr2, n, n2, &median1, &median2);
  median2=median( arr1, arr2, n, n2, &median1, &median2);
  max=mode( arr1, arr2, i, q, &max, &max2);
  max2=mode( arr1, arr2, i, q, &max, &max2);
  printf("\nMean of arr1 is: %0.1f\t Median of arr1 is:%0.1f\t Mode of arr1 is: %d\n",mn1,median1,max);
  printf("\nMean of arr2 is: %0.1f\t Median of arr2 is:%0.1f\t Mode of arr2 is: %d\n",mn2,median2,max2);
  return 0;
  return 0;
}

#包括
#包括
#定义尺寸6
#定义大小26
浮动平均值(整数arr1[],整数arr2[],整数i,浮动*mn1,浮动*mn2){
int sum1=0,sum2=0;

对于(i=0;i
sum1/6
。这是整数除法。请尝试
sum1/6.0
。您需要再次打开C教科书并开始阅读。看看函数和返回值对于初学者是如何工作的。请注意,
i
被误用在:
float-mean(int-arr1[],int-arr2[],int-i,float*mn1,float*mn2){int-sum1=0,sum2=0;例如(i=0;如果你使用正统的,它会有帮助-我推荐Allman(我的偏好)或1TB的变体。使用Pico样式可能适合Pico,但C不是Pico。如果您有任何选择,请不要将Pico样式用于C。如果我正确读取代码,则
If
语句会出现令人遗憾的错误。对数组进行排序的两个代码块应该是一个函数调用两次。您应该检查<代码> SCANFF()>操作>成功。您应该考虑一个函数来管理数组的读取。调用既不是代码,也不是MN1=平均值(ARR1,ARR2,I,MN1,和MN2);Mn2=均值(ARR1,ARR2,I,MN1,和MN2);< /C> >非常有意义。函数不返回值。(虽然它的定义说它应该-编译器应该警告您)。即使它确实返回了一个值,您也在通过引用传递的
mn1
mn2
中保存了两个输出。双重调用是不必要的,也是不可取的。