我用C 6.0做了一个的学生成绩管理系统遇到一些问题。。以下是步骤。

[复制链接]
查看11 | 回复6 | 2011-6-26 04:14:15 | 显示全部楼层 |阅读模式
1,用数组存每个学生姓名,首先inta=0,b=0,c=0,d=0,e=0,lookup,chinese[20]={},math[20]={},english[20]={};
charname[20]={\"无\"},sex[20]={\"无\"},f=\'y\',g=\'n\',h=\'y\',i=\'y\',j=\'y\';

接着输入信息printf(\"请输入班内序号:\");
        scanf(\"%d\",
        b=c=d=e=a;
                printf(\"请输入姓名:\");
scanf(\"%s\",
printf(\"请输入性别:\");
scanf(\"%s\",
printf(\"请输入语文成绩:\");
scanf(\"%d\",
printf(\"请输数学成绩:\");
scanf(\"%d\",
                printf(\"请输入英语成绩:\");
scanf(\"%d\",
printf(\"继续输入(Y)?:\");
scanf(\"%s\",

然后输出信息:
        printf(\"请输入要查询成绩的学生序号:\");
        scanf(\"%d\",
        for(a=0;a=20;a)
                if(lookup==a)e=d=c=b=a;
        printf(\"%s的语文成绩为%d分,数学成绩为%d分,英语成绩为%d分.\\n\",name,chinese[c],math[d],english[e]);

要输出所有学生信息:printf(\"以下为所有成绩:\\n\");
        printf(\"编号|\\t姓名|\\t性别|\\t语文|\\t数学|\\t英语\\t\\n\");
        for(a=0;a20;a)
        {b=c=d=e=a;
        printf(\"|%d\\t%s\\t%s\\t%d\\t%d\\t%d|\\n\",a,name,sex,chinese[c],math[d],english[e]);
        }

遇到的问题有,1,输入姓名后在查询时时常不显示。
2,存1号学生姓名后,在显示所有信息时,全部姓名,性别变成了一样。
3,英语成绩在显示时出错,例如-836776753等。

初学者,请指出错……谢谢了。需要全部源代码的请留下邮箱……谢谢!
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
charname[20][50];
charsex[20][5];
...
scanf(\"%s\",name[a]);
...
scanf(\"%s\",sex[a]);









<h4class=\"ask\">追问


运行结果:输入姓名YZ,查询时显示“无的语文成绩为100,数学100,英语100.”
显示全部信息时变为死循环了貌似……
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
printf(\"%s的语文成绩为%d分,数学成绩为%d分,英语成绩为%d分.\\n\",name[a],chinese[c],math[d],english[e]);
...
printf(\"|%d\\t%s\\t%s\\t%d\\t%d\\t%d|\\n\",a,name[a],sex,chinese[c],math[d],english[e]);
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
输入姓名YZ,查询时显示“的语文成绩为100,数学100,英语100.”
全部显示正常。貌似就差一点了……
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
if(lookup==a)
{//花括号!!!
e=d=c=b=a;
        printf(\"%s的语文成绩为%d分,数学成绩为%d分,英语成绩为%d分.\\n\",name,chinese[c],math[d],english[e]);
}//花括号!!!
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
全部成功了!!谢谢!
最后一个问题……我在1号输入姓名yz后,显示全部时0号为无,一号为yz,二号以后姓名全为空,怎么回事?
回复

使用道具 举报

千问 | 2011-6-26 04:14:15 | 显示全部楼层
如果没猜错的话,你一定是将那些数组变量统一声明成全局变量了。

charname[20]={\"无\"}----------0号为无
你更新了1号的数据----------一号为yz
全局变量常驻进程内存空间,目前大部分编译器(我确定的有vc和gcc)将全局变量的值初始化为0,对于字符串而言意味着为空----------二号以后姓名全为空
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行