这里有一个c语言程序,有问题,我找不出来,请哪位高手帮我改改,(字符太多,这放不下,我放下面的网址)

http://hi.baidu.com/155736/blog/item/b8bd7f3c7fe5e53897ddd8eb.html。程序代码就在这里,请高手帮我解决下。... http://hi.baidu.com/155736/blog/item/b8bd7f3c7fe5e53897ddd8eb.html。程序代码就在这里,请高手帮我解决下。谢谢! 展开
 我来答
394866351
2011-09-17 · TA获得超过124个赞
知道小有建树答主
回答量:276
采纳率:0%
帮助的人:218万
展开全部
C++的编译器。
我发现你真是个人才
这么多错误居然也能写下去,佩服
你把 == 写成 =
写两个分号
哎呀,不说了,自己好好看下吧,帮你改了一下
那个输入的问题帮你解决了,这个倒不怪你,是经验的问题,在获取按键值时一般要先清一下输入缓存
.............
加油
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

int m=1;

struct student
{
char name[10];
char num[2];
char sex[2];;
int a[3];
double ave;
}stu[5];

void print()
{
system("cls");
printf("|**************************************************|\n");
printf("|**************************************************|\n");
printf("*****************学生成绩管理系统*******************\n");
printf("|**************************************************|\n");
printf("|**************************************************|\n");
printf("|*************** 1.输入学生成绩 *******************|\n");
printf("|*************** 2.查看学生成绩 *******************|\n");
printf("|*************** 3.查找学生成绩 *******************|\n");
printf("|*************** 4.查看平均分排名 *****************|\n");
printf("|*************** 5.查看单科排名 *******************|\n");
printf("|*************** 0.退出系统 ***********************|\n");
printf(">>>>------------ 请选择(0-5)------------------<<<<\n");
printf("|************************************************|\n");
}

void input(int n)
{
int i,j;
printf("请输入学生学号,姓名,性别,和语数外成绩:\n");
for(i=0;i<n;i++)
{
fflush(stdin);
scanf("%s%s%s",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
{
fflush(stdin);
scanf("%d",&stu[i].a[j]);
}
}
}

void show(int n)
{
int i,j;
printf("学号 姓名 性别 语文 数学 英语\n");
for(i=0;i<n;i++)
{
printf("-%c -%c -%c ",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
{
printf("-%d ",stu[i].a[j]);
}
printf("\n");
}
}

void average(int n)
{
int sum=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<3;j++)
{
sum+=stu[i].a[j];
}
stu[i].ave=sum*1.0/3;
sum=0;
}
}

void finda(int n)
{
char e,num1[10],name1[20];
int k=0,l=0;
printf("请选择1or2?");
fflush(stdin);
scanf("%c",&e);
if(e=='1')
{
printf("请输入要查到学生的学号:");
fflush(stdin);
gets(num1);
for(int i=0;i<n;i++)
{
if(num1==stu[i].num)
{
printf("学号 姓名 性别 平均成绩 语文 数学 英语 \n");
printf("%c %c %c %f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ave);
for(int j=0;j<3;j++)
{
printf("%d ",stu[i].a[j]);
}
k++;
}
}
if(k==0) printf("没有你要查询的信息!\n");
}
else if(e='2')
{
printf("请输入要查到学生的姓名:");
fflush(stdin);
gets(name1);//这里会缓冲区溢出的,哥们
for(int i=0;i<n;i++)
{
if(name1==stu[i].name)
{
printf("学号 姓名 性别 平均成绩 语文 数学 英语\n");
printf("%c %c %c %f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ave);
for(int j=0;j<3;j++)
{
printf("%d ",stu[i].a[j]);
}
l++;
}
}
if(l=0) printf("没有你要查询的信息!\n");
}

}
void find(int n)
{
printf("1.按学号查找 ** 2.按姓名查找");
finda(n);
}

void avepai(int n)
{
int i,j;
double t;
for(i=0;j<n-1;i++)
{
for(j=0;j<n-i-i;j++)
{
if(stu[j].ave<stu[j+1].ave)
{t=stu[j].ave;stu[j].ave=stu[j+1].ave;stu[j+1].ave=t;}
}
}
printf("学生成绩按平均分排名:\n");
printf("学号 姓名 性别 平均成绩\n");
for(i=0;i<n;i++)
{
printf("%c %c %c %f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ave);
}
}

void rank(int n)
{
int i,j,k,t;
for(k=0;k<3;k++)
{
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if(stu[j].a[k]<stu[j+1].a[k])
{t=stu[j].a[k];stu[j].a[k]=stu[j+1].a[k];stu[j+1].a[k]=t;}
}
}
printf("语文成绩的排名:\n");
printf("学号 姓名 性别 语文\n");
for(i=0;i<n;i++)
{
printf("%c %c %c ",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
printf("%d ",stu[i].a[j]);
}
printf("\n");
printf("数学成绩的排名:\n");
printf("学号 姓名 性别 语文\n");
for(i=0;i<n;i++)
{
printf("%c %c %c ",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
printf("%d ",stu[i].a[j]);
}
printf("\n");
printf("英语成绩的排名:\n");
printf("学号 姓名 性别 语文\n");
for(i=0;i<n;i++)
{
printf("%c %c %c ",stu[i].num,stu[i].name,stu[i].sex);
for(j=0;j<3;j++)
printf("%d ",stu[i].a[j]);
}

}

void choose()
{
char ch;
printf("-->>请选择序号(0-5):");
fflush(stdin);
scanf("%c",&ch);
do
{
switch(ch)
{
case('0'):exit(0);break;
case('1'):input(m);break;
case('2'):show(m);break;
case('3'):find(m);break;
case('4'):avepai(m);break;
case('5'):rank(m);break;
default:
printf("您输入有误,请您重新输入:");
fflush(stdin);
scanf("%c",&ch);
break;
}
}while(ch=='0');
}

int main()
{
char y;
do
{
system("cls&&color 1B");
print();
choose();
printf("\n-->>还要继续吗?y/n:");
fflush(stdin);
scanf("%c",&y);
while(y!='y'&&y!='Y'&&y!='n'&&y!='n')
{
printf("您输入有误,请重新输入:");
fflush(stdin);
scanf("%c",&y);
}
}while(y=='Y'||y=='y');

return 0;
}
追问
编译没有问题,运行也没有问题,程序没有编写问题,是中间的do—while循环不能达到想要的效果
追答
其他的我没看,睡觉了
心云细雨
2011-09-17 · TA获得超过687个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:357万
展开全部
所有scanf("%c",&
在%c前加一个空格scanf(" %c",&
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinwp2007
2011-09-17 · 超过23用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:67.1万
展开全部
是编译错误吗?
更多追问追答
追问
编译没有错误,也能运行。就是运行的时候达不到想要的效果。是do-while循环有问题,但是我找不到问题所在
追答
能描述一下吗? 是不是你输入一个字符就结束了,还是?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式