标题:有大佬知道为什么报这两个错误吗,感谢
只看楼主
铁甲
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-10-21
结帖率:80%
已结贴  问题点数:20 回复次数:5 
有大佬知道为什么报这两个错误吗,感谢
#include<stdio.h>
typedef struct{
    char name[20];
    int score[3];
}student;
const int number=10;
student student_input(student *pstudent){
    scanf("%c",&pstudent->name);
    int i=0;
    for( i=0;i<3;i++){
        scanf("%c",&pstudent->score[i]);
    }
    return pstudent;
}
void student_print(const student *pstudent){
    double avg=student_averge(pstudent);
        printf("%c",pstudent->name)    ;
        int i;
    for(i=0;i<3;i++){
        printf("%d",pstudent->score);
    }   
    printf("%.5f",avg);
}
void student_average(const student *pstudent){//求学生三科成绩平均值函数,需要传入一个地址
    double sum=0.0;
    int i;
    for(i=0;i<3;i++){
        sum+=pstudent->score[i];
    }
}
int main(){   
    printf("请输入学生姓名和各科目成绩\n");
    student student[number];//创建一个容量为20的结构数组
    student *pstudent;//创建一个该结构类型的指针,现在指针内部还未初始化
    pstudent=&student[0];//将用来存储学生数据的结构数组的第一个结构的首地址赋给刚刚定义的指针 ?试试删掉这行
    int i;
    for(i=0;i<10;i++){//将用户输入的数据分组传入结构数组
        pstudent=student_input(&student[i]);//主函数中定义的pstudent指针内存储的地址信息就是子函数中经过操作的结构数组的地址
        pstudent++;
    }
    printf("No\tname\tscore1\tscore2\tscore3\t");
    pstudent=&student[0];
    for(i=0;i<number;i++){
        student_printf(pstudent);
        pstudent++;
    }
    return 0;
}
报错
C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    In function 'student_input':
13    2    C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    [Error] incompatible types when returning type 'struct student *' but 'student' was expected
C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    In function 'main':
34    11    C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    [Error] 'pstudent' undeclared (first use in this function)
34    11    C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    [Note] each undeclared identifier is reported only once for each function it appears in
搜索更多相关主题的帖子: student 结构 成绩 for int 
2020-11-07 17:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
student student_input(student *pstudent){
    scanf("%c",&pstudent->name);
    int i=0;
    for( i=0;i<3;i++){
        scanf("%c",&pstudent->score[i]);
    }
    return pstudent;
}

有三个错误,声明返回 student,实际返回的是 student&。
scanf("%c",&pstudent->name); 应该是 scanf("%s",pstudent->name);
scanf("%c",&pstudent->score[i]); 应该是 scanf("%d",&pstudent->score[i]);
2020-11-07 18:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
错误实在太多了,我手机打字不方便,就不说了
2020-11-07 18:40
铁甲
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-10-21
得分:0 
回复 2楼 rjsp
第一个问题,返回传入的那个指针有什么问题吗,后面两个改过来了
2020-11-07 18:47
铁甲
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-10-21
得分:0 
C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    In function 'main':
34    11    C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    [Error] 'pstudent' undeclared (first use in this function)
34    11    C:\Users\yhxc\Desktop\C语言程序\统计班级同学成绩.c    [Note] each undeclared identifier is reported only once for each function it appears in
现在还有一个错误,有大佬知道吗
2020-11-07 19:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
程序代码:
#include <stdio.h>

typedef struct {
    char name[20];
    int score[3];
} student;

const size_t score_count = sizeof(((student*)NULL)->score)/sizeof(((student*)NULL)->score[0]);

void student_input( student* p )
{
    scanf( "%s", p->name );
    for( size_t i=0; i!=score_count; ++i )
        scanf( "%d", &p->score[i] );
}

double student_average( const student* p )
{
    double sum = 0.0;
    for( size_t i=0; i!=score_count; ++i )
        sum += p->score[i];
    return sum/score_count;
}

void student_print( size_t index, const student* p )
{
    printf( "%zu\t%s", index+1, p->name);
    for( size_t i=0; i!=score_count; ++i )
        printf( "\t%d", p->score[i] );
    printf( "\t%.5f\n", student_average(p) );
}

int main( void )
{
    student stus[10];

    const size_t student_count = sizeof(stus)/sizeof(*stus);
    puts( "请输入学生姓名和各科目成绩") ;
    for( size_t i=0; i!=student_count; ++i )
        student_input( &stus[i] );

    printf( "No\tname\tscore1\tscore2\tscore3\taverage\n");
    for( size_t i=0; i!=student_count; ++i )
        student_print( i, &stus[i] );
}


输入
a 1 2 3
b 3 4 5
c 1 2 3
d 1 2 3
e 1 2 3
f 1 2 3
g 1 2 3
h 1 2 3
i 1 2 3
j 1 2 3


输出
请输入学生姓名和各科目成绩
No    name    score1    score2    score3    average
1    a    1    2    3    2.00000
2    b    3    4    5    4.00000
3    c    1    2    3    2.00000
4    d    1    2    3    2.00000
5    e    1    2    3    2.00000
6    f    1    2    3    2.00000
7    g    1    2    3    2.00000
8    h    1    2    3    2.00000
9    i    1    2    3    2.00000
10    j    1    2    3    2.00000
2020-11-07 23:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503806-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.235605 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved