一,小学生考试系统
/*Copyright(c)2016,烟台大学计算机学院
all rights reserved.
作者:曹欣宇
完成日期:2016年12月31日
题目描述
出10个100以内的加减乘除随机运算
输入
答案
输出
答案评判以及正确答案,最后输出正确率以及得分。
样例输入
无
样例输出
无
课程设计说明:增加减乘除运算,开始输入年级,
一二年级只有加法,三四年级增加乘法,五六年级增加除法。*/
#include
#include
#include
void jia();
void jian_h();
void cheng_h();
void chu_h();
int num1,num2,add,jian,cheng,chu,way,jie,count=0;
//float rate;
int main()
{
int i,grade;
printf("/*****************************/\n");
srand(time(0));
printf("请输入年级(数字):\n");
scanf("%d",&grade);
for(i=0; i<10; i++)
{
num1=rand()%100+1;
num2=rand()%100+1;
if(grade==1||grade==2)
way=rand()%2+1;
else if(grade==3||grade==4)
way=rand()%3+1;
else if(grade==5||grade==6)
way=rand()%4+1;
printf("这是第%d道题\n",i+1);
if(way==1)
jia();
else if(way==2)
jian_h();
else if(way==3)
cheng_h();
else if(way==4)
chu_h();
}
//rate=(float)count/10;
printf("你的正确率是%%d,得分%d\n",count*10,count*10);
return 0;
}
/***********************************************************
功能描述;进行加法计算。
参数;无。
返回值;无。
其他说明;随机数若相加大于零则重新产生。
***********************************************************/
void jia()
{
while(num1+num2>100)
{
num1=rand()%99+1;
num2=rand()%99+1;
if(num1+num2<=100)
break;
}
jie=num1+num2;
printf("%d+%d=?\n",num1,num2);
printf("你的答案是?");
scanf("%d",&add);
if(add==jie)
{
printf("这么简单,你肯定会做对的!\n");
count++;
}
else
{
printf("没听课吗?要努力喽!\n");
printf("正确答案是%d\n",jie);
printf("/*****************************/\n");
}
}
/***********************************************************
功能描述;进行减法计算。
参数;无。
返回值;无。
其他说明;若第一个随机数小于第二个随机数则重新产生。
***********************************************************/
void jian_h()
{
while(num1num2)
break;
}
jie=num1-num2;
printf("%d-%d=?\n",num1,num2);
printf("你的答案是?");
scanf("%d",&jian);
if(jian==jie)
{
printf("不错不错!\n");
count++;
}
else
{
printf("继续努力!\n");
printf("正确答案是%d\n",jie);
printf("/*****************************/\n");
}
}
/***********************************************************
功能描述;进行乘法计算。
参数;无。
返回值;无。
其他说明;随机数若相乘大于零则重新产生。
***********************************************************/
void cheng_h()
{
while(num1*num2>100)
{
num1=rand()%99+1;
num2=rand()%99+1;
if(num1*num2<=100)
break;
}
jie=num1*num2;
printf("%d*%d=?\n",num1,num2);
printf("你的答案是?");
scanf("%d",&cheng);
if(cheng==jie)
{
printf("厉害啊,乘法难不倒你!\n");
count++;
}
else
{
printf("想想哪里错了。\n");
printf("正确答案是%d\n",jie);
printf("/*****************************/\n");
}
}
/***********************************************************
功能描述;进行除法计算。
参数;无。
返回值;无。
其他说明;若第一个随机数大于第二个则重新产生,且保证结果为整数。
***********************************************************/
void chu_h()
{
while(num1100)
{
num1=rand()%99+1;
num2=rand()%99+1;
if(num1>num2)
break;
}
num1=(num1/num2)*num2;
jie=num1/num2;
printf("%d/%d=?\n",num1,num2);
printf("你的答案是?");
scanf("%d",&chu);
if(chu==jie)
{
printf("真棒!\n");
count++;
}
else
{
printf("你离成功不远了!\n");
printf("正确答案是%d\n",jie);
printf("/*****************************/\n");
}
}
二,大奖赛计分。
/*Copyright(c)2016,烟台大学计算机学院
all rights reserved.
作者:曹欣宇
完成日期:2016年12月31日
题目描述
详见报告
输入
评委人数以及各评委打分
输出
选手最后得分
样例输入
无
样例输出
无
课程设计说明:按N继续,按其他键退出*/
#include
void calScore(int n);
int main()
{
int n;
char whether;
while(1)
{
printf("请输入评委的人数:");
scanf("%d",&n);
calScore(n);
printf("*******************************SUCCESS**********************************\n");
printf("按N退出,其他键继续!\n");
getchar();
scanf("%c",&whether);
if(whether=='N')
break;
}
return 0;
}
/***********************************************************
功能描述;进行程序大部分功能,即:
输入成绩,判断输入是否合法,得出最后得分
输入参数;n-评委人数。
返回值;无。
其他说明;若输入不合法则重新输入。
***********************************************************/
void calScore(int n)
{
float grade,max=-1,min=11;
float average,sum=0;
int j=0,num;
num=n;
printf("请输入选手的成绩(1-10):\n");
for(j=1; j<=num; j++)
{
printf("第%d位评委的给分为:",j);
scanf("%f",&grade);
while(1)
{
if(grade>=1&&grade<=10)
break;
if(grade<1||grade>10)
{
printf("第%d位评委的给分为:",j);
scanf("%f",&grade);
}
}
sum=sum+grade;
if(grade>max)
max=grade;
if(grade
三,电子词典。
/*Copyright(c)2016,烟台大学计算机学院
all rights reserved.
作者:曹欣宇
完成日期:2016年12月31日
题目描述
详见报告
输入
一个英文单词
输出
词性以及中文意思
样例输入
具体见运行图
样例输出
具体见运行图
课程设计说明:拓展内容,若三次连续没有正确输入则退出*/
#include
#include
#include
#define N 8001
int binary_chop();
struct dictionary
{
char e[20];
char c[20];
};
int m=0;
int j,max=N-1,min=0,mid;
char s[20];
int count=0;
struct dictionary dic[N];
int main()
{
printf("/*****************************************/\n");
printf("注意,若三次连续没有正确输入,则系统会自动退出!\n");
printf("/*****************************************/\n");
FILE *fp;
if((fp=fopen("dictionary.txt","r"))==NULL)
{
printf("Target file cannot open!");
exit(0);
}
for(j=1; j<=N; j++)
{
fscanf(fp,"%s %s",dic[j].e,dic[j].c);
}
fclose(fp);
while(1)
{
printf("请输入要查找的单词(0000结束):");
gets(s);
if(strcmp(s,"0000")==0)
break;
else
{
binary_chop();
if(m==1)
{
printf("%s的中文意思是: %s\n/********************************/\n",s,dic[mid].c);
count=0;
}
else
{
printf("查无此词!\n/********************************/\n");
count++;
}
min=0,max=N-1,m=0;
}
if(count>=3)
{
printf("你逗我玩呢,不想用就赶紧gun!\n");
break;
}
}
if(count==0)
printf("欢迎再次使用!\n");
return 0;
}
/***********************************************************
功能描述;进行二分查找。
参数;无。
返回值;m。
其他说明;若找到则返回m值为1,反之则为0。
***********************************************************/
int binary_chop()
{
while(min<=max)
{
mid=(min+max)/2;
if(strcmp(dic[mid].e,s)==0)
{
m=1;
break;
}
if(strcmp(dic[mid].e,s)>0)
max=mid-1;
else
min=min+1;
}
return m;
}
总结详见报告。