问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

哪位达人帮我看看我的C语言程序

发布网友 发布时间:2022-04-29 20:12

我来回答

5个回答

热心网友 时间:2022-06-22 07:43

刚才帮你运行一下程序有20~30来个错误。。。。。。
其实这个就和我以前编的学生管理系统一样 程序如下 你看看 可能对你有帮助
保证可以完美运行 还是第一次传到网上哈
#include "stdio.h"
#include "string.h"
struct student
{int num;
char name[10];
char sex[10];
char brith[20];
char academy[20];
float score[5];
float average;
}stu[30];
int m=0,o;
void main()
{
void SR();
void TJ();
void CX();
void SC();
void CR();
void XG();
int n;
printf("请输入统计人数:");
scanf("%d",&o);
do{printf(" # %d学生 4门课的统计程序 #\n 1 成绩录入;\n 2 成绩查询;\n 3 成绩统计;\n 4 删除录入;\n 5 插入学生 \n 6 修改学生 \n 7 退出",o);
printf("\n输入1-7选择。请选择:");
scanf("%d",&n);
if(n==1) SR();
else if(n==2) CX();
else if(n==3) TJ();
else if(n==4) SC();
else if(n==5) CR();
else if(n==6) XG();
else if(n==7) printf("谢谢使用");
else printf("无此选项!自动返回!\n");}
while(n!=7);
}

void SR()
{int y,i,j,t,k,n; float x;
if(m==1)
{printf("成绩已录入,数字键返回");
scanf("%d",&y);
goto loop;}
for(i=0;i<o;i++)
{printf("输入第%d名同学的信息\n",i+1);
printf("学号:");
scanf("%d",&stu[i].num);
printf("\n姓名:\n");
scanf("%s",&stu[i].name);
printf ("\n性别:\n");
scanf ("%s",&stu[i].sex);
printf("\n出生日期:\n");
scanf("%s",&stu[i].brith);
printf("\n系别:\n");
scanf("%s",&stu[i].academy);
printf("\n分数:\n");
for(j=0;j<4;j++)
{printf("第%d科",j+1);
scanf("%f",&stu[i].score[j]);}
x=0;
for(t=0;t<4;t++)
x=x+stu[i].score[t];
stu[i].average=x/4;}
printf("输入的成绩为:\n");
printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3]);
printf("重新输入请按 0,其他数字键返回");
scanf("%d",&n);
if(n==0)
SR();
else m=1;
loop:{};}

void CR()
{int i,k,j,t,n,w=-1;float x;
if(m==0)
{printf("请先输入成绩!\n");
goto loop;};
printf("插入的学号:");
scanf("%d",&stu[o].num);
printf("\n插入的姓名:\n");
scanf("%s",&stu[o].name);
printf ("\n插入的性别:\n");
scanf ("%s",&stu[o].sex);
printf("\n插入的出生日期:\n");
scanf("%s",&stu[o].brith);
printf("\n插入的系别:\n");
scanf("%s",&stu[o].academy);
printf("\n插入的分数:\n");
for(j=0;j<4;j++)
{printf("第%d科",j+1);
scanf("%f",&stu[o].score[j]);}
o=o+1;
for(i=0;i<o;i++)
{x=0;
for(t=0;t<4;t++)
{x=x+stu[i].score[t];}
stu[i].average=x/4;}
printf("各学生成绩:\n");
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
printf("重复插入请按 0,其他数字键确认");
scanf("%d",&n);
if(n==0)
CR();
loop:{};}

void SC()
{int k,j,t,n,w=-1;
if(m==0)
{printf("请先输入成绩!\n");
goto loop;};
printf("各学生成绩:\n");
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
chucuo:printf ("你要删除的学号:");
scanf("%d",&j);
for(t=0;t<o;t++)
{if (stu[t].num==j)w=t;}
if(w!=-1)
{o=o-1;
for (k=w;k<o;k++)
{stu[k].num=stu[k+1].num;
strcpy(stu[k].name,stu[k+1].name);
strcpy(stu[k].sex,stu[k+1].sex);
strcpy(stu[k].brith,stu[k+1].brith);
strcpy(stu[k].academy,stu[k+1].academy);
stu[k].score[0]=stu[k+1].score[0];
stu[k].score[1]=stu[k+1].score[1];
stu[k].score[2]=stu[k+1].score[2];
stu[k].score[3]=stu[k+1].score[3];
stu[k].average=stu[k+1].average;}}
if (w==-1) {printf("输入学号有误,请从新输入:");goto chucuo;};
printf("删除后各学生成绩:\n");
printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
{printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
printf("重复删除请按 0,其他数字键确认");
scanf("%d",&n);
if(n==0)
SC();
loop:{};}

void TJ()
{
int k,i,j,a[30],t; float n[30],q;
if(m==0)
{printf("请先输入成绩!\n");
goto loop;};
printf("各学生成绩:\n");
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
for(i=0;i<o;i++)
a[i]=i;
for(i=0;i<o;i++)
n[i]=stu[i].average;
for(j=0;j<o-1;j++)
for(i=0;i<o-1-j;i++)
if(n[i]<n[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;
q=n[i];n[i]=n[i+1];n[i+1]=q;}
printf("按平均分排序\n");
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[a[k]].num,stu[a[k]].name,
stu[a[k]].sex,stu[a[k]].brith,stu[a[k]].academy,stu[a[k]].score[0],stu[a[k]].score[1],stu[a[k]].score[2],stu[a[k]].score[3],stu[a[k]].average);}
chucuo:{printf("1 按第一科排序\n2 按第二科排序\n3 按第三科排序\n4 按第四科排序\n请输入:");
scanf("%d",&k);
if(k==1) j=0;
else if(k==2) j=1;
else if(k==3) j=2;
else if(k==4) j=3;
else {printf("出错,重新输入\n");goto chucuo;}
for(i=0;i<o;i++)
{n[i]=stu[i].score[j];
a[i]=i;};
for(k=0;k<o-1;k++)
for(i=0;i<o-1-k;i++)
if(n[i]<n[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;
q=n[i];n[i]=n[i+1];n[i+1]=q;}
{printf("按第%d科排序结果:\n",j+1);
printf("学号 姓名 性别 出生日期 系别 科目\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f\n",stu[a[k]].num,stu[a[k]].name,
stu[a[k]].sex,stu[a[k]].brith,stu[a[k]].academy,stu[a[k]].score[j]);}
printf("继续按1,其他数字键返回");
scanf("%d",&i);
if(i==1) goto chucuo;
loop:{};}}

void CX()
{
int x,y,k,t,i,j,q=0;
if(m==0)
{printf("请先输入成绩!\n");
goto loow;};
looq:printf("1 按学号查询\n2 查询不及格学生\n其他数字键退出\n");
scanf("%d",&x);
if(x==1)
loop:{printf("输入学号:\n");
scanf("%d",&y);
j=0;
for(k=0;k<o;k++)
if(y==stu[k].num)
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);j=1;}
if(j==0)
{printf("无此人,重新输入:\n");
goto loop;}
printf("继续按1,其他数字键返回\n");
scanf("%d",&i);
if(i==1)
goto loop;
else goto looq;}
else if(x==2)
{for(k=0;k<o;k++)
for(t=0;t<4;t++)
if(stu[k].score[t]<60)
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);q=1;break;};
if(q==0)
printf("全部及格!\n");
printf ("继续请按1,其他数字键退出:");
scanf ("%d",&k);
if(k==1)
goto looq;};
loow:{};
}

void XG()
{int k,j,t,n,w=-1; float x;
if(m==0)
{printf("请先输入成绩!\n");
goto loop;};
printf("各学生成绩:\n");
{printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
chucuo:printf ("你要修改的学号:");
scanf("%d",&j);
for(t=0;t<o;t++)
{if (stu[t].num==j)w=t;}
if(w!=-1)
{printf("请输入你要修改的信息:");
printf("\n修改的学号:\n");
scanf("%d",&stu[w].num);
printf("\n修改的姓名:\n");
scanf("%s",&stu[w].name);
printf ("\n修改的性别:\n");
scanf ("%s",&stu[w].sex);
printf("\n修改的出生日期:\n");
scanf("%s",&stu[w].brith);
printf("\n修改的系别:\n");
scanf("%s",&stu[w].academy);
printf("\n修改的分数:\n");
for(j=0;j<4;j++)
{printf("第%d科",j+1);
scanf("%f",&stu[w].score[j]);}}
x=0;
for(t=0;t<4;t++)
{x=x+stu[w].score[t];}
stu[w].average=x/4;
if (w==-1) {printf("输入学号有误,请从新输入:");goto chucuo;};
printf("修改后各学生成绩:\n");
printf("学号 姓名 性别 出生日期 系别 第一科 第二科 第三科 第四科 平均\n");
for(k=0;k<o;k++)
{printf("%-6d%-10s%-6s%-13s%-7s%-7.2f%-9.2f%-9.2f%-9.2f%-9.1f\n",stu[k].num,stu[k].name,
stu[k].sex,stu[k].brith,stu[k].academy,stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].average);}
printf("重复修改请按 0,其他数字键确认");
scanf("%d",&n);
if(n==0)
XG();
loop:{};}

热心网友 时间:2022-06-22 07:44

你这个问题在于scanf没有吧输入流清理干净,当你输入x,y,z回车的时候会把3个值存放到相应的地址空间中,但是你输入的回车还存放在输入缓冲区中,使得你第二次gets接收到的字符串就是一个回车,这样就一错到底了
解决办法就是接受一个字符把没有处理掉的字符清理掉就可以了
void creatf(File bb[10])
{ int i;
printf("please input the workers information:\n");
for(i=0;i<3;i++)
{ printf("please input the NO.%d's name: ",i);
gets(bb[i].NAME);
printf("please input his/her number,bs,zs: ");
scanf("%d%f%f",&bb[i].num,&bb[i].bs,&bb[i].zs);
getchar();
}
}
我自己测试过 没有问题或者你改成这样试试
while(getchar()!=EOF);

热心网友 时间:2022-06-22 07:44

你这个程序粘贴错了吧,编译都通不过,怎么能输入1个呢。

补充:
不晓得C语言有啥子机关,执行下面语句要出问题:
scanf("%d%f%f",&bb[i].num,&bb[i].bs,&bb[i].zs);

我这样对付的:
函数里面增加定义:
fload x,y;
scanf("%d%f%f",&bb[i].num,&x,&y);
bb[i].bs=x;
bb[i].zs=y;

热心网友 时间:2022-06-22 07:45

#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
typedef
struct
{
char
NAME[20];
int
num;
float
bs;
float
zs;
}File;
void
creatf(File*
bb)
{
int
i;
printf("please
input
the
workers
information:\n");
for(i=0;i<10;i++)
{
printf("please
input
the
NO.%d's
name:
",i);
gets(bb[i].NAME);
printf("please
input
his/her
number,bs,zs:
");
scanf("%d%f%f",&bb[i].num,&bb[i].bs,&bb[i].zs);
getchar();
}
}
void
findmin(File*
bb)
{
int
i;
File
t;
t=bb[0];
for(i=0;i<10;i++)
{
if
((t.bs+t.zs)>(bb[i].bs+bb[i].zs))
t=bb[i];
}
printf("the
worker's
information
is:
");
printf("%d,%s,%g,%g\n",t.num,t.NAME,t.bs,t.zs);
}
main()
{
File
bb[10];
system("cls");
creatf(bb);
findmin(bb);
}

热心网友 时间:2022-06-22 07:46

findmin函数中,t=bb[0]后面缺少了一个分号,f((t.bs+t.zs)>(bb[i].bs+bb[i].zs)最后少了一个小括号,if写成f了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 鸭嘴龙的形态特征是什么? 模拟农场22车辆介绍 化学符号及翻译 K23 Y7是什么三极管 masseyferguson拖拉机2704价格? massey ferguson什么意思 砂轮 规格 massey.ferguson 西门子PLC S7-200与台达变频器通信,可以使用modbus指令吗?怎么用? 蚂蚁星愿等钱是不是被冻结了的?只要存进去就表示冻结吗?我不想用那么快 蚂蚁星愿存进去的钱可以提出来吗 p40指纹识别处太高了,很不方便,看着也不协调,能往下调吗?这个功能是不... 余额宝里蚂蚁星愿的资金取出,余额宝里也解冻了,我搞不明白的是余额宝里包含蚂蚁星愿解除的冻结资金吗? 给别人的抖音发了个评论,一天内不停的收到点赞,是手机出了问题吗? 华为8x手机看抖音的时候为什么会自动暂停还自动点赞? 我的抖音怎么突然连着点赞四个作品? 抖音无缘无故自动点赞什么原因 一个身份证注册两个支付宝账户 一个不用注销后影响另外一个吗 益阳滴滴快车赚钱不 陈蓉 冷月个人资料 这是什么品牌车的标志 腔骨龙的外貌描写? 这个是什么车子品牌 AED除颤仪的品牌多吗?什么牌子比较好? mlml是什么牌的汽车 有关恐龙的资料。历史、生活特点等等。 最常见的100种恐龙 这个汽车标志是什么牌子啊 苹果iPhone怎样添加提醒事项 这个是什么品牌的车子 为什么手机上传图片到百度贴吧会显示“你发的内容为空” manenall是什么牌汽车 这个是什么品牌的车子? 这辆是什么牌的车 真假儿媳韩剧分集剧情 这个车子是什么标志,,什么牌子啊 我的老婆是80后分集剧情介绍 媳妇的全盛时代剧情介绍 图吧工具箱怎么拷贝到优盘 图吧工具箱内存条几gb