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

2024-12-12 21:58:39
推荐回答(3个)
回答1:

C++的编译器。
我发现你真是个人才
这么多错误居然也能写下去,佩服
你把 == 写成 =
写两个分号
哎呀,不说了,自己好好看下吧,帮你改了一下
那个输入的问题帮你解决了,这个倒不怪你,是经验的问题,在获取按键值时一般要先清一下输入缓存
.............
加油
#include "stdafx.h"
#include
#include

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 {
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 {
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 {
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 {
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 {
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 {
for(j=0;j {
if(stu[j].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 {
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 for(j=0;j {
if(stu[j].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 {
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 {
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 {
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;
}

回答2:

所有scanf("%c",&
在%c前加一个空格scanf(" %c",&

回答3:

是编译错误吗?