计算与软件工程 作业二
作业要求
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