为什么程序每个函数都出现同样的错误,missing ')' before identifier 'st'

自行脑补 2016-12-12 05:12:28
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 7
struct student
{
char name[20];//姓名
char no[10];//学号
int math;//数学分数
int english;//英语分数
int computer;//计算机分数
int score;//交换用分数
int eveave;//个人平均分
};
struct student st[N]; //定义学生结构体
void subject(student st[],int n)//选定某个学科进行分析
{

int number;
int temp;
printf(" 请选择要分析的学科: ");
scanf("%d",&number);
int i=0;
switch(number)
{
case 1:
printf(" 以下是关于数学的成绩分析:\n");
for(i=0;i<n;i++)
st[i].score=st[i].math;
break;
case 2:
printf(" 以下是关于英语的成绩分析:\n");
for(i=0;i<n;i++)
st[i].score=st[i].english;

break;
case 3:
printf(" 以下是关于计算机成绩分析:\n");
for(i=0;i<n;i++)
st[i].score=st[i].computer;
break;
}
int j;
printf(" 按学号每个人的原始数据为:\n");
for(i=0;i<n;i++)
printf(" %d\n",st[i].score);
printf(" 排序后的数据为\n");
for(i=0;i<n-1;i++)
{

for(j=0;j<n-i;j++)
if(st[j+1].score<st[j].score)
{
temp=st[j].score;
st[j].score=st[j+1].score;
st[j+1].score=temp;
}
}
for(i=0;i<n;i++)
printf(" %d\n",st[i].score);
printf(" 该门课的平均成绩为:\n");
float sum=0;
float courseave;
for(i=0;i<n;i++)
{
sum=sum+st[i].score;
}
courseave=sum/7;
printf(" %f\n",courseave);
printf(" 该门课的最高分为:\n");
int max=st[0].score;
for(i=0;i<n;i++)
{
if(st[i].score>max)
{
max=st[i].score;
}
}
printf(" %d\n",max);//最高分
printf(" 该门课的最低分为:\n");
int min=st[0].score;
for(i=0;i<n;i++)
{
if(st[i].score<min)
{
min=st[i].score;
}
}
printf(" %d\n",min);//最低分
int bjg=0;
int jg=0;
int zd=0;
int lh=0;
int yx=0;
for(i=0;i<n;i++)
{
if(st[i].score<60) //计算不及格人数
{
bjg++;
}
if(st[i].score>=60&&st[i].score<70)//计算60~69人数
{
jg++;
}
if(st[i].score>=70&&st[i].score<80)//计算70~79人数
{
zd++;
}
if(st[i].score>=80&&st[i].score<90)//计算80~89人数
{
lh++;
}
if(st[i].score>=90)//计算90分以上人数
{
yx++;
}
}
printf(" 该门课的不及格人数为:\n %d\n 60~69人数:\n %d\n 70~79人数:\n %d\n 80~89人数:\n %d\n 90分以上人数:\n %d\n",bjg,jg,zd,lh,yx);



}
void studentave(student st[],int n)//计算每个人的平均成绩并排序
{
int i;
int temp;
for(i=0;i<n;i++)
{
st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4;
}
printf(" 每个人平均成绩为:\n");
for(i=0;i<n;i++)
printf(" %d\n",st[i].eveave);

for(i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
if(st[j].eveave>st[j+1].eveave)
{
temp=st[j].eveave;
st[j].eveave=st[j+1].eveave;
st[j+1].eveave=temp;
}
}
printf(" 平均成绩排序为:\n");
for(i=0;i<n;i++)
printf(" %d\n",st[i].eveave);
}

void nosearch(student st[],int n)//按学号查找学生的各门成绩
{
int i=0;
n=7;
char no[10];
printf(" 请输入要查找的学生号:");
scanf("%s",&no);
while(strcmp(no,st[i].no)==0&&i<n)
i++;
if(i==n)
{
printf(" meizhaodao\n");
}
else
printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
}
void namesearch(student st[],int n)//按姓名查找学生的各门成绩
{
int i=0;
n=7;
char name[20];
printf(" 请输入要查找的姓名:");
scanf("%s",&name);
while(strcmp(name,st[i].name)==0&&i<7)
i++;
if(i==n)
{
printf(" meizhaodao\n");
}
else
printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
}
void cunchu(student st[],int n) //存盘
{
int i;
FILE *fp;
fp=fopen("C:\\RJ\\input.dat","wb");//以"写"方式打开一个二进制文件
if(fp==NULL)
{
printf("Can't open!\n");
exit(0);
}

for(i=0;i<n;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);//一次写入一个学生的成绩
}
fclose(fp);
}
void duqu(student st[],int n) //读取数据
{
int i;
FILE *fp;
fp=fopen("C:\\RJ\\input.dat","rb");//以"读"方式打开一个二进制文件
if(fp==NULL)
{
printf("Can't open!\n");
exit(0);
}
for(i=0;i<7;i++)
{
fread(&st[0],sizeof(struct student),1,fp);//一次读取一个学生的成绩
printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
}
fclose(fp);
}

void main()
{
int i;
struct student st[7]={ {"01","王芳",78,77,90},
{"02","张强",89,67,88},
{"03","李浩",56,66,78},
{"04","黄鹏",89,86,85},
{"05","尚校",67,88,76},
{"06","赵鹏",45,54,67},
{"07","蒋泽",78,76,70}};
printf(" 本题的实验数据为数据:\n");
cunchu(st,7);//存盘input.dat
duqu(st,7);//读取数据
printf(" 对各科的成绩分析如下:\n");
printf(" 本实验采取switch()语句,分别1~3中的表示不同的学科\n 输入1表示计算关于数学方面的成绩;\n 输入2表示计算关于英语方面的成绩;\n 输入3表示计算关于计算机方面的成绩;\n");
subject(st,7);//按各科成绩排序
subject(st,7);//按各科成绩排序
subject(st,7);//按各科成绩排序
printf(" 关于个人平均成绩分析:\n");
studentave(st,7);//计算每个人的平均成绩并排序
printf(" 按照不同条件查询分析:\n");
nosearch(st,7);//按学号查找学生的各门成绩
namesearch(st,7);//按姓名查找学生的各门成绩

}


错误:C:\Users\zgx\Desktop\Text1.c(16) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(16) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(16) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(16) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(16) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(123) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(123) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(123) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(123) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(123) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(150) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(150) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(150) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(150) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(150) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(166) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(166) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(166) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(166) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(166) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(182) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(182) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(182) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(182) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(182) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(199) : error C2146: syntax error : missing ')' before identifier 'st'
C:\Users\zgx\Desktop\Text1.c(199) : error C2061: syntax error : identifier 'st'
C:\Users\zgx\Desktop\Text1.c(199) : error C2059: syntax error : ';'
C:\Users\zgx\Desktop\Text1.c(199) : error C2059: syntax error : '['
C:\Users\zgx\Desktop\Text1.c(199) : error C2059: syntax error : ')'
C:\Users\zgx\Desktop\Text1.c(228) : warning C4013: 'cunchu' undefined; assuming extern returning int
C:\Users\zgx\Desktop\Text1.c(229) : warning C4013: 'duqu' undefined; assuming extern returning int
C:\Users\zgx\Desktop\Text1.c(232) : warning C4013: 'subject' undefined; assuming extern returning int
C:\Users\zgx\Desktop\Text1.c(236) : warning C4013: 'studentave' undefined; assuming extern returning int
C:\Users\zgx\Desktop\Text1.c(238) : warning C4013: 'nosearch' undefined; assuming extern returning int
C:\Users\zgx\Desktop\Text1.c(239) : warning C4013: 'namesearch' undefined; assuming extern returning int
...全文
421 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自行脑补 2016-12-12
  • 打赏
  • 举报
回复
经过前面几个大神的提醒帮助,我找出所有问题了,主要是变量声明放错位置了,以及struct关键字缺漏,下面是我改完后完整的代码 #include "stdio.h" #include "string.h" #include "stdlib.h" #define N 7 struct student { char name[20];//姓名 char no[10];//学号 int math;//数学分数 int english;//英语分数 int computer;//计算机分数 int score;//交换用分数 int eveave;//个人平均分 }; struct student st[N]; //定义学生结构体 void subject(struct student st[],int n)//选定某个学科进行分析 { int number; int temp; int i=0; int j; float sum=0; float courseave; int max=st[0].score; int min=st[0].score; int bjg=0; int jg=0; int zd=0; int lh=0; int yx=0; printf(" 请选择要分析的学科: "); scanf("%d",&number); switch(number) { case 1: printf(" ★★★★★★★★★以下是关于数学的成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].math; break; case 2: printf(" ★★★★★★★★★以下是关于英语的成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].english; break; case 3: printf(" ★★★★★★★★★以下是关于计算机成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].computer; break; } printf(" 按学号每个人的原始数据为:\n"); for(i=0;i<n;i++) printf(" %d\n",st[i].score); printf(" 排序后的数据为\n"); for(i=0;i<n-1;i++) { for(j=0;j<n-i;j++) if(st[j+1].score<st[j].score) { temp=st[j].score; st[j].score=st[j+1].score; st[j+1].score=temp; } } for(i=0;i<n;i++) printf(" %d\n",st[i].score); printf(" 该门课的平均成绩为:\n"); for(i=0;i<n;i++) { sum=sum+st[i].score; } courseave=sum/7; printf(" %f\n",courseave); printf(" 该门课的最高分为:\n"); for(i=0;i<n;i++) { if(st[i].score>max) { max=st[i].score; } } printf(" %d\n",max);//最高分 printf(" 该门课的最低分为:\n"); for(i=0;i<n;i++) { if(st[i].score<min) { min=st[i].score; } } printf(" %d\n",min);//最低分 for(i=0;i<n;i++) { if(st[i].score<60) //计算不及格人数 { bjg++; } if(st[i].score>=60&&st[i].score<70)//计算60~69人数 { jg++; } if(st[i].score>=70&&st[i].score<80)//计算70~79人数 { zd++; } if(st[i].score>=80&&st[i].score<90)//计算80~89人数 { lh++; } if(st[i].score>=90)//计算90分以上人数 { yx++; } } printf(" 该门课的不及格人数为:\n %d\n 60~69人数:\n %d\n 70~79人数:\n %d\n 80~89人数:\n %d\n 90分以上人数:\n %d\n",bjg,jg,zd,lh,yx); } void studentave(struct student st[],int n)//计算每个人的平均成绩并排序 { int i; int j; int temp; for(i=0;i<n;i++) { st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4; } printf(" 每个人平均成绩为:\n"); for(i=0;i<n;i++) printf(" %d\n",st[i].eveave); for(i=0;i<n-1;i++) { for( j=0;j<n-1-i;j++) if(st[j].eveave>st[j+1].eveave) { temp=st[j].eveave; st[j].eveave=st[j+1].eveave; st[j+1].eveave=temp; } } printf(" 平均成绩排序为:\n"); for(i=0;i<n;i++) printf(" %d\n",st[i].eveave); } void nosearch(struct student st[],int n)//按学号查找学生的各门成绩 { int i=0; char no[10]; n=7; printf(" 请输入要查找的学生号:"); scanf("%s",&no); while(strcmp(no,st[i].no)==0&&i<n) i++; if(i==n) { printf(" meizhaodao\n"); } else printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer); } void namesearch(struct student st[],int n)//按姓名查找学生的各门成绩 { char name[20]; int i=0; n=7; printf(" 请输入要查找的姓名:"); scanf("%s",&name); while(strcmp(name,st[i].name)==0&&i<7) i++; if(i==n) { printf(" meizhaodao\n"); } else printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer); } void cunchu(struct student st[],int n) //存盘 { int i; FILE *fp; fp=fopen("G:\\input.dat","wb");//以"写"方式打开一个二进制文件 if(fp==NULL) { printf("Can't open!\n"); exit(0); } for(i=0;i<n;i++) { fwrite(&st[i],sizeof(struct student),1,fp);//一次写入一个学生的成绩 } fclose(fp); } void duqu(struct student st[],int n) //读取数据 { int i; FILE *fp; fp=fopen("G:\\input.dat","rb");//以"读"方式打开一个二进制文件 if(fp==NULL) { printf("Can't open!\n"); exit(0); } for(i=0;i<7;i++) { fread(&st[0],sizeof(struct student),1,fp);//一次读取一个学生的成绩 printf(" %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer); } fclose(fp); } void main() { struct student st[7]={ {"01","王芳",78,77,90}, {"02","张强",89,67,88}, {"03","李浩",56,66,78}, {"04","黄鹏",89,86,85}, {"05","尚校",67,88,76}, {"06","赵鹏",45,54,67}, {"07","蒋泽",78,76,70}}; printf(" ★★★★★★★★★★★★本题的实验数据为数据:★★★★★★★★★★★★★★\n"); cunchu(st,7);//存盘input.dat duqu(st,7);//读取数据 printf(" ★★★★★★★★★★★★对各科的成绩分析如下:★★★★★★★★★★★★★★\n"); printf(" 本实验采取switch()语句,分别1~3中的表示不同的学科\n 输入1表示计算关于数学方面的成绩;\n 输入2表示计算关于英语方面的成绩;\n 输入3表示计算关于计算机方面的成绩;\n"); subject(st,7);//按各科成绩排序 subject(st,7);//按各科成绩排序 subject(st,7);//按各科成绩排序 printf(" ★★★★★★★★★★★★关于个人平均成绩分析:★★★★★★★★★★★★★★\n"); studentave(st,7);//计算每个人的平均成绩并排序 printf(" ★★★★★★★★★★★★按照不同条件查询分析:★★★★★★★★★★★★★★\n"); nosearch(st,7);//按学号查找学生的各门成绩 namesearch(st,7);//按姓名查找学生的各门成绩 }
paschen 2016-12-12
  • 打赏
  • 举报
回复
void subject(student st[],int n) 改成: void subject(struct student st[],int n) C语言要求加上struct关键字 同理其他地方的
l357630798 2016-12-12
  • 打赏
  • 举报
回复
引用 4 楼 l357630798 的回复:
你使用的是C++编译器还是C编译器? 如果是C++编译器,你的代码是没问题的。 如果是C编译器,那么就是有问题的。 void subject(struct student st[],int n) 函数参数前也要加struct关键字 for(int j=0;j<n-1-i;j++) 不能这样定义变量j ; 要int j = 0; 单独定义。 nosearch 函数里面的变量n与参数重名了。 问题很多,你自己找一下吧。
补充,我的意思是如果C++编译器,void subject(struct student st[],int n) 函数参数前不需要加struct关键字。
l357630798 2016-12-12
  • 打赏
  • 举报
回复
你使用的是C++编译器还是C编译器? 如果是C++编译器,你的代码是没问题的。 如果是C编译器,那么就是有问题的。 void subject(struct student st[],int n) 函数参数前也要加struct关键字 for(int j=0;j<n-1-i;j++) 不能这样定义变量j ; 要int j = 0; 单独定义。 nosearch 函数里面的变量n与参数重名了。 问题很多,你自己找一下吧。
自信男孩 2016-12-12
  • 打赏
  • 举报
回复

#if 0
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 7
#define MAX_STU_NUM 7

struct student
{
    char name[20];  //姓名
    char no[10];    //学号
    int math;       //数学分数
    int english;    //英语分数
    int computer;   //计算机分数
    int score;      //交换用分数
    int eveave;     //个人平均分
};
struct student st[N];         //定义学生结构体
void subject(struct student st[],int n)//选定某个学科进行分析
{

    int number;
    int temp;
    printf("        请选择要分析的学科: ");
    scanf("%d", &number);
    int i=0;
    switch(number)
    {
        case 1:
            printf("     以下是关于数学的成绩分析:\n");
            for(i=0;i<n;i++)
                st[i].score=st[i].math;
            break;
        case 2:
            printf("       以下是关于英语的成绩分析:\n");
            for(i=0;i<n;i++)
                st[i].score=st[i].english;

            break;
        case 3:
            printf("      以下是关于计算机成绩分析:\n");
            for(i=0;i<n;i++)
                st[i].score=st[i].computer;
            break;
    }
    int j;
    printf("        按学号每个人的原始数据为:\n");
    for(i=0;i<n;i++)
        printf("        %d\n",st[i].score);
    printf("        排序后的数据为\n");
    for(i=0;i<n-1;i++)
    {

        for(j=0;j<n-i;j++)
            if(st[j+1].score<st[j].score)
            {
                temp=st[j].score;
                st[j].score=st[j+1].score;
                st[j+1].score=temp;
            }
    }
    for(i=0;i<n;i++)
        printf("        %d\n",st[i].score);
    printf("        该门课的平均成绩为:\n");
    float sum=0;
    float courseave;
    for(i=0;i<n;i++)
    {
        sum=sum+st[i].score;
    }
    courseave=sum/7;
    printf("        %f\n",courseave);
    printf("        该门课的最高分为:\n");
    int max=st[0].score;
    for(i=0;i<n;i++)
    {
        if(st[i].score>max)
        {
            max=st[i].score;
        }
    }
    printf("        %d\n",max);//最高分
    printf("        该门课的最低分为:\n");
    int min=st[0].score;
    for(i=0;i<n;i++)
    {
        if(st[i].score<min)
        {
            min=st[i].score;
        }
    }
    printf("        %d\n",min);//最低分
    int bjg=0;
    int jg=0;
    int zd=0;
    int lh=0;
    int yx=0;
    for(i=0;i<n;i++)
    {
        if(st[i].score<60)    //计算不及格人数
        {
            bjg++;
        }
        if(st[i].score>=60&&st[i].score<70)//计算60~69人数
        {
            jg++;
        }
        if(st[i].score>=70&&st[i].score<80)//计算70~79人数
        {
            zd++;
        }
        if(st[i].score>=80&&st[i].score<90)//计算80~89人数
        {
            lh++;
        }
        if(st[i].score>=90)//计算90分以上人数
        {
            yx++;
        }
    }
    printf("该门课的不及格人数为:\n %d\n60~69人数:\n%d\n70~79人数:\n%d\n80~89人数:\n %d\n90分以上人数:\n%d\n",bjg,jg,zd,lh,yx);



}
void studentave(struct student st[],int n)//计算每个人的平均成绩并排序
{
    int i, j;
    int temp;
    for(i = 0; i < n; i++) {
        st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4;
    }
    printf("        每个人平均成绩为:\n");
    for(i=0;i<n;i++)
        printf("        %d\n",st[i].eveave);

    for(i = 0; i < n-1; i++)
    {
        for(j = 0; j < n-1-i; j++)
            if(st[j].eveave > st[j+1].eveave)
            {
                temp=st[j].eveave;
                st[j].eveave=st[j+1].eveave;
                st[j+1].eveave=temp;
            }
    }
    printf("        平均成绩排序为:\n");
    for(i=0;i<n;i++)
        printf("        %d\n",st[i].eveave);
}

void nosearch(struct student st[],int n)//按学号查找学生的各门成绩
{
    int i=0;
    n=7;
    char no[10];
    printf("        请输入要查找的学生号:");
    scanf("%s",no);
    while(strcmp(no,st[i].no)==0&&i<n)
        i++;
    if(i==n)
    {
        printf("        meizhaodao\n");
    }
    else
        printf("        %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
}
void namesearch(struct student st[],int n)//按姓名查找学生的各门成绩
{
    int i=0;
    n=7;
    char name[20];
    printf("        请输入要查找的姓名:");
    scanf("%s", name);
    while(strcmp(name,st[i].name)==0&&i<7)
        i++;
    if(i==n)
    {
        printf("        meizhaodao\n");
    }
    else
        printf("        %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
}
void cunchu(struct student st[],int n)    //存盘
{
    int i;
    FILE *fp;
    fp=fopen("C:\\RJ\\input.dat","wb");//以"写"方式打开一个二进制文件
    if(fp==NULL)
    {
        printf("Can't open!\n");
        exit(0);
    }

    for(i=0;i<n;i++)
    {
        fwrite(&st[i],sizeof(struct student),1,fp);//一次写入一个学生的成绩
    }
    fclose(fp);
}
void duqu(struct student st[],int n)      //读取数据
{
    int i;
    FILE *fp;
    fp=fopen("C:\\RJ\\input.dat","rb");//以"读"方式打开一个二进制文件
    if(fp==NULL)
    {
        printf("Can't open!\n");
        exit(0);
    }
    for(i=0;i<7;i++)
    {
        fread(&st[0],sizeof(struct student),1,fp);//一次读取一个学生的成绩
        printf("                  %s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);
    }
    fclose(fp);
}

int main(int argc, const char *argv[])
{
    struct student st[7]={  {"01","王芳",78,77,90},
        {"02","张强",89,67,88},
        {"03","李浩",56,66,78},
        {"04","黄鹏",89,86,85},
        {"05","尚校",67,88,76},
        {"06","赵鹏",45,54,67},
        {"07","蒋泽",78,76,70}};
    printf(" 本题的实验数据为数据:\n");
    cunchu(st,7);//存盘input.dat
    duqu(st,7);//读取数据
    printf("  对各科的成绩分析如下:\n");
    printf("        本实验采取switch()语句,分别1~3中的表示不同的学科\n        输入1表示计算关于数学方面的成绩;\n        输入2表示计算关于英语方面的成绩;\n        输入3表示计算关于计算机方面的成绩;\n");
    subject(st,7);//按各科成绩排序
    subject(st,7);//按各科成绩排序
    subject(st,7);//按各科成绩排序
    printf("   关于个人平均成绩分析:\n");
    studentave(st,7);//计算每个人的平均成绩并排序
    printf("   按照不同条件查询分析:\n");
    nosearch(st,7);//按学号查找学生的各门成绩
    namesearch(st,7);//按姓名查找学生的各门成绩
    return 0;
}

主要是两个问题: 1)函数参数没有类型, student不是类型,所以需要加上struct;2) scanf的第二个参数如果是数组,不需要再加&; 以上是我改后的代码,你对比一下吧
自行脑补 2016-12-12
  • 打赏
  • 举报
回复
不对呀大兄弟
l357630798 2016-12-12
  • 打赏
  • 举报
回复
struct student st[7]; 把struct去掉; student 已经是一种数据类型了,不需要再使用struct关键字,谢谢!
Ambiguous operators need parentheses -----------不明确的运算需要用括号括起 Ambiguous symbol ''xxx'' ----------------不明确的符号 Argument list syntax error ----------------参数表语法错误 Array bounds missing ------------------丢失数组界限符 Array size toolarge -----------------数组尺寸太大 Bad character in paramenters ------------------参数中有不适当的字符 Bad file name format in include directive --------------------包含命令中文件名格式不正确 Bad ifdef directive synatax ------------------------------编译预处理ifdef有语法错 Bad undef directive syntax ---------------------------编译预处理undef有语法错 Bit field too large ----------------位字段太长 Call of non-function -----------------调用未定义的函数 Call to function with no prototype ---------------调用函数时没有函数的说明 Cannot modify a const object ---------------不允许修改常量对象 Case outside of switch ----------------漏掉了case 语句 Case syntax error ------------------ Case 语法错误 Code has no effect -----------------代码不可述不可能执行到 Compound statement missing{ --------------------分程序漏掉"{" Conflicting type modifiers ------------------不明确的类型说明符 Constant expression required ----------------要求常量表达式 Constant out of range in comparison -----------------在比较中常量超出范围 Conversion may lose significant digits -----------------转换时会丢失意义的数字 Conversion of near pointer not allowed -----------------不允许转换近指针 Could not find file ''xxx'' -----------------------找不到XXX文件 Declaration missing ; ----------------说明缺少";" houjiuming Declaration syntax error -----------------说明中出现语法错误 Default outside of switch ------------------ Default 出现在switch语句之外 Define directive needs an identifier ------------------定义编译预处理需要标识符 Division by zero ------------------用零作除数 Do statement must have while ------------------ Do-while语句中缺少while部分 Enum syntax error ---------------------枚举类型语法错误 Enumeration constant syntax error -----------------枚举常数语法错误 Error directive :xxx ------------------------错误的编译预处理命令 Error writing output file ---------------------写输出文件错误 Expression syntax error -----------------------表达式语法错误 Extra parameter in call ------------------------调用时出现多余错误 File name too long ----------------文件名太长 Function call missing -----------------函数调用缺少右括号 Fuction definition out of place ------------------函数定义位置错误 Fuction should return a value ------------------函数必需返回一个值 Goto statement missing label ------------------ Goto语句没有标号 Hexadecimal or octal constant too large ------------------16进制或8进制常数太大 Illegal character ''x'' ------------------非法字符x Illegal initialization ------------------非法的初始化 Illegal octal digit ------------------非法的8进制数字 houjiuming Illegal pointer subtraction ------------------非法的指针相减 Illegal structure operation ------------------非法的结构体操作 Illegal use of floating point -----------------非法的浮点运算 Illegal use of pointer --------------------指针使用非法 Improper use of a typedefsymbol ----------------类型定义符号使用不恰当 In-line assembly not allowed -----------------不允许使用行间汇编 Incompatible storage class -----------------存储类别不相容 Incompatible type conversion --------------------不相容的类型转换 Incorrect number format -----------------------错误的数据格式 Incorrect use of default --------------------- Default使用不当 Invalid indirection ---------------------无效的间接运算 Invalid pointer addition ------------------指针相加无效 Irreducible expression tree -----------------------无法执行的表达式运算 Lvalue required ---------------------------需要逻辑值0或非0值 Macro argument syntax error -------------------宏参数语法错误 Macro expansion too long ----------------------宏的扩展以后太长 Mismatched number of parameters in definition ---------------------定义中参数个数不匹配 Misplaced break ---------------------此处不应出现break语句 Misplaced continue ------------------------此处不应出现continue语句 Misplaced decimal point --------------------此处不应出现小数点 Misplaced elif directive --------------------不应编译预处理elif Misplaced else ----------------------此处不应出现else houjiuming Misplaced else directive ------------------此处不应出现编译预处理else Misplaced endif directive -------------------此处不应出现编译预处理endif Must be addressable ----------------------必须是可以编址的 Must take address of memory location ------------------必须存储定位的地址 No declaration for function ''xxx'' -------------------没有函数xxx的说明 No stack ---------------缺少堆栈 No type information ------------------没有类型信息 Non-portable pointer assignment --------------------不可移动的指针(地址常数)赋值 Non-portable pointer comparison --------------------不可移动的指针(地址常数)比较 Non-portable pointer conversion ----------------------不可移动的指针(地址常数)转换 Not a valid expression format type ---------------------不合法的表达式格式 Not an allowed type ---------------------不允许使用的类型 Numeric constant too large -------------------数值常太大 Out of memory -------------------内存不够用 houjiuming Parameter ''xxx'' is never used ------------------能数xxx没有用到 Pointer required on left side of -> -----------------------符号->的左边必须是指针 Possible use of ''xxx'' before definition -------------------在定义之前就使用了xxx(警告) Possibly incorrect assignment ----------------赋值可能不正确 Redeclaration of ''xxx'' -------------------重复定义了xxx Redefinition of ''xxx'' is not identical ------------------- xxx的两次定义不一致 Register allocation failure ------------------寄存器定址失败 Repeat count needs an lvalue ------------------重复计数需要逻辑值 Size of structure or array not known ------------------结构体或数给大小不确定 Statement missing ; ------------------语句后缺少";" Structure or union syntax error --------------结构体或联合体语法错误 Structure size too large ----------------结构体尺寸太大 Sub scripting missing ] ----------------下标缺少右方括号 Superfluous & with function or array ------------------函数或数组中有多余的"&" Suspicious pointer conversion ---------------------可疑的指针转换 Symbol limit exceeded ---------------符号超限 Too few parameters in call -----------------函数调用时的实参少于函数的参数不 Too many default cases ------------------- Default太多(switch语句中一个) Too many error or warning messages --------------------错误或警告信息太多 Too many type in declaration -----------------说明中类型太多 houjiuming Too much auto memory in function -----------------函数用到的局部存储太多 Too much global data defined in file ------------------文件中全局数据太多 Two consecutive dots -----------------两个连续的句点 Type mismatch in parameter xxx ----------------参数xxx类型不匹配 Type mismatch in redeclaration of ''xxx'' ---------------- xxx重定义的类型不匹配 Unable to create output file ''xxx'' ----------------无法建立输出文件xxx Unable to open include file ''xxx'' ---------------无法打开被包含的文件xxx Unable to open input file ''xxx'' ----------------无法打开输入文件xxx Undefined label ''xxx'' -------------------没有定义的标号xxx Undefined structure ''xxx'' -----------------没有定义的结构xxx Undefined symbol ''xxx'' -----------------没有定义的符号xxx Unexpected end of file in comment started on line xxx ----------从xxx行开始的注解尚未结束文件不能结束 Unexpected end of file in conditional started on line xxx ----从xxx 开始的条件语句尚未结束文件不能结束 Unknown assemble instruction ----------------未知的汇编结构 houjiuming Unknown option ---------------未知的操作 Unknown preprocessor directive: ''xxx'' -----------------不认识的预处理命令xxx Unreachable code ------------------无路可达的代码 Unterminated string or character constant -----------------字符串缺少引号 User break ----------------用户强行中断了程序 Void functions may not return a value ----------------- Void类型的函数不应有返回值 Wrong number of arguments -----------------调用函数的参数数目错 ''xxx'' not an argument ----------------- xxx不是参数 ''xxx'' not part of structure -------------------- xxx不是结构体的一部分 xxx statement missing ( -------------------- xxx语句缺少左括号 xxx statement missing ) ------------------ xxx语句缺少右括号 xxx statement missing ; -------------------- xxx缺少分号 houjiuming xxx'' declared but never used -------------------说明了xxx但没有使用 xxx'' is assigned a value which is never used ----------------------给xxx赋了值但未用过 Zero length structure ------------------结构体的长度为零

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧