大一上学期课程设计

一,小学生考试系统

/*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");
    }
}
大一上学期课程设计_第1张图片

大一上学期课程设计_第2张图片

大一上学期课程设计_第3张图片

二,大奖赛计分。

/*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

大一上学期课程设计_第4张图片

大一上学期课程设计_第5张图片

三,电子词典。

/*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;
}

大一上学期课程设计_第6张图片

大一上学期课程设计_第7张图片

大一上学期课程设计_第8张图片

总结详见报告。

你可能感兴趣的:(课程设计)