| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1163 人关注过本帖
标题:主函数的函数调用那里为什么说参数n没有定义
只看楼主 加入收藏
晚叹诶
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-5-8
结帖率:0
收藏
 问题点数:0 回复次数:2 
主函数的函数调用那里为什么说参数n没有定义
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 15

struct a{       //本科生
    int n;//
int number;//学号
char name[N];//姓名
char sex;//性别
int cla;//班别
char major;//专业
int score[3];//成绩
int sum;//总分
int ave;//平均分
}stu1[N];

struct b{         //研究生
    int n;//
int number;//
char name[N];//
char sex;//
int cla;//
char major;//
char yjfx;//研究方向
char teacher;//导师
int score[2];
int sum;
int ave;
}stu2[N];

struct student{
    union{
    struct a benkesheng;//本科生
    struct b yanjiusheng;//研究生
    }xuesheng;
    enum{benkesheng,yanjiusheng}type;
    struct student *link;
};

void menu();

void write();   //添加信息

int change(int n);//修改信息

int del(int n);//删除信息

void outputonestudent(int i);//查询一个学生信息

void searchmenu(int n);//查询信息操作

void searchnumber(int n);//按学号查询

void searchname(int n);//按姓名查询

void inturn(struct a c[]);//排序

void inturn(struct b c[]);//排序

void saveallstudent(int n);//保存全部学生信息

void tongji();//统计

void xjzf();

void bjzf();

void avecj();

void save(int x);//保存

void main(){                    //主函数
int choice;

printf("学生成绩管理系统");
while(1){
menu();
printf("请选择:");
scanf("%d",&choice);

if(choice==0){
printf("谢谢使用!");
break;
}
switch(choice){
case 1:
    write();
    inturn(stu1);//
    save(N);
    break;
case 2:
    change(n);                                   //为什么说n没定义
    break;
case 3:
    del(n);
    break;
case 4:
    searchmenu(n);
    break;
case 5:
    tongji();
case 0:
    printf("谢谢使用!再见。");
default:
    printf("按键错误,请重新选择!");
}
}
}
void menu(){
printf("请输入所需选择\n");

printf("1.添加学生信息\n");

printf("2.修改学生信息\n");

printf("3.删除学生信息\n");

printf("4.查询学生信息\n");

printf("5.统计学生信息\n");

printf("0.退出系统\n");
}




void write(){   //
int i;
struct a c ;
struct b d;
int choice;
printf("0.本科生   1.研究生\n");
printf("请输入选择:");
scanf("%d",&choice);
if(choice==0){
printf("添加本科生信息");   
}
printf("输入本科生人数:",c.n);
scanf("%d",&c.n);
for(i=0;i<c.n;i++){

        printf("输入第%d个学生的学号:\n",i+1);
    scanf("%d",&c.number);

        printf("输入第%d个学生的姓名:\n",i+1);
    scanf("%s",c.name[i]);

        printf("输入第%d个学生的性别:\n",i+1);
    scanf("%d",&c.sex);

        printf("输入第%d个学生的专业:\n",i+1);
    scanf("%d",&c.major);

        printf("输入第%d个学生的班级:\n",i+1);
    scanf("%d",&c.cla);

        printf("输入第%d个学生的c语言成绩:\n",i+1);
    scanf("%f",&c.score[0]);

        printf("输入第%d个学生的高数成绩:\n",i+1);
    scanf("%f",&c.score[1]);

        printf("输入第%d个学生的英语成绩:\n",i+1);
    scanf("%f",&c.score[2]);

        c.sum=c.score[0]+c.score[1]+c.score[2];
    c.ave=c.sum/3.0f;
}
printf("学号\t姓名\t性别\t专业\t班级\tc语言成绩\t高数成绩\t英语成绩\t\n");

printf("%d%s%s%s%d%d%d%d",c.number,c.name[i],c.sex,c.major,c.cla,c.score[0],c.score[1],c.score[2]);

if(choice==1){
printf("添加研究生信息");   
}
printf("输入研究生人数:",d.n);
scanf("%d",&d.n);
for(i=0;i<d.n;i++){

        printf("输入第%d个学生的学号:\n",i+1);
    scanf("%d",&d.number);

        printf("输入第%d个学生的姓名:\n",i+1);
    scanf("%s",d.name[i]);

        printf("输入第%d个学生的性别:\n",i+1);
    scanf("%d",&d.sex);

        printf("输入第%d个学生的专业:\n",i+1);
    scanf("%d",&d.major);

        printf("输入第%d个学生的班级:\n",i+1);
    scanf("%d",&d.cla);

        printf("输入第%d个学生的研究方向:\n",i+1);
    scanf("%f",d.yjfx);

        printf("输入第%d个学生的导师:\n",i+1);
    scanf("%f",d.teacher);

        printf("输入第%d个学生的课程综合成绩:\n",i+1);
    scanf("%f",&d.score[0]);

            printf("输入第%d个学生的论文成绩:\n",i+1);
    scanf("%f",&d.score[1]);

        d.sum=d.score[0]+d.score[1];
    d.ave=d.sum/2.0f;
}
printf("学号\t姓名\t性别\t专业\t班级\t研究方向\t导师\t课程综合成绩\t论文成绩\t\n");

printf("%d%s%s%s%d%s%s%d%d",d.number,d.name[i],d.sex,d.major,d.cla,d.yjfx,d.teacher,d.score[0],d.score[1]);


}
////
////
////
////
void inturn(struct a m[]){
int x;
struct a c;
struct b d;

printf("输入所需操作:\n");
printf("1.校级按总分排序操作\n");
printf("2.班级按总分排序操作\n");
printf("0.返回主菜单\n");
printf("输入选择:");
scanf("%d",&x);
while(x>0&&x<4){
    switch(x){
    case 1:
        xjzf();
        break;
    case 2:
        bjzf();
        break;
    case 0:
        printf("再见\n");
        return;
    default:
        printf("重新输入");
   
    }
}


}
////
///
///
void save(int x){
FILE *fp;
int i;
if((fp=fopen("student.dat","rb+"))==NULL){
printf("不能打开\n");
exit(1);
}
for(i=0;i<N;i++)
    if(fwrite(&stu1[i],sizeof(struct student),1,fp)!=1)         //////////////
        printf("文件写入错误\n");
fclose(fp);
printf("写入成功\n");
}
///
///
///
int change(int n){                    ////修改

struct a c;
struct b d;
int choice;
int k=-1,x,i;
char c1='y',c2;
printf("0.本科生   1.研究生\n");
printf("输入选择:",choice);
scanf("%d",&choice);
if(choice==0){
printf("修改本科生信息\n");
}
while(c1=='y'){
c2='y';
printf("输入要修改的学生的学号:");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==c.number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("输入修改后的信息:\n");
    printf("学号\t姓名\t性别\t专业\t班级\tc语言成绩\t高数成绩\t英语成绩\t\n");
    scanf("%d%s%s%s%d%d%d%d",c.number,c.name[i],c.sex,c.major,c.cla,c.score[0],c.score[1],c.score[2]);
c.sum=(c.score[0]+c.score[1]+c.score[2]);
c.ave=c.sum/3.0f;
stu1[k]=c;
printf("修改成功");
break;
    }
    saveallstudent(k);
    c1=getchar();
    getchar();
    return(n);
}
printf("任意键继续");
getchar();
}
if(choice==1){
printf("修改研究生信息\n");
}
while(c1=='y'){
c2='y';
printf("输入要修改的学生的学号:");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==stu2[i].number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("输入修改后的信息:\n");
    printf("学号\t姓名\t性别\t专业\t班级\t研究方向\t导师\t课程综合成绩\t论文成绩\t\n");
    scanf("%d%s%s%s%d%s%s%d%d",d.number,d.name[i],d.sex,d.major,d.cla,d.yjfx,d.teacher,d.score[0],d.score[1]);
    d.sum=(d.score[0]+d.score[1]);
d.ave=d.sum/2.0f;
stu2[k]=d;
       printf("修改成功");
break;     
    }
        saveallstudent(k);
    c1=getchar();
    getchar();
}
printf("任意键继续");
getchar();
}

}
 
////
///
///
//删除函数
int del(int n){
int i,k=-1,x;
char c1='y',c2;
while(c1=='y'){
c2='n';
printf("输入要删除的学生学号:\n");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==stu1[i].number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("该学生信息如下:\n");
     outputonestudent(k);
    printf("删除\n");
    c2=getchar();
    getchar();
    if(c2=='y'){
        for(i=k;i<n;i++){
        stu1[i]=stu1[i+1];
        n--;
        printf("删除成功");
        }
        c1=getchar();
        getchar();
    }
    }
}
}
save(n);
printf("任意键继续");
getchar();
return(n);
}

void outputonestudent(int i){
    struct a c;
    struct b d;
printf("学号:%d  姓名:%s  性别:%s  专业:%s  班级:%d\n",c.number,c.name[i],c.sex,c.major,c.cla);
printf("c语言:%d  高数:%d  英语:%d",c.score[0],c.score[1],c.score[2]);

printf("学号:%d  姓名:%s  性别:%s  专业:%s  班级:%d  研究方向:%s  导师:%s\n",d.number,d.name[i],d.sex,d.major,d.cla,d.yjfx,d.teacher);
printf("课程综合成绩:%d  论文成绩:%d",d.score[0],d.score[1]);

}
////
/////////////////
//////////////////
/////////////////

void searchmenu(int n){      //查询
int selet;
while(1){
printf("进入查询功能\n");

printf("1.按姓名查询\n");
printf("1.按学号查询\n");
printf("输入所需操作:\n");
scanf("%d",&selet);
getchar();
switch(selet){
case 1:
    searchname(n);
    break;
case 2:
    searchnumber(n);
case 0:
    return;
default:
    printf("输入错误,重新输入\n");
}
}
}

void searchname(int n){
int i,j,k;
char xname[N],c='y';
while(c=='y'){
k=-1;
printf("输入学生姓名:");
gets(xname);
for(i=0,j=1;i<n;i++){
    if(strcmp(stu1[i].name,xname)==0){
    k=i;
    printf("学生%d的信息:\n",j++);
    outputonestudent(k);
    }
}
}
}

void searchnumber(int n){
int i,j,k,x;
char c='y';
while(c=='y'){
k=-1;
printf("输入学生学号:\n");
scanf("%d",&x);
for(i=0,j=1;i<n;i++){
    if(stu1[i].number==x){
    k=i;
    printf("学生%d的信息:\n",j++);
    outputonestudent(k);
    }
}
}

}





void tongji(){
int x;
printf("进入统计系统\n");
printf("输入所需操作:\n");
printf("1.统计某门课每个班的平均成绩操作\n");
printf("0.返回主菜单\n");
printf("输入选择:");
scanf("%d",&x);
while(x>0&&x<3){
    switch(x){
    case 1:
        avecj();
        break;
    case 0:
        printf("再见\n");
        return;
    default:
        printf("输入错误,重新输入\n");
    }
}
}




void xjzf(){
FILE *wj,*fp;
int i,j;
struct  a c;
struct  b d;
if((fp=fopen("student.dat","wb"))==NULL){
exit(1);
}
for(i=0;i<N-1;i++)
    for(j=0;j<N-i-1;j++)
        if(stu1[i].sum<stu1[j].sum){
        c=stu1[j];
        stu1[j]=stu1[i];
        stu1[i]=c;
        }
        if((wj=fopen("student.dat","wb+"))==NULL){
        exit(1);
        }
        else{
        for(i=0;i<N;i++)
            fwrite(&stu1[i],sizeof(struct student),1,wj);
        }
        fclose(fp);
        fclose(wj);

if((fp=fopen("student.dat","wb"))==NULL){
exit(1);
}
for(i=0;i<N-1;i++)
    for(j=0;j<N-i-1;j++)
        if(stu2[i].sum<stu2[j].sum){
        d=stu2[j];                       //////////////////////////////////////////////eorr
        stu2[j]=stu2[i];
        stu2[i]=d;                        //////////////////////////////////////////////eorr
        }
        if((wj=fopen("student.dat","wb+"))==NULL){
        exit(1);
        }
        else{
        for(i=0;i<N;i++)
            fwrite(&stu2[i],sizeof(struct student),1,wj);
        }
        fclose(fp);
        fclose(wj);
}



void avecj(){
int i=0;
struct  a c;
struct b d;
printf("每门课的每班的平均成绩:\n");
for(i=1;i<N;i++){
    if(c.cla==i){
        (c.n*c.score[0])/i;
    printf("c语言每班的平均成绩:%f",(c.n*c.score[0])/i);
    }
}
}



void saveallstudent(int n)/*保存全部学生信息*/

{

    FILE *fp;

    if((fp=fopen("student.dat","wb"))==NULL)/*以二进制写方式打开文件*/

    {

        printf("文件打开失败!\n");

        exit(1);

    }

    fwrite(stu1,sizeof(struct student),n,fp);/*将数组stu中全部学生信息写入文件*/

    fclose(fp);

}
搜索更多相关主题的帖子: teacher include 研究生 number 本科生 
2017-05-09 23:14
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
要看编译信息啊
程序代码:
1>d:\c_source\w6\w6.cpp(95): error C2065: “n”: 未声明的标识符
1>d:\c_source\w6\w6.cpp(98): error C2065: “n”: 未声明的标识符
1>d:\c_source\w6\w6.cpp(101): error C2065: “n”: 未声明的标识符
1>d:\c_source\w6\w6.cpp(171): warning C4244: “=”: 从“float”转换到“int”,可能丢失数据
1>d:\c_source\w6\w6.cpp(212): warning C4244: “=”: 从“float”转换到“int”,可能丢失数据
1>d:\c_source\w6\w6.cpp(302): warning C4244: “=”: 从“float”转换到“int”,可能丢失数据
1>d:\c_source\w6\w6.cpp(334): warning C4244: “=”: 从“float”转换到“int”,可能丢失数据
1>d:\c_source\w6\w6.cpp(549): warning C4552: “/”: 运算符不起任何作用;应输入带副作用的运算符
这里面既有错误所在的行号 还有错误的原因  你的n 就是没有定义 别人也不知道怎么回事啊


DO IT YOURSELF !
2017-05-10 06:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
对于这种几百行的代码  你这样写 明显是心太急了一些

这种程序就是分模块写 分模块调试  最后再把所有调试好的模块拼再一起

DO IT YOURSELF !
2017-05-10 06:39
快速回复:主函数的函数调用那里为什么说参数n没有定义
数据加载中...
 
   



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

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