鱼C论坛

 找回密码
 立即注册
查看: 2943|回复: 8

[已解决]平均值的大小以及大于平均值的数的个数和小于平均值的数的个数的函数

[复制链接]
发表于 2022-11-10 00:56:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 壳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[0]+date[1]+date[2]+date[3]+date[4]+date[5]+date[6]+date[7]+date[8]+date[9];
  temp = temp/10;
  for (i=0;i<size;i++)
  {
    if (date[i]>temp)
    {
      large = large + 1;
    }
    else if (date[i]<temp)
    {
      small = small + 1;
    }
    else{
      continue;
    }
  }
  return temp;


}



large是表示大于平均数的数的个数
small是表示小于平均数的数的个数
ave是平均数的值
不知道为什么 ave = largesmall(data, size, *large, *small);这一行中一直报错,我改了又改还是一直报错,请问下这是为什么呀
我的想法是利用指针在函数内进行计算然后直接得出结果
最后结果在外面打印出来,可是一直报错,指针真的好难- -
最佳答案
2022-11-10 01:20:17
壳970527 发表于 2022-11-10 01:05
谢谢大佬,我改了之后可以运行了,但是还是这一行,large,small的下面出现的黄色的波浪线,然后运行出来 ...

          再改这样试试
  1. ave = largesmall(data, size, & large, & small)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-10 01:01:15 | 显示全部楼层
         定义的时候才需要说明参数类型
  1. ave = largesmall(data, size, *large, *small)
复制代码

         调用的时候只需要直接使用变量
  1. ave = largesmall(data, size, large, small)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:05:51 | 显示全部楼层
jackz007 发表于 2022-11-10 01:01
定义的时候才需要说明参数类型

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

谢谢大佬,我改了之后可以运行了,但是还是这一行,large,small的下面出现的黄色的波浪线,然后运行出来之后,可以得出平均值,但是大于和小于的值都只有等于0- -。。 好像还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-10 01:20:17 | 显示全部楼层    本楼为最佳答案   
壳970527 发表于 2022-11-10 01:05
谢谢大佬,我改了之后可以运行了,但是还是这一行,large,small的下面出现的黄色的波浪线,然后运行出来 ...

          再改这样试试
  1. ave = largesmall(data, size, & large, & small)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:27:50 | 显示全部楼层

谢谢大佬!!可以了,能不能帮忙看下我的函数是不是写的有问题呀,不知道为什么大于和小于平均值的数的个数出问题了- -不知道为什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:34:18 | 显示全部楼层

按理来说large的值应该是4 small的值应该是6
可是我的出来的是large是1 small是个十几万的数- -
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:55:29 | 显示全部楼层


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

  temp = date[0]+date[1]+date[2]+date[3]+date[4]+date[5]+date[6]+date[7]+date[8]+date[9];
  temp = temp/size;
  for (i=0;i<size;i++)
  {
    if (date[i]>temp)
    {
      large++;
    }
    else if (date[i]<temp)
    {
      small++;
    }
   
    }
  return temp;
}
这是我的函数,不知道为什么得出来的值有问题,我看了好几遍,我觉得没什么问题- -头大呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
  1. #include <stdio.h>

  2. double largesmall(int date[] , int size, int * large , int * small)
  3. {
  4.         double temp                                          ;
  5.         int i                                                ;
  6.         for(temp = i = 0 ; i < size ; i ++) temp += date[i]  ;
  7.         temp /= 10                                           ;
  8.         for(* large = * small = i = 0 ; i < size ; i ++) {
  9.                 if(date[i] > temp) (* large) ++              ;
  10.                 else (* small) ++                            ;
  11.         }
  12.         return temp                                          ;
  13. }

  14. int main(void) {
  15.         int data[] = {6, 12, 23, 4, 9, 7, 5, 10, 8, 1}       ;
  16.         int size = 10 , large = 0 , small = 0                ;
  17.         double ave                                           ;
  18.         ave = largesmall(data , size , & large , & small)    ;
  19.         printf("平均値:%f \n" , ave)                        ;
  20.         printf("平均値以上のデータの個数:%d \n" , large)    ;
  21.         printf("平均値より小さいデータの個数:%d\n" , small) ;
  22.         return 0                                             ;
  23. }
复制代码

        编译运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. 平均値:8.500000
  4. 平均値以上のデータの個数:4
  5. 平均値より小さいデータの個数:6

  6. D:\[00.Exerciese.2022]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 19:54:19 | 显示全部楼层

那天晚上自己研究的时候,做出来了,不过还是谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 08:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表