#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define N 50
int n=0;
//实际参考人数
struct Info
//定义最大参考人数的结构数组
{
int count;
//用于答对题数计数器
int overall;
//总分
char num[6+1];
//存储ID号
char name[20];
//存储姓名
}Information[20];
struct problem
//定义题目结构数组
{
int Id;
//题目编号
char subject[200];
//题目
char select[200];
//题目选项
char right;
//正确答案
}pro[N]={
//结构变量初始化
{1,"找出下列数字的规律,选择填空()
1
4
13
40
()
364.",
"A.53
B.81
C.121
D.243",'C'},
{2,"Where () you come from ?","A.are
B.is
C.have
D.has",'A'},
{3,"若池塘中的荷花每天长满的与前天的一样多,当第十天时已长满了半个池塘,
请问长满整个池塘需要多久?","A.20
B.21
C.10
D.11",'D'},
{4,"请问\"林字多一半\"是什么字?","A.森
B.林
C.木
D.梦",'D'},
{5,"中国历史上第一个女皇帝是()?","A. 孝庄
B.武则天
C.慈禧
D.杨贵妃",'B'},
{6,"已知A的ASCII码为65,则ASCII码为70的字符是:.","A. C
B. D
C. F
D. G",'C'},
{7,"()发现了万有引力.","A.贝尔
B.牛顿
C.史蒂芬森
D.霍金",'B'},
{8,"已知M比P 高,O比p高,比N低,下列判断正确的是:.","A.M>O
B.O>N
C.N>M
D.N>P",'D'},
{9,"小民第一天上学,和班里的每一位同学握一次手,一共握了30次,请问小民班有多少人?",
"A.30
B.31
C.60
D.61",'B'},
{10,"一只猴子某天摘了n个桃子,当天(第一天)吃了一半零一个,以后每天吃掉所剩桃的一半零一个
到第5天时猴子发现只剩下一个桃了,请问n 的值是?","A.94
B.46
C.22
D.10",'B'},
{11,"在下面各世界顶级的奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是?","A.沃尔夫奖
B.诺贝尔奖
C.菲尔兹奖
D.图灵奖",'D'},
{12,"哈雷慧星多少年出现一次?","A.75年
B.76年
C.77年
D.78年",'B'},
{13,"“初唐四杰”中有:","A.王绩
B.王勃
C.王维
D.王之焕",'B'},
{14,"电话的发明者是:","A.爱迪生
B.贝尔
C.贝尔德
D.诺贝尔",'B'},
{15,"“世界环境日”是:","A.3月5日 B.4月5日 C.5月5日
D.6月5日",'D'},
{16,"“敖包相会”中的“敖包”是:","A.小土山
B.蒙古包
C石堆
D.河流",'C'},
{17,"诗句“每逢佳节倍思亲”中的“佳节”原意是指:","A.元宵节
B.重阳节
C.中秋节
D.端午节",'B'},
{18,"汉字“单”共有几种读音:","A.1种
B.2种
C.3种
D.4种",'C'},
{19,"被称为“画圣”的是:","A.顾恺之
B.吴道子
C.郑板桥
D.齐白石",'B'},
{20,"著名雕塑作品《思想者》出于谁之手:","A.米开朗基罗
B.罗丹
C.米隆
D.达芬奇",'B'},
{21,"“耳顺”代指什么年纪?","A.四十岁
B.五十岁
C.六十岁
D.七十岁",'C'},
{22,"“阿凡提”在新疆维吾尔族语里是什么意思?","A.善良的人
B.机智的人
C.有学问的人
D.朋友多的人",'B'},
{23,"1秒等于:","A.60微秒
B.100微秒
C.120微秒
D.1000微秒",'D'},
{24,"“海上升明月,天涯共此时”是谁的诗句?","A.王勃
B.张九龄
C.白居易
D.李白",'B'},
{25,"书画作品中的“四君子”是指哪四种植物?","A.梅、兰、竹、菊
B.梅、松、竹、兰
C.梅、荷、兰、菊
D.4、兰、荷、菊",'A'},
{26,"《义勇军进行曲》是哪部电影的主题歌?","A.《塞上风云》
B.《十字街头》
C.《风云儿女》
D.《大路》",'C'},
{27,"诺贝尔奖最后设立的奖项是:","A.和平奖
B.经济学奖
C.化学奖
D.文学奖",'B'},
{28,"人的舌头的哪个部位对苦味最敏感?","A.舌尖
B.舌两侧
C.舌根
D.舌中间",'C'},
{29,"我国信用卡透支期限最长为:","A.6天
B.16天
C.60天
D.90天",'C'},
{30,"海豚为什么要追随轮船呢?","A.寻求安全保障
B.可以获取食物
C.借助外力游动
D.与人类嬉戏",'C'},
{31,"我国法律所称的老人是指年龄大于:","A.55岁的公民
B.60岁的公民
C.65岁的公民
D.70岁的公民",'A'},
{32,"我们常吃的辣椒属于什么类蔬菜?","A.叶菜类
B.茄果类
C.瓜菜类
D.水生菜类",'B'},
{33,"世界上面积最大的宫殿是:","A.克里姆林宫
B.爱丽舍宫
C.故宫
D.白宫",'C'},
{34,"下列矿物质中,属于人体微量元素的有:","A.钙
B.钠
C.钾
D.铁",'C'},
{35,"我国55个少数民族中,人口最多的是什么族?","A.满族 B.苗族
C.黎族
D.壮族",'D'},
{36,"漫画起源于哪个国家?","A.日本
B.法国
C.英国
D.中国",'D'},
{37,"举办“戛纳电影节”的戛纳是:","A.法国城市
B.意大利城市
C.英国城市
D.摩纳哥城市",'A'},
{38,"经常食用哪种食物容易引起铅中毒?","A.土豆
B.竹笋
C.松花蛋
D.酸菜鱼",'C'},
{39,"有奖销售的最高奖金额不得超过:","A.1000元
B.2000元
C.5000元
D.10000元",'C'},
{40,"全国助残日是每年五月的:","A.第1个周日
B.第2个周日
C.第3个周日
D.第4个周日",'C'},
{41,"偃旗息鼓“偃”的意思是:","A.摘下
B.收起
C.停止
D.放倒",'D'},
{42,"“跬步千里”中“跬步”指:","A.半步
B.一小步
C.一步
D.大一步",'A'},
{43,"成语“沐雨栉风”源于哪个故事?","A.苏武牧羊
B.大禹治水
C.赤壁之战
D.安史之乱",'B'},
{44,"“入木三分”这个典故原意用来形容:","A.雕刻技术高
B.文章深刻
C.书法笔力强劲
D.射箭本领高",'C'},
{45,"任何一支足球队在比赛中的人数少于几名时,该场比赛应为无效?","A.5
B.6
C.7
D.8",'B'},
{46,"世界杯足球赛始于哪一年?","A.1906年
B.1918年
C.1930年
D.1942年",'C'},
{47,"西方著名作曲家中被称为“交响乐之父”的是:","A.海顿
B.莫扎特
C.贝多芬
D.舒伯特",'A'},
{48,"古时“文章”一词可指什么?","A.彩色的条纹图案
B.泛指文字
C.寺庙里的经文
D.歌谱",'A'},
{49,"一般被誉为“艺术之母”的是:","A.绘画
B.戏剧
C.雕塑
D.舞蹈",'D'},
{50,"《水浒传》的第三回“鲁提辖拳打镇关西”,第二拳打在郑屠的:","A.鼻子上
B.眼睛上
C.太阳穴上
D.胸口上",'B'},
};
void shouye();
//首页
void yejiao();
//页脚
void Interface();
//界面
void into();
//登录
void theme();
//选题
void sum();
//总分
void displays();
//显示所有参考人员信息
void IntoExam();
//进入考试
void sort();
//对结果排序
void select();
//查询成绩
void ExamInformation();
//显示考试的最后信息
void exit();
void main()
//主函数
{
char ch='y';
//控制循环
int xz;
shouye();
do
{
system("cls");
//清屏
system("color 1f");
//颜色
system("date /t");
//日期
system("time/t");
//时间
printf("\n\n\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("\t\t||
☆1、登录进入考题系统
||\n");
printf("\t\t||
☆2、显示所有参考人员信息
||\n");
printf("\t\t||
☆3、对所有参考人员的成绩排序
||\n");
printf("\t\t||
☆4、查询成绩
||\n");
printf("\t\t||
☆5、显示考试信息
||\n");
printf("\t\t||
☆6、退出
||\n");
printf("\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n");
printf("请选择:\n");
yejiao();
fflush(stdin);
scanf("%d",&xz);
fflush(stdin);
switch(xz)
{
case 1 :IntoExam();break;
case 2 :displays();break;
case 3 :sort();break;
case 4 :select();break;
case 5 :ExamInformation();break;
case 6 :exit();
default :printf("输入错误!\n");
}
if(xz==6)
{
exit();
break;
}
system("cls");
printf("是否返回主菜单?(y/n)\n");
fflush(stdin);
yejiao();
scanf("%c",&ch);
getchar();
system("cls");
fflush(stdin);
}while(ch=='y');
}
void shouye()
{
printf("\n\n\t
\n\n");
system("color 1f");
printf("\t¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n");
printf("\t¤
¤\n");
printf("\t¤
欢 迎 使 用 随 机 选 题 考 试 系 统
¤\n");
printf("\t¤
¤\n");
printf("\t¤
¤\n");
printf("\t¤
¤\n");
printf("\t¤
¤\n");
printf("\t¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n\n");
printf("按ENTER键进入下一界面...---->");
getchar();
}
void IntoExam()
//进入考试
{
system("cls");
system("color 1f");
system("date/t");
system("time/t");
char ch='y',enter;
fflush(stdin);
do
{
Interface();
//界面
printf(" 按ENTER键进入登录系统...-->");
fflush(stdin);
scanf("%c",&enter);
into();
//登录
printf(" 按ENTER键进入电脑随机选题系统...-->");
fflush(stdin);
scanf("%c",&enter);
theme();
//选题
sum();
//算得分
fflush(stdin);
printf("是否继续另一人的考试?(y/n)\n\n\n");
yejiao();
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
n++;
//实际参考人数+1
}while(ch=='y');
}
void Interface()
//界面
{
system("cls");
system("date/t");
system("time/t");
system("color 1f");
printf("\n\n\n
жжжжжжжжжжжжжжжжжжжжжжжжжжж\n");
printf("
ж
* * * *
* * * *
ж\n");
printf("
ж
*
* *
*
ж\n");
printf("
ж
*
欢迎进入考题系统
*
ж\n");
printf("
ж
*
*
ж\n");
printf("
ж
*
*
ж\n");
printf("
ж
*
*
ж\n");
printf("
ж
*
*
ж\n");
printf("
ж
*
ж\n");
printf("
жжжжжжжжжжжжжжжжжжжжжжжжжжж\n\n\n");
yejiao();
}
void into()
//登录
{
system("cls");
system("color 1f");
system("date/t");
system("time/t");
int j;
do
{
printf("\n请输入你的ID号:(限一个六位数字)");
scanf("%s",Information[n].num);
Information[n].num[7]='\0';
if(strlen(Information[n].num)!=6)
//判断ID号是否为六位
{
printf("\n输入错误,请重新输入!\n");
}
else
{
for(j=0;j<n;j++)
{
if(strcmp(Information[n].num,Information[j].num)==0) //判断ID号是否有相同的
break;
}
if(j<n)
{
printf("\n该ID号已使用,请核对后重新输入.\n");
}
else
{
break;
}
}
}while(j<n);
printf("\n");
do
{
printf("请输入你的姓名:");
fflush(stdin);
scanf("%s",Information[n].name);
for(j=0;j<n;j++)
{
if(strcmp(Information[n].name,Information[j].name)==0)
//判断是否有相同的姓名
{
break;
}
}
if(j<n)
{
printf("该考生已参加过一次,不能再次参加考试.\n");
printf("请核对后重新输入.\n");
}
else
break;
}while(j<n);//控制条件(如果有相同的姓名,则重新输入)
yejiao();
}
void theme()
//选题
{
system("cls");
system("color 1f");
system("date/t ");
system("time/t");
int j,i,k,m=0,a[10];
//k是随机数,m是用于计算产生不同随机数的个数,a数组用于存储产生的题号
char answer;
//你的选择
printf("题目已选出,请依次答题(答对一题得十分,答错或不答得零分)\n");
printf("****注意:本次一共生成10道题,每题10分,满分100分***\n\n");
do
{
printf("
******随机产生第%d道题目******\n",m+1);
srand((unsigned)time(NULL));
//保证每次运行产生不同的随机序列
k=(rand()%100+2)/2;
for(j=0;j<m;j++)
{
if(k==a[j])
//若产生的随机数有相同的,则跳出
break;
}
if(j>=m)
{
a[m]=k;
//若产生的随机数不相同,则将该数存储在a数组中
for(i=0;i<N;i++)
{
if(a[m]==pro[i].Id)
//查找与该随机数相同的题号
{
printf("\n%d%s\n%s\n ",pro[i].Id,pro[i].subject,pro[i].select);//打印出题目及选项
printf("请输入你的答案\n");
fflush(stdin);
scanf("%c",&answer);
if(answer==pro[i].right)
{
Information[n].count++;
//若你的答案与正确答案相同,则你的答对题数+1
printf("
@@@@@@@@@@\n");
printf("
*** *** r i g h t *** ***
\n" );
printf("
@@@@@@@@@@\n\n");
getchar();
}
else
{
printf("
XXXXXXXXX\n");
printf("
*** *** w r o n g *** ***
\n");
printf("
XXXXXXXXX\n\n");
getchar();
}
break;
//如果找到与该随机数相同的题号,就跳出
}
else
continue;//否则就继续查找
}
m++;
//产生的不同的随机数+1
}
}while(m<10);
//控制产生10个不同的随机数
yejiao();
}
void sum()
//总分
{
system("cls");
system("color 1f");
system("date/t");
system("time/t");
Information[n].overall=Information[n].count*10;
//算得分
if(Information[n].overall>=60)
{
printf("\n\t
~~~~~~~~~~ ");
printf("\n\t★★★★★恭喜你,你通过了考试!★★★★★\n");
printf("
\t
~~~~~~~~~~ \n");
printf("\t****************************************\n\n");
printf("\t#####您的得分是%d分#####\n\n",Information[n].overall);
}
else
{
printf("\n\t
~~~~~~~~~~ ");
printf("\n\t☆☆☆☆☆革命尚未成功,同志仍需努力!☆☆☆☆☆\n");
printf("\t
~~~~~~~~~~ \n");
printf("\t****************************************\n\n");
printf("\t####您的得分是%d分####\n",Information[n].overall);
}
yejiao();
getchar();
system("cls");
}
void displays()
//显示所有参考人员的信息
{
int j;
system("cls");
system("color 1f");
system("date/t");
system("time/t");
printf("\t所有参考人员的信息如下:\n");
printf("\t\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
printf("\t\t§\t姓名\t考号\t得分\t§\n");
for(j=0;j<n;j++)
{
printf("\t\t§\t%s",Information[j].name);
printf("\t");
printf("%s ",Information[j].num);
printf("\t");
printf("%d\t§\n",Information[j].overall);
}
printf("\t\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
yejiao();
getchar();
}
void sort()
//根据成绩排序
{
int i,j;
system("cls");
system("color 1f");
system("date/t");
system("time/t");
struct Info Informations;
//用于交换的中间量
//以下是冒泡排序算法
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(Information[j+1].overall>Information[j].overall)
{
Informations=Information[j+1];
Information[j+1]=Information[j];
Information[j]=Informations;
}
}
}
printf("对成绩排序后的结果如下:\n");
//打印排序后的结果(由大到小)
printf("\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
printf("\t§\t姓名\t考号 \t得分\t§\n");
for(j=0;j<n;j++)
{
printf("\t§\t%s",Information[j].name);
printf("\t");
printf("%s ",Information[j].num);
printf("\t");
printf("%d\t§\n",Information[j].overall);
fflush(stdin);
}
printf("\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
yejiao();
getchar();
}
void select()
//查询
{
system("cls");
system("color 1f");
system("date/t");
system("time/t");
int j;
char nums[6+1];
//考号
char xingming[20];
//姓名
int xz;
char ch='y';
//控制循环是否继续
do
{
printf("请输入你的某一信息:\n");
printf("\n\n\t\t★★★★★★★★★★★★★★★★★\n");
printf("\t\t★ △1、考号 ★\n");
printf("\t\t★ △2、姓名
★\n");
printf("\t\t★★★★★★★★★★★★★★★★★\n\n");
printf("请选择:\n\n\n");
fflush(stdin);
yejiao();
scanf("%d",&xz);
getchar();
system("cls");
fflush(stdin);
switch(xz)
//选择功能后,实现功能
{
case 1 :
//根据ID号进行查找算法
{
do
{
printf("\n请输入你的ID号:(限一个六位数字)");
scanf("%s",nums);
nums[7]='\0';
if(strlen(nums)==6)
//判断ID号是否为六位数
{
for(j=0;j<n;j++)
//查找ID号相同的考生
{
if(strcmp(Information[j].num,nums)==0)
break;
}
break;
}
else
{
printf("输入错误,请重新输入.\n");
}
}while(strlen(nums)==6);
if(j<n)
//如果找到了,则输出
{
printf("查询的结果如下:\n");
printf("\t\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
printf("\t\t§\t姓名\t考号 \t得分\t§\n");
printf("\t\t§\t%s",Information[j].name);
printf("\t");
printf("%s ",Information[j].num);
printf("\t");
printf("%d\t§\n",Information[j].overall);
printf("\t\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
}
else
printf("没有找到该ID号!");
}
break;
case 2 :
//根据姓名进行查找算法
{
printf("请输入你的姓名:\n");
fflush(stdin);
scanf("%s",xingming);
fflush(stdin);
for(j=0;j<n;j++)
//查找姓名相同的考生
{
if(strcmp(xingming,Information[j].name)==0)
break;
}
if(j<n)
{
printf("\t查询的结果如下:\n");
printf("\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
printf("\t§\t姓名\t考号 \t得分\t§\n");
printf("\t§\t%s",Information[j].name);
printf("\t");
printf("%s ",Information[j].num);
printf("\t");
printf("%d\t§\n",Information[j].overall);
printf("\t§☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆§\n");
}
else
printf("没有找到该姓名!");
}
break;
default :printf("请在1与2之间选择!\n");
}
printf("\n是否继续查询?(y/n)\n");
fflush(stdin);
yejiao();
scanf("%c",&ch);
fflush(stdin);
system("cls");
}while(ch=='y');
}
void ExamInformation()
//显示考试信息
{
system("cls");
system("color 1f");
system("date/t");
system("time/t");
int i;
float excellence=0;
// 用于统计优秀人数
float pass=0;
//用于统计及格人数
float all=0;
//用于计算本次考试的总分
float average;
//用于计算本次考试的平均成绩
float exces,passes;
for(i=0;i<n;i++)
{
if(Information[i].overall>=90)
excellence++;
//统计优秀人数
else
continue;
}
for(i=0;i<n;i++)
{
if(Information[i].overall>=60)
pass++;
// 统计及格人数
else
continue;
}
for(i=0;i<n;i++)
{
all+=Information[i].overall;
//用累加的方法求本次考试的总分
}
exces=excellence/n;
//求优秀率
passes=pass/n;
//求及格率
average=all/n;
//求本次考试的平均分
printf("\t*********************************************\n");
printf("\n\t\t本次考试的详细信息如下:\n\n");
printf("\t\t参考人数(人):%d\n",n);
printf("\t\t优秀人数(人):%.0f,优秀率:%.2f /100 \n",excellence,exces*100);
printf("\t\t及格人数(人):%.0f,及格率:%.2f /100 \n",pass,passes*100);
printf("\t\t本次考试平均分是%.2f分。\n",average);
printf("\t*********************************************\n\n");
yejiao();
getchar();
}
void yejiao()
//相当于页脚
{
printf("\n\n\t\t
¤
¤\n\n");
printf("\t\t**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**Ψ**\n\n");
}
void exit()
//退出
{
system("cls");
system("date/t");
system("time/t");
printf("\n\n\t
\n\n");
printf("
\t
欢迎再次使用!\n");
printf("\n
\t Bye-Bye\n\n\n");
yejiao();
}
这个程序也是选题,不过他有问题,我这个只要求选出题号,排序写入文件