壳970527 发表于 2022-11-10 00:56:11

平均值的大小以及大于平均值的数的个数和小于平均值的数的个数的函数

本帖最后由 壳970527 于 2022-11-10 00:59 编辑

#include <stdio.h>

double largesmall(int *data, int size, int *large, int *small);

int main(void) {
int data[] = {6, 12, 23, 4, 9, 7, 5, 10, 8, 1};
//int data[] = {15, 1, 2, -18, 6, 4, -17, 0, 3, 9};
int size = 10;
double ave;   
int large = 0;   
int small = 0;      

ave = largesmall(data, size, *large, *small);
printf("平均値:%f \n", ave);
printf("平均値以上のデータの個数:%d \n",large);
printf("平均値より小さいデータの個数%d \n", small);

return 0;
}

double largesmall(int *date, int size, int *large, int *small) {
double temp;
int i;

temp = date+date+date+date+date+date+date+date+date+date;
temp = temp/10;
for (i=0;i<size;i++)
{
    if (date>temp)
    {
      large = large + 1;
    }
    else if (date<temp)
    {
      small = small + 1;
    }
    else{
      continue;
    }
}
return temp;


}



large是表示大于平均数的数的个数
small是表示小于平均数的数的个数
ave是平均数的值
不知道为什么 ave = largesmall(data, size, *large, *small);这一行中一直报错,我改了又改还是一直报错,请问下这是为什么呀
我的想法是利用指针在函数内进行计算然后直接得出结果
最后结果在外面打印出来,可是一直报错,指针真的好难- -

jackz007 发表于 2022-11-10 01:01:15

         定义的时候才需要说明参数类型
ave = largesmall(data, size, *large, *small)
         调用的时候只需要直接使用变量
ave = largesmall(data, size, large, small)

壳970527 发表于 2022-11-10 01:05:51

jackz007 发表于 2022-11-10 01:01
定义的时候才需要说明参数类型

         调用的时候只需要直接使用变量

谢谢大佬,我改了之后可以运行了,但是还是这一行,large,small的下面出现的黄色的波浪线,然后运行出来之后,可以得出平均值,但是大于和小于的值都只有等于0- -。。 好像还是不行

jackz007 发表于 2022-11-10 01:20:17

壳970527 发表于 2022-11-10 01:05
谢谢大佬,我改了之后可以运行了,但是还是这一行,large,small的下面出现的黄色的波浪线,然后运行出来 ...
          再改这样试试
ave = largesmall(data, size, & large, & small)

壳970527 发表于 2022-11-10 01:27:50

jackz007 发表于 2022-11-10 01:20
再改这样试试

谢谢大佬!!可以了,能不能帮忙看下我的函数是不是写的有问题呀,不知道为什么大于和小于平均值的数的个数出问题了- -不知道为什么

壳970527 发表于 2022-11-10 01:34:18

jackz007 发表于 2022-11-10 01:20
再改这样试试

按理来说large的值应该是4 small的值应该是6
可是我的出来的是large是1 small是个十几万的数- -

壳970527 发表于 2022-11-10 01:55:29

jackz007 发表于 2022-11-10 01:20
再改这样试试

double largesmall(int *date, int size, int *large, int *small) {
double temp;
int i;

temp = date+date+date+date+date+date+date+date+date+date;
temp = temp/size;
for (i=0;i<size;i++)
{
    if (date>temp)
    {
      large++;
    }
    else if (date<temp)
    {
      small++;
    }
   
    }
return temp;
}
这是我的函数,不知道为什么得出来的值有问题,我看了好几遍,我觉得没什么问题- -头大呀

jackz007 发表于 2022-11-10 02:31:28

壳970527 发表于 2022-11-10 01:55
double largesmall(int *date, int size, int *large, int *small) {
double temp;
int i;


#include <stdio.h>

double largesmall(int date[] , int size, int * large , int * small)
{
      double temp                                          ;
      int i                                                ;
      for(temp = i = 0 ; i < size ; i ++) temp += date;
      temp /= 10                                           ;
      for(* large = * small = i = 0 ; i < size ; i ++) {
                if(date > temp) (* large) ++            ;
                else (* small) ++                            ;
      }
      return temp                                          ;
}

int main(void) {
      int data[] = {6, 12, 23, 4, 9, 7, 5, 10, 8, 1}       ;
      int size = 10 , large = 0 , small = 0                ;
      double ave                                           ;
      ave = largesmall(data , size , & large , & small)    ;
      printf("平均値:%f \n" , ave)                        ;
      printf("平均値以上のデータの個数:%d \n" , large)    ;
      printf("平均値より小さいデータの個数:%d\n" , small) ;
      return 0                                             ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
平均値:8.500000
平均値以上のデータの個数:4
平均値より小さいデータの個数:6

D:\\C>

壳970527 发表于 2022-11-10 19:54:19

jackz007 发表于 2022-11-10 02:31
编译运行实况:

那天晚上自己研究的时候,做出来了,不过还是谢谢大佬
页: [1]
查看完整版本: 平均值的大小以及大于平均值的数的个数和小于平均值的数的个数的函数