鱼C论坛

 找回密码
 立即注册
查看: 1634|回复: 4

[已解决]高手帮忙看看 哪里错了

[复制链接]
发表于 2018-6-5 17:13:26 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

double pingjunfen, zuigao, zuidi, sum;

double fenshu(double b[10]);


void main()
{
       

        int a[10];
        int i;


        printf("请输入学生成绩: \n");
        for(i=0; i < 10; i ++)
        {
                scanf("%d",&a);
        }
       
        for(i=0; i < 10; i ++)
        {
                printf("%d  ",a);
        }
       
        double fenshu(a);
        printf("%d",pingjunfen);
       
       
}

double fenshu(double b[10])
{
        int i;
        for(i=0; i < 10; i++)
        {
                sum = sum + b;
               
               
        }
        pingjunfen = sum / 10;
       
        return pingjunfen;
}

--------------------Configuration: text - Win32 Debug--------------------
Compiling...
text.c
F:\C例题\textp\text.c(27) : error C2143: syntax error : missing ';' before 'type'
执行 cl.exe 时出错.

text.obj - 1 error(s), 0 warning(s)
最佳答案
2018-6-6 00:24:37
scanf("%d",&a);  //a是double类型数组, 所以应该用%lf接收输入数据, a是数组首地址,所以后面的&a应该改为a+i或者&a[i]
printf("%d  ",a);   //问题同上, a为数组首地址,输出时可以用a[i]或者*(a+i)
double fenshu(double b[10]) //函数参数里面数组不要数组个数
                                          //函数内部sum应该赋初值0.0,不然程序随机分配,结果会出错
                                          //函数的返回值类型为double,所以应该有个double类型的变量接收返回值,可以用pingjunfen = fenshu(a);
printf("%d",pingjunfen);  //同上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-5 17:25:53 | 显示全部楼层
用一个double变量接收fenshu函数的计算结果
而且函数本身也没写对,不能这样传递实参
应该改为
double fenshu(double b[],int len)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-5 17:42:55 | 显示全部楼层

  1. #include <stdio.h>

  2. double pingjunfen,sum;

  3. void fenshu(double b[], int length);

  4. void main(){
  5.         double a[10];
  6.         printf("请输入学生成绩: \n");
  7.         for (int i = 0; i < 10; i++){
  8.                 scanf("%lf", &a[i]);
  9.         }

  10.         for (int i = 0; i < 10; i++){
  11.                 printf("%.2f  ", a[i]);
  12.         }

  13.         fenshu(a,10);
  14.         printf("%.2f", pingjunfen);

  15.         system("pause");
  16. }

  17. void fenshu(double b[], int length){
  18.         for (int i = 0; i < 10; i++)
  19.         {
  20.                 sum = sum + b[i];
  21.         }
  22.         pingjunfen = sum / length;
  23. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 00:16:35 | 显示全部楼层
scanf("%d",&a);  //数组是double类型,输入数据类型应该为%lf ,a是数组首地址,再加&符号是不对的, 可以用a+i或者&a[i]
printf("%d  ",a);  //输入数据类型应该为%lf ,a是数组,输出的时候应该用a[i]或者 *(a+i)
double fenshu(double b[10])  //返回值类型为double,要有同类型的变量接收其返回值,参数中数组个数不用写
                                           //按你的写法应该pingjunfen =  fenshu(a);
                                           //函数里面的sum应该赋初值0,不然sum会随机分配,结果会错误
以上是我的一些小意见,希望采纳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 00:24:37 | 显示全部楼层    本楼为最佳答案   
scanf("%d",&a);  //a是double类型数组, 所以应该用%lf接收输入数据, a是数组首地址,所以后面的&a应该改为a+i或者&a[i]
printf("%d  ",a);   //问题同上, a为数组首地址,输出时可以用a[i]或者*(a+i)
double fenshu(double b[10]) //函数参数里面数组不要数组个数
                                          //函数内部sum应该赋初值0.0,不然程序随机分配,结果会出错
                                          //函数的返回值类型为double,所以应该有个double类型的变量接收返回值,可以用pingjunfen = fenshu(a);
printf("%d",pingjunfen);  //同上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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