leihen0218 发表于 2018-6-5 17:13:26

高手帮忙看看 哪里错了

#include <stdio.h>

double pingjunfen, zuigao, zuidi, sum;

double fenshu(double b);


void main()
{
       

        int a;
        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)
{
        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)

BngThea 发表于 2018-6-5 17:25:53

用一个double变量接收fenshu函数的计算结果
而且函数本身也没写对,不能这样传递实参
应该改为
double fenshu(double b[],int len)

风过无痕丶 发表于 2018-6-5 17:42:55


#include <stdio.h>

double pingjunfen,sum;

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

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

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

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

        system("pause");
}

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

LordHdy 发表于 2018-6-6 00:16:35

scanf("%d",&a);//数组是double类型,输入数据类型应该为%lf ,a是数组首地址,再加&符号是不对的, 可以用a+i或者&a
printf("%d",a);//输入数据类型应该为%lf ,a是数组,输出的时候应该用a或者 *(a+i)
double fenshu(double b)//返回值类型为double,要有同类型的变量接收其返回值,参数中数组个数不用写
                                           //按你的写法应该pingjunfen =fenshu(a);
                                           //函数里面的sum应该赋初值0,不然sum会随机分配,结果会错误
以上是我的一些小意见,希望采纳{:5_91:}

LordHdy 发表于 2018-6-6 00:24:37

scanf("%d",&a);//a是double类型数组, 所以应该用%lf接收输入数据, a是数组首地址,所以后面的&a应该改为a+i或者&a
printf("%d",a);   //问题同上, a为数组首地址,输出时可以用a或者*(a+i)
double fenshu(double b) //函数参数里面数组不要数组个数
                                          //函数内部sum应该赋初值0.0,不然程序随机分配,结果会出错
                                          //函数的返回值类型为double,所以应该有个double类型的变量接收返回值,可以用pingjunfen = fenshu(a);
printf("%d",pingjunfen);//同上
页: [1]
查看完整版本: 高手帮忙看看 哪里错了