编了个程序,不知道错在哪里?求高手指导~

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>structstudent{in... #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
struct student
{
int num;
int age;
char sex;
char name[10];
int score1;
int score2;
int score3;
int score4;
int score5;
float zf;
}
void main()
{
int x;
do
{
printf("\t\t\t 学生成绩管理系统 \t\t\t\n");
printf("\t__________输入\n");
printf("\t\t_________浏览\n");
printf("\t\t__________退出\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch(x)
{
case 1:int();break;
case 2:brow();break;
case 3:input();break;
case 0:printf("谢谢使用,再见\n");break; }
}
}
}
void input()
{
int i,n,t,j;
print("请输入学生数量:");
scanf("%d",&n);
for (i=1,i<n,i++);
print("请输入第%d个学生的成绩:\n");
print("请输入学号:");
scanf("%d",&st[i].num);
for (t=0;t<i;t++)
{
while (st[i].num==st[t].num)
printf ("该学生的学号已存在,请重新输入!\n");
scanf("%d",&st[i].num);
t=-1;
}
printf ("请输入姓名:");
scanf ("%s",st[i].name);
printf ("请输入数学分析成绩:");
scanf("%d",&st[i].score1);
printf ("请输入高等代数成绩:");
scanf("%d",&st[i].score2);
printf ("请输入英语成绩:");
scanf("%d",&st[i].score3);
printf ("请输入概率统计成绩:");
scanf("%d",&st[i].score4);
printf ("请输入体育成绩:");
scanf("%d",&st[i].score5);
}
void count()
{
int i;
for(i=0;i<sm;i++)
{
st[i].zf=0;
st[i].zf=st[i].score1+st[i].score2+st[i].score3+st[i].score4+st[i].score5;
}
}

void brow ()
{
int i;
for (i=0;i<sm;i++)
{
printf ("第%d个学生信息\n",i+1);
printf ("学号:%4d\n",st[i].num);
printf ("姓名:%s\n",st[i].name);
printf ("性别:%s\n",st[i].sex);
printf ("年龄:%d\n",st[i].age);
printf ("第一门成绩:%d\n",st[i].score1);
printf ("第二门成绩:%d\n",st[i].score2);
printf ("第三门成绩:%d\n",st[i].score3);
printf ("第四门成绩:%d\n",st[i].score4);
printf ("第五门成绩:%d\n",st[i].score5);
printf ("\n");
}
}
不太会编,是老师布置的作业,要求是这样的:
学生信息及成绩管理系统(至少10人)
学生信息包括职学号、姓名、性别、年龄、课程(五门课程)基本信息等(学号不重复)。

试设计一学生成绩管理系统,使之能提供以下功能:
l 学生信息录入功能(学生信息用文件保存)
l 学生信息浏览功能
l 学生总成绩的统计功能
l 学生每门课程的成绩浏览

课程的基本构成如下:

考试: 数学分析 高等代数 英语 概率统计
考查: 体育(优 良 中 及 差 五档,对应分数90 80 70 60 50)
希望高手能尽快帮忙,在此谢过~~
程序运行的错误在int score1这一句,错误是unknown character "oxa3"
展开
 我来答
zhjiemm
推荐于2016-03-07 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:711万
展开全部
程序中错误很多。
1,中文;和英文;不一致
2,do没有while
3,sm,st没有定义
4,int()定义不对
5,函数中的{}不匹配
6,for循环中应该用;而不是,
7,for语句循环后面多了一个;
8,菜单显示不对
9,重复学号判断不对
10,printf等函数拼写错误。。。

简单改一下,如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

#define COUNT 100
void init(void);
void input(void);
void count(void);
void brow(void);

struct student {
int num;
int age;
char sex;
char name[10];

int score1;
int score2;
int score3;
int score4;
int score5;

float zf;}st[COUNT];
int sm;
void main() {
int x;
init();
do {
printf("\t\t\t 学生成绩管理系统 \t\t\t\n");
printf("\t\t1:__________输入\n");
printf("\t\t2:__________浏览\n");
printf("\t\t3:__________统计\n");
printf("\t\t0:__________退出\n");
printf("请输入你的选择:");
scanf("%d", &x);
switch(x) {
case 1:
input();
break;
case 2:
brow();
break;
case 3:
count();
break;
case 0:
printf("谢谢使用,再见\n");
break;
}
}
while (x != 0);
return ;
}

void init(void)
{
memset(st,0,sizeof(st));
sm = 0;
}

void input(void) {
int i, n, t, j;
printf("请输入学生数量:");
scanf("%d", &n);
sm = n;
for (i = 0;i < n; i++) {
printf("请输入第%d个学生的成绩:\n",i+1);
printf("请输入学号:");
fflush(stdin);
scanf("%d", &st[i].num);
for (t = 0; t < i; t++) {
if (st[i].num == st[t].num)
{
printf("该学生的学号已存在,请重新输入!\n");
fflush(stdin);
scanf("%d", &st[i].num);
t = 0;
}
}
printf("请输入姓名:");
scanf("%s", st[i].name);
printf("请输入数学分析成绩:");
scanf("%d", &st[i].score1);
printf("请输入高等代数成绩:");
scanf("%d", &st[i].score2);
printf("请输入英语成绩:");
scanf("%d", &st[i].score3);
printf("请输入概率统计成绩:");
scanf("%d", &st[i].score4);
printf("请输入体育成绩:");
scanf("%d", &st[i].score5);
}
}

void count(void) {
int i;
for (i = 0; i < sm; i++) {
st[i].zf = 0;
st[i].zf = st[i].score1 + st[i].score2 + st[i].score3 + st[i]
.score4 + st[i].score5;
}
}

void brow(void) {
int i;
for (i = 0; i < sm; i++) {
printf("第%d个学生信息\n", i + 1);
printf("学号:%4d\n", st[i].num);
printf("姓名:%s\n", st[i].name);
printf("性别:%s\n", st[i].sex);
printf("年龄:%d\n", st[i].age);
printf("第一门成绩:%d\n", st[i].score1);
printf("第二门成绩:%d\n", st[i].score2);
printf("第三门成绩:%d\n", st[i].score3);
printf("第四门成绩:%d\n", st[i].score4);
printf("第五门成绩:%d\n", st[i].score5);
printf("\n");
}
}
_whales
2013-01-08 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:503万
展开全部
#define STUDENT_COUNT 10000 //最多一万
struct student st[STUDENT_COUNT];//学生信息

int student_count=0; //学生个数

void input()
{
int i,n=STUDENT_COUNT+1,t,j;
int start=0;
while(n>STUDENT_COUNT)
{
if(start==0)
{
printf("请输入学生数量:");
start=1;
}
else printf("数量过大,不能超过%d\n请重新输入学生数量:",STUDENT_COUNT);
scanf("%d",&n);
}
//for (i=1,i<n,i++);//这个循环个什么也不做了。
for (i=1,i<n,i++)
{
print("请输入第%d个学生的成绩:\n");
print("请输入学号:");
scanf("%d",&st[i].num);
for (t=0;t<i;t++)
{
//while(st[i].num==st[t].num)//改成if,
// 用while回直到出现最后一个等学号的才printf
// 虽然效果相同,但也不要这样写!
if(st[i].num==st[t].num)
{ //添加,不这样的话,有那句t=-1;成了死循环了。
printf ("该学生的学号已存在,请重新输入!\n");
scanf("%d",&st[i].num);//只有重号才重新输入
// t=-1;技巧虽好,看上去,感到很别扭 ,看个人喜好吧!
t=0; //改成两句,从头开始再检查。
continue; //跳过 t++
}
}
printf ("请输入姓名:");
scanf ("%s",st[i].name);
printf ("请输入数学分析成绩:");
scanf("%d",&st[i].score1);
printf ("请输入高等代数成绩:");
scanf("%d",&st[i].score2);
printf ("请输入英语成绩:");
scanf("%d",&st[i].score3);
printf ("请输入概率统计成绩:");
scanf("%d",&st[i].score4);
printf ("请输入体育成绩:");
scanf("%d",&st[i].score5);
}//添加
}
void brow ()
{
int i;
for (i=0;i<student_count;i++)
{
printf ("第%d个学生信息\n",i+1);
printf ("学号:%4d\n",st[i].num);
printf ("姓名:%s\n",st[i].name);
printf ("性别:%s\n",st[i].sex);
printf ("年龄:%d\n",st[i].age);
printf ("第一门成绩:%d\n",st[i].score1);
printf ("第二门成绩:%d\n",st[i].score2);
printf ("第三门成绩:%d\n",st[i].score3);
printf ("第四门成绩:%d\n",st[i].score4);
printf ("第五门成绩:%d\n",st[i].score5);
printf ("\n");
}
}

void count()
{
int i;
for(i=0;i<student_count;i++)
{
st[i].zf=0;
st[i].zf=st[i].score1+st[i].score2+st[i].score3+st[i].score4+st[i].score5;
}
}

void main()
{
int x;
do
{
printf("\t\t\t 学生成绩管理系统 \t\t\t\n");
printf("\t__________输入\n");
printf("\t\t_________浏览\n");
printf("\t\t__________退出\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch(x)
{
//case 1:int();break;
case 1:intput();break;
case 2:brow();break;
case 3:input();break;
case 0:printf("谢谢使用,再见\n");
//break;
return;
default:
break;
}
}while(1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-01-08 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:967万
展开全部
三个问题,我看到
一个是主函数中,do循环没有while结尾吧,呵呵
一个是st结构体数组没有定义吧,这个应该是一个全局数组
一个是子函数没有定义,你把子函数全部放到main前面即可

还有一个小问题,不知道你有没有注意到,c中一个可以说是bug的问题吧
就是字符和数字混合输入中,由于回车也是一个字符,所以当字符输入的前面有输入时,前面的输入需要回车来结束,那么这个回车会当成字符输入的输入而被接收,从而使字符的输入就跳过了,接收不到字符的数据(他接收了回车)
处理的方式有两个,加getchar吸收掉回车或者ffush(stdin)清理缓存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宛丘山人
2013-01-08 · 长期从事大学高等数学和计算机数据结构教学
宛丘山人
采纳数:6405 获赞数:24688

向TA提问 私信TA
展开全部
你的程序错误太多,指出几个主要的:
1. 每行后面应回车
2. 结构体定义前面要有:typedef ,变量st没定义
3. main()要放最后面,否则后面的函数都必须在前面先定义
4. 多个分号(;)打成了全角字符,多个“)”也打成了全角。这些必须是英文半角。
5. 多个printf打成了print
6. 部分模块的{}不匹配
把上述问题改正后,你自己调试吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leesa526
2013-01-08 · 超过12用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:27.9万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
struct student
{
int num;
int age;
char sex;
char name[10];
int score1;
int score2;
int score3;
int score4;
int score5;
float zf;
}st[100];
void main()
{
void input();
void brow();
int x;
do
{
printf("\t\t\t 学生成绩管理系统 \t\t\t\n");
printf("\t__________输入\n");
printf("\t\t_________浏览\n");
printf("\t\t__________退出\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch(x)
{
case 1:
int();
break;
case 2:
brow();
break;
case 3:
input();
break;
case 0:
printf("谢谢使用,再见\n");
break;
}
}
while (1);
}

void input()
{
int i,n,t,j;
printf("请输入学生数量:");
scanf("%d",&n);
for (i=1;i<n;i++);
printf("请输入第%d个学生的成绩:\n");
printf("请输入学号:");
scanf("%d",&st[i].num);
for (t=0;t<i;t++)
{
while (st[i].num==st[t].num)
printf ("该学生的学号已存在,请重新输入!\n");
scanf("%d",&st[i].num);
t=-1;
}
printf ("请输入姓名:");
scanf ("%s",st[i].name);
printf ("请输入数学分析成绩:");
scanf("%d",&st[i].score1);
printf ("请输入高等代数成绩:");
scanf("%d",&st[i].score2);
printf ("请输入英语成绩:");
scanf("%d",&st[i].score3);
printf ("请输入概率统计成绩:");
scanf("%d",&st[i].score4);
printf ("请输入体育成绩:");
scanf("%d",&st[i].score5);
}
void count()
{
int i;
for(i=0;i<sm;i++)
{
st[i].zf=0;
st[i].zf=st[i].score1+st[i].score2+st[i].score3+st[i].score4+st[i].score5;
}
}
void brow ()
{
int i;
for (i=0;i<sm;i++)
{
printf ("第%d个学生信息\n",i+1);
printf ("学号:%4d\n",st[i].num);
printf ("姓名:%s\n",st[i].name);
printf ("性别:%s\n",st[i].sex);
printf ("年龄:%d\n",st[i].age);
printf ("第一门成绩:%d\n",st[i].score1);
printf ("第二门成绩:%d\n",st[i].score2);
printf ("第三门成绩:%d\n",st[i].score3);
printf ("第四门成绩:%d\n",st[i].score4);
printf ("第五门成绩:%d\n",st[i].score5);
printf ("\n");
}
}

实在不知道你的sm是什么东西了,哪来的?
其他地方的错误改了,你自己定义下你的sm吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式