计算与软件工程 作业二

作业要求

https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402

作业一

四则运算的程序代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include <ctype.h> 
#include<windows.h>

int menu(int num1);         //显示菜单界面
void Exercise(char choose);   //随机生成各难度梯度的四则运算
//主函数
int main()
{
    char choose;
    int num1=1;
    while(1)
    {
        num1=menu(num1);
        flushall();            //清除缓冲区的换行符
        scanf("%c",&choose);
        if((int)choose<48||(int)choose>54)  //判断用户的输入是否符合要求(ASCII码)
        {
            printf("\n\t您的输入有误,请重新输入!\n");
            Sleep(1000);       //计时函数,产生1秒的延时
            system("cls");
            num1=1;
            continue;
        }
        Exercise(choose);
    }
    return 0;
}

int menu(int num1)
{
    char ch;
    if(num1==1)
        num1++;
    else
    {
        while(1)
        {
            printf("是否清除练习记录(Y/N):");
            flushall();  //清除缓存
            scanf("%c",&ch);
            if((int)ch==89||(int)ch==121)
            {
                system("cls");         //清屏操作
                break;
            }
            else if((int)ch==78||(int)ch==110) break;
            else
                printf("您的输入有误!\n");
        }
    }
    printf("**************************************************\n");
    printf("\t    小学生四则运算练习软件\n");
    printf("\t 1、加法练习\t2、减法练习\n");
    printf("\t 3、乘法练习\t4、除法练习\n");
    printf("\t 5、混合练习\t0、退出系统\n");
    printf("请输入你的选择(0--5):\n");
    printf("\n*************************************************\n");
    return num1;
}

void Exercise(char choose)
{
    int i,j,num,k;
    int ra=0,ua=0; //初始化正确题目的数量和错误题目的数量
    int p[20],m[4]={10,100,200,500}; //产生的随机数保存在数组p[20]中
    float q[20],result;
    srand(time(NULL)); //产生随机数
    printf("请给出出题数量:");
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        if(choose==49||choose==50)
        {
            if(i==0)
            {
                printf("请选择难度系数:1、小学一年级      2、小学二年级\n");
                printf("                3、小学三,四年级  4、小学五,六年级\n\n");
                printf("                    难度等级:");
                scanf("%d",&j);
            }
            for(k=0;k<j+1;k++)
                p[k]=rand()%m[j-1];
            k=0;
            p[j+1]=p[0];
            printf("%d",p[k]);
            k++;
        }
        switch(choose)   //根据用户的输入选择不同的操作
        {
        case '1':{
                    while(k<j+1)
                    {
                        printf(" + %d",p[k]);
                        p[j+1]+=p[k];
                        k++;
                    }
                    break;
                }
        case '2':{
                    while(k<j+1)
                    {
                        printf(" - %d",p[k]);
                        p[j+1]-=p[k];
                        k++;
                    }
                    break;
               }
        case '3':{
                    if(i==0)
                    {
                        printf("请选择难度系数:1、小学二年级  2、小学三年级\n");
                        printf("                3、小学四年级  4、小学五,六年级\n\n");
                        printf("                    难度等级:");
                        scanf("%d",&j);
                    }
                    for(k=0;k<j+1;k++)
                        p[k]=rand()%m[j-1];
                    k=0;
                    p[j+1]=p[0];
                    printf("%d",p[k]);
                    k++;
                    while(k<j+1)
                    {
                        printf(" * %d",p[k]);
                        p[j+1]*=p[k];
                        k++;
                    }
                    break;
                }
        case '4':{
                    int m[4]={50,100,500,1000};
                    if(i==0)
                    {
                        printf("请选择难度系数:1、小学三年级  2、小学四年级\n");
                        printf("                3、小学五年级  4、小学六年级\n\n");
                        printf("                    难度等级:");
                        scanf("%d",&j);
                        printf("\t若结果为小数,请将结果保留两位小数\n");
                    }
                    for(k=0;k<j+1;k++)
                        p[k]=rand()%m[j-1];
                    k=0;
                    printf("%d",p[k]);
                    q[0]=(float)p[0];
                    k++;
                    while(k<j+1)
                    { 
                        q[k]=(float)p[k];
                        printf(" / %d",p[k]);
                        q[0]/=q[k];
                        k++;
                    }
                    break;
               }
        case '5':{
                    if(i==0)
                    {
                        printf("请选择难度等级:1. *   2. **\n");
                        printf("                3. *** 4. ****\n");
                        scanf("%d",&j);
                    }
                    for(k=0;k<4;k++)
                    {
                        p[k]=rand()%m[j-1];
                        q[k+1]=(float)p[k];
                    }
                    if(i%4==0)
                    {
                        printf("%d + %d - %d * %d",p[0],p[1],p[2],p[3]);
                        q[0]=q[1]+q[2]-q[3]*q[4];
                    }
                    else if(i%4==1)
                    {
                        while(p[1]==0)
                            p[1]=rand()%m[j-1];
                        q[2]=(float)p[1];
                        printf("%d / %d + %d * %d",p[0],p[1],p[2],p[3]);
                        q[0]=q[1]/q[2]+q[3]*q[4];
                    }
                    else if(i%4==2)
                    {
                        printf("%d + %d * (%d - %d)",p[0],p[1],p[2],p[3]);
                        q[0]=q[1]+q[2]*(q[3]-q[4]);
                    }
                    else
                    {
                        printf("%d * (%d + (%d - %d))",p[0],p[1],p[2],p[3]);
                        q[0]=q[1]*(q[2]+(q[3]-q[4]));
                    }
               }
        case '0':{ 
                    printf("\t   感谢您的使用^_^,再见\n");
                    exit(0);
                    break;
               }
        }
        printf("=");
        if(choose==49||choose==50||choose==51)
        {
            scanf("%f",&result);
            if(result==p[j+1])
            {
                printf("you are right!\n");
                ra+=1;
            }
            else
            {
                printf("wrong!Try again\n");
                ua+=1;
            }
        }
        if(choose==52||choose==53)
        {
            scanf("%f",&result);
            if(fabs(result-q[0])<0.01)   //若运算结果为小数,则保留两位小数即可
            {
                printf("you are right!\n");
                ra+=1;
            }
            else
            {
                printf("wrong!Try again\n");
                ua+=1;
            }    
        }

    }
    printf("\n        答对 %d 道题,答错 %d 道题,得分为 %d \n\n",ra,ua,ra*100/num);

}

运行结果截图



小结

作业要求分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度,代码编写的时候出现了困难,在完成的同时也借鉴参考很多网上的代码,进行修改添加,首先可以选择选择运算方式,选择随机出的题目数,然后根据不同年级进行难度上的选择,设置变量ra进行分数的统计,不足的地方在于时间的累积和运算不能重复没有完成,以及四则混合运算的运行出现闪退。

作业二

码云代码托管平台gitee小结

第一次接触这类软件,首先阅读了廖雪峰老师关于git的安装与使用说明,然后按照步骤进行git的安装,开始由于浏览器的选择不正确一直下载失败,后来下载成功后进行软件的安装与初始配置,以及如何让获得密钥,这里也另外上网查阅了教程,有关git bush常用的命令等等。在创建克隆好仓库以后,进行代码文件转移的时候,也出现了问题,因为没有建立git仓库,代码格式保存的错误,重复操作后把源代码保存到git仓库中。

码云的链接

https://gitee.com/Rachelee/firstwarehouse/blob/master/computation1.c

posted @ 2020-03-01 11:40  LL-L  阅读(160)  评论(4编辑  收藏  举报