C代码,用于查找两个用户输入数组的平均值、模式和中值
我大约有100行,代码可以正常工作,但是值不正确,有什么办法解决这个问题吗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[
#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;isum1/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
中保存了两个输出。双重调用是不必要的,也是不可取的。