include
double average(int i,flot max,flot min)
void main ()
flote a[10][10],double b[10]
int i,j
flote max,min
for(i=0i<闭租10i++)
for(j=0j<10j++)
scanf("f%",a)//评分祥态哪输入
for(i=0i<10i++)
for(j=0j<10j++)
{
max=(a[i][j]>谨码a[i][j+1])
min=(a[i][j]<a[i][j+1])
}
for(i=0i<=10i++)
{
b[i]=average(i)
printf("%.2f/n",b[i])
}
double average(int i,flote max,flote min)
{
double m=0
int j
for(j=0j<=10j++)
m+=a[i][j]
m=(m-max-min)/8
return m
}
这个唱 多来米法腊散少#include <桐前stdio.h>
#include <stdlib.h>轮轮氏
#include <windows.h>
main()
{
Beep(523,500)
Beep(587,500)
Beep(659,500)
Beep(698,500)
Beep(784,500)
Beep(880,500)
Beep(980,500)
Beep(1060,500)
Sleep(500)
Beep(523,500)
Beep(587,500)
Beep(659,500)
Beep(698,500)
Beep(784,500)
}
补充:郑腊敬看来有人不明白,得先建题库文件啊,然后才能输入文件路径捆绑题库,比如我上面的演示中,c:\qs01.txt,你首先要先在c盘创建一个txt文件,然后在里面打字“题目 空格 答案 回车”这样输入。有了库文件程序才能读啊
比如:(你如果自己能修喊慎改我常量里的字符长度,不光数学,语文,英语题库都可以)
在txt文本里保存题库,比如幼儿题目放一个txt,小学题目放一个txt。
程序分两大部分:
1、根据【题库数常量】,提示输入每个题库的类别名称、每个题库文件的路径,生成菜单。
2、用户通过菜单选择,题库类别,输入随机数上限。
3、根据用户输入数字随机抽取一组问题,提问回答并统计正确率。
注意:这里我测试,【题库数常量】qssSize我值设置了2,如想增加题库类别,只要修改该数值即可!。(其他常量我也备注了,有需要自己改)
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <time.h>
#define qsLen 100//问题最大长度
#define ansLen 50//答案最大长度
#define qssSize 2//题库种类数量 我测试只定义了 小学和幼儿 两个问题库,需要自己添加
#define qssNameSize 10//题库名称长度
#define qssPathSize 100//题库路径长度
typedef struct qs
{
int id//问题编号
int cont//题库问题数量,只有头结点存储该值
char qs[qsLen]//问题
char ans[ansLen]//答案
struct qs *next
}QS
void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize])//根据输入,新建问题分类信息
int showMenu(char qssName[][qssNameSize])//显示题库菜单,返回用户选择的题库类别下标
QS *readFile(char *filePath)//读取问题库文件,生成链表,返回头节点
QS *randQs(QS *qsHead,int qsNum)//从题库随机抽取题目,参数:题库头节点、题库总题目数。返回:抽取的题目节点
int main()
{
int lbNum,qsNum,cnt,i,correct,error
局敏 char question[qsLen],answer[ansLen],input[ansLen]
char qssName[qssSize][qssNameSize],qssPath[qssSize][qssPathSize]//qssName: 题库分类名称;qssPath:题库文件路径
QS *qsHead=NULL,*qsSelect
srand(time(NULL))
newQss(qssName,qssPath)
lbNum=showMenu(qssName)
printf("\n--开始加载题库--\n")
qsHead=readFile(qssPath[lbNum])
qsNum=qsHead->cont
printf("题库共%d条题目,请输入需要提取的题目数量:",qsNum)
while(1)
{
scanf("%d",&cnt)
if(cnt>0 && cnt<=qsNum)
break
}
printf("\n--开始从题库中随机抽取%d条问题--\n",cnt)
correct=0
error=0
for(i=0i<cnti++)
{
qsSelect=randQs(qsHead,qsNum)
if(qsSelect!=NULL)
{
strcpy(question,qsSelect->qs)
strcpy(answer,qsSelect->ans)
printf("第%d题、%s ? 答案:",i+1,question)
scanf("%s",input)
if(!strcmp(answer,input))
{
printf("回答正确!\n\n")
correct++
}
else
{
printf("回答错误!正确答案是%s\n\n",answer)
error++
}
}
}
printf("共%d条问题,正确回答%d条,正确率%d%%\n",cnt,correct,correct*100/cnt)
return 0
}
QS *randQs(QS *qsHead,int qsNum)
{
int n
n=rand()%qsNum+1
while(qsHead->next!=NULL)
{
if(qsHead->next->id==n)
return qsHead->next
qsHead=qsHead->next
}
return NULL
}
void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize])
{
int i
printf("--开始录入题库分类信息--\n")
for(i=0i<qssSizei++)
{
printf("\n请输入题库1的名称及题库文件路径\n名称(不超%d个字符):",qssNameSize)
scanf("%s",qssName[i])
printf("路径(不超%d个字符):",qssPathSize)
scanf("%s",qssPath[i])
}
}
int showMenu(char qssName[][qssNameSize])
{
int i
printf("\n当前题库分类为:\n")
for(i=0i<qssSizei++)
printf("%d、 %s\n",i+1,qssName[i])
printf("请选择你要提取的题库类别(输入数字):")
scanf("%d",&i)
return i-1
}
QS *readFile(char *filePath)
{
FILE *fp
char qsSave[qsLen],ansSave[ansLen]
QS *qsHead=NULL,*qsTail=NULL
if((fp=fopen(filePath,"rt+"))==NULL)
{
printf("Cannot open file strike any key exit!")
return NULL
}
qsHead=(QS *)malloc(sizeof(QS))
qsHead->next=NULL
qsHead->cont=0
while(fscanf(fp,"%s %s",qsSave,ansSave)!=-1)
{
qsHead->cont++
QS *qsNew=(QS *)malloc(sizeof(QS))
qsNew->next=NULL
qsNew->id=qsHead->cont
strcpy(qsNew->qs,qsSave)
strcpy(qsNew->ans,ansSave)
if(qsHead->next==NULL)
qsHead->next=qsNew
else
qsTail->next=qsNew
qsTail=qsNew
}
return qsHead
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)