c语言课程设计高考录取分数线Word文档下载推荐.docx
- 文档编号:18813803
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:21
- 大小:250.21KB
c语言课程设计高考录取分数线Word文档下载推荐.docx
《c语言课程设计高考录取分数线Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程设计高考录取分数线Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
malloc.h>
用结构体的形式将学生的一切信息表达出来:
structDATA
{
intID;
charname[4];
charsex[3];
intscore;
};
定义各个函数:
voidpaixu(int*,DATA*,int);
intsishewuru(double);
voidfunc1(int*,int*,DATA*,int*,int,int,int,int);
//统计男女比例
intfunc2(int*,int,DATA*);
//查找考生序号
voidprint();
voidmain()
再应该从f1.txt中向程序导入将每一个人的学号、姓名、性别、分数,并自动计算考生数量:
FILE*file=fopen("
f1.txt"
"
r"
),*file1;
if(file==NULL)
{
printf("
Nosuchfile!
\n"
);
return;
}
while(EOF!
=fscanf(file,"
%*[^\n]\n"
))length++;
//自动计算考生数量
然后比较大小,将原来一千个人按成绩高低排好顺序:
DATA*data=(DATA*)malloc(length*sizeof(DATA));
int*pai=(int*)malloc(length*sizeof(int));
rewind(file);
for(i=0;
i<
length;
i++)
fscanf(file,"
%d%s%s%d"
&
data[i].ID,&
data[i].name,&
data[i].sex,&
data[i].score);
pai[i]=i;
paixu(pai,data,length);
//将1-1000的学生按成绩排序
对1000名学生的成绩分别按比例进行计算并四舍五入为整数,可得出各批次最低成绩,即各批次的录取成绩。
要划出各批次的录取成绩,就要将压线的那个分数计算出来。
在这里,特别考虑的是:
压线分数上人数有多个,所以,我们不能单纯的将N乘以各个批次的百分点。
编写程序如下:
yiben=sishewuru(length*0.1)-1;
//分别按比例进行计算并四舍五入为整数
erben=yiben+sishewuru(length*0.15);
sanben=erben+sishewuru(length*0.2);
dazhuan=sanben+sishewuru(length*0.25);
yi=data[pai[yiben]].score;
er=data[pai[erben]].score;
san=data[pai[sanben]].score;
si=data[pai[dazhuan]].score;
设置界面:
将“各类招生分数线”、“各批次男女比例”、“单个学生录取情况”、“退出系统输入”、“重新打印初试界面”输入指令分别设置为数字“0”~“4”:
while
(1)
print();
\n请输入查询码:
"
for(input=getchar();
;
input=getchar())
{
if(!
(input>
='
0'
&
input<
4'
))
{
printf("
非法输入,请重新输入\n请输入:
fflush(stdin);
}
elsebreak;
}
实现“各类招生分数线”即“0”指令:
getchar();
switch(input)
case'
:
\n一类本科招生线:
%d\n二类本科招生线:
%d\n三类本科招生线:
%d\
\n高职高专招生线:
%d\n"
yi,er,san,si);
是否打印为文件?
(y/n):
if(getchar()=='
y'
{
file1=fopen("
各批次录取分数线.txt"
w"
fprintf(file1,"
一类本科招生线:
\n三类本科招生线:
%d\n高职高专招生线:
fclose(file1);
}
break;
实现“各批次男女比例”即“1”指令:
case'
1'
func1(male,female,data,pai,yiben,erben,sanben,dazhuan);
一本类本科招生线男女比例:
%d:
male[0],female[0]);
二类本科招生线男女比例:
male[1],female[1]);
三类本科招生线男女比例:
male[2],female[2]);
高职高专招生线招生线男女比例:
%d:
male[3],female[3]);
各批次录取男女比例.txt"
一类本科招生线男女比例:
实现“单个学生录取情况”即“2”指令:
2'
按考号查询输入0按姓名查询输入1\n请输入查询码:
for(input=getchar();
if(input!
input!
{
printf("
fflush(stdin);
}
elsebreak;
getchar();
intshuru,j,ss[10];
//假设最多10个重名的
for(j=0;
j<
10;
j++)ss[i]=0;
if(input=='
start1:
printf("
请输入考号:
for(j=scanf("
%d"
shuru);
j!
=1||shuru/10000!
=4211;
j=scanf("
shuru))
{//假设考号开头为4211
getchar();
j=shuru%10000;
//假设考号和序号的关系
该生考号:
%d姓名:
%s性别:
%s分数:
%d录取情况:
shuru,data[j].name,data[j].sex,data[j].score);
if(data[j].score>
=yi)printf("
一本\n"
elseif(data[j].score>
=er)printf("
二本\n"
=san)printf("
三本\n"
=si)printf("
高职高专\n"
elseprintf("
未过线,请继续努力!
是否继续查询?
if(getchar()=='
gotostart1;
}
else
start2:
请输入姓名:
j=func2(ss,length,data);
if(j==0)printf("
查无此人!
elseif(j==1)
data[ss[0]].ID,data[ss[0]].name,data[ss[0]].sex,data[ss[0]].score);
if(data[ss[0]].score>
elseif(data[ss[0]].score>
elseprintf("
else
有多个考生姓名为%s,数据如下:
data[ss[0]].name);
for(j=j-1;
j>
=0;
j--)
{
printf("
data[ss[j]].ID,data[ss[j]].name,data[ss[j]].sex,data[ss[j]].score);
if(data[ss[j]].score>
elseif(data[ss[j]].score>
elseprintf("
}
gotostart2;
实现“退出系统”即“3”指令:
3'
fclose(file);
free(data);
return;
实现“重新打印初始界面”即“4”指令:
print();
fclose(file);
free(data);
}
下面,则开始对开始定义的函数进行填充:
根据1000名学生的成绩进行从高到底的排序:
voidpaixu(int*pai,DATA*data,intlength)
inti,j,temp;
for(j=i+1;
j++)
if(data[pai[i]].score<
data[pai[j]].score)
temp=pai[i];
pai[i]=pai[j];
pai[j]=temp;
计算各批次比例的四舍五入:
intsishewuru(doublel)
if(l>
1)
if((l-(int)l)<
0.5)return(int)l;
elsereturn(int)l+1;
elsereturn1;
各批次男女比例:
voidfunc1(int*male,int*female,DATA*data,int*pai,inta,intb,intc,intd)
inti;
4;
i++){male[i]=0;
female[i]=0;
=a;
if(data[pai[i]].sex[0]==-60)male[0]++;
elsefemale[0]++;
for(;
=b;
if(data[pai[i]].sex[0]==-60)male[1]++;
elsefemale[1]++;
=c;
if(data[pai[i]].sex[0]==-60)male[2]++;
elsefemale[2]++;
=d;
if(data[pai[i]].sex[0]==-60)male[3]++;
elsefemale[3]++;
界面:
voidprint()
printf("
--------------------------------高考招生录取程序-------------------------------\n"
今年招生计划:
一类本科招生计划为10%\n二类本科招生计划为15%\n\
三类本科招生计划为20%\n四类高职高专招生计划为25%\n"
查询:
\n各类招生分数线输入0各批次男女比例输入1\
\n单个学生录取情况输入2退出系统输入3\n重新打印初试界面输入4\n"
根据考生的姓名或考号进行单个学生成绩查询:
intfunc2(int*ss,intlength,DATA*data)
inti,j=0;
chars[4];
while
(1)
i=scanf("
%s"
s);
fflush(stdin);
if(i!
=1)
printf("
continue;
for(i=0;
if(data[i].name[0]==s[0]&
data[i].name[1]==s[1]&
data[i].name[2]==s[2])
ss[j++]=i;
break;
returnj;
四、实现结果
系统界面
各类招生录取成绩
各批次男女比例
五课设总结
在进行几次上机实习后,我感觉c语言真是一门很神奇的学科,它在只借助一台计算机,一个vc++,就能带给人们那么多实用的东西!
而且,我对c语言有了全新的认识,以前不知道的东西在上机之后完全了解了,以前一知半解的东西在上机之后感觉分变得更加明了了。
很多错误都是始料未及的,往往一点的小差错都会导致整个程序无法运行或者错误运行。
在上机实习的前几节课,我感觉有点茫然不知所措,只有将书上的相关知识一遍又一遍地了解。
在多次了解后,开始理解编程就顺利多了。
六程序代码
intlength=0,i,yiben,erben,sanben,dazhuan,male[4],female[4];
intyi,er,san,si;
charinput;
FILE*file=fopen("
while(EOF!
DATA*data=(DATA*)malloc(length*sizeof(DATA));
yiben=sishewuru(length*0.1)-1;
getchar();
fprintf(file1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 高考 录取 分数线