大一上学期课程设计

来源:互联网 发布:淘宝网不能搜索 编辑:程序博客网 时间:2024/04/28 20:22

一,小学生考试系统

/*Copyright(c)2016,烟台大学计算机学院all rights reserved.作者:曹欣宇完成日期:2016年12月31日题目描述 出10个100以内的加减乘除随机运算输入  答案输出  答案评判以及正确答案,最后输出正确率以及得分。样例输入  无样例输出  无课程设计说明:增加减乘除运算,开始输入年级,一二年级只有加法,三四年级增加乘法,五六年级增加除法。*/#include <stdio.h>#include <stdlib.h>#include <time.h>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(num1<num2)    {        num1=rand()%99+1;        num2=rand()%99+1;        if(num1>num2)            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(num1<num2||num1>100)    {        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 <stdio.h>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<min)            min=grade;    }    average=(sum-max-min)/(num-2);    printf("去掉一个最低分:%.2f,去掉一个最高分;%.2f\n",min,max);    printf("这位选手最后的得分是:%.3f!\n",average);}

三,电子词典。

/*Copyright(c)2016,烟台大学计算机学院all rights reserved.作者:曹欣宇完成日期:2016年12月31日题目描述 详见报告输入  一个英文单词输出  词性以及中文意思样例输入  具体见运行图样例输出  具体见运行图课程设计说明:拓展内容,若三次连续没有正确输入则退出*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 8001int 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;}

总结详见报告。

0 0
原创粉丝点击