四则运算
| 班级博客 | 点击打开班级地址 | 
|---|---|
| 作业要求 | 点击查看作业要求 | 
| 这个作业的目标 | 写一个能自动生成小学四则运算题目的程序 | 
| 学号 | 3190704121 | 
一、代码如下:
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6
#define CALC_KIND 4
 
char getSignal();``
int getResult(int,int,char);
void  integer();
void  fraction();
 
//main函数
void main()
{
   
    int i,n,m;
  	 printf("**************\n");
	 printf(" 【出题类型】 \n");
	 printf("1.整数四则运算\n");
	 printf("2.分数四则运算\n");
	 printf("**************\n");
	 printf("请输入出题类型:");
	 scanf("%d",&i);  
     printf("请输入出题数目:");
    scanf("%d",&n);
    for(m=1;m<=n;m++)
    {
        if(i==1)
            integer();
        else
            fraction();
	
    }
	 
}
 
//获取随机运算符
char getSignal()
{
    char signal[CALC_KIND]={'+','-','*','/'};
    srand((unsigned)time(NULL));
    return signal[rand()%4];
}
 
//获取随机数
int random(double start, double end)
{
    return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
}
 
//运算
int getResult(int num1,int num2,char signal)
{
    int res;
    switch(signal)
    {
    case '+':
        res=num1+num2;break;
    case '-':
        res=num1-num2;break;
    case '*':
        res=num1*num2;break;
    case '/':
        res=num1/num2;break;
    default:
        res=0;
        printf("运算符不符合规则\n");
    }
    return res;
}
 
//整数
void integer()
{
    int giveRes;
    int num1;
    int num2;
    static int count=0;
    char signal;
   
    srand((unsigned)time(NULL));
    signal=getSignal();
    num1=random(0,100);
    num2=random(1,100);
 
    if(signal=='-')
    {
        if(num1<num2)
        {
            int temp;
            temp=num1;
            num1=num2;
            num2=temp;
        }
    }
 
    if(signal=='/')
    {
        printf("\n(若该题计算结果含余数,请将结果只保留整数部分)\n");
    }
 
    printf("%d%c%d=",num1,signal,num2);
    scanf("%d",&giveRes);
    fflush(stdin);
 
    if(getResult(num1,num2,signal)==giveRes)
		{
          printf("\nYou're Correct!\n\n");
		  count++;
		}
	else
		{
			printf("\nSorry  you're wrong!\n");
			printf("The right answer is:%d\n\n",getResult(num1,num2,signal));
		}
	printf("你一共答对%d道题\n",count);
}
//分数
void fraction()
{
    int num1,num2,num3,num4;
	char signal;
    num1=rand()%100+1;
    num2=rand()%100+1;
    num3=rand()%100+1;
    num4=rand()%100+1;
    char op;
    while(num1<=num2||num3<=num4)
    {
        num1=rand()%100+1;
        num2=rand()%100+1;
        num3=rand()%100+1;
        num4=rand()%100+1;
    }
      signal=getSignal();
    if(signal=='-')
        while((num2*num3-num1*num4)<0)
        {
            num1=rand()%100+1;
            num2=rand()%100+1;
            num3=rand()%100+1;
            num4=rand()%100+1;
        }
   
	printf("%d/%d%c%d/%d=\n",num2,num1,signal,num4,num3);
}
二、运行截图:


三、心得体会:
这是我在博客上写的第一个代码,还有很多不完善的地方,比如
除法运算的问题,在今后的学习中我还会在博客园中发表更多的代码,
希望大家浏览改正,共同提高!
四、psp:
| 任务内容 | 计划 | 完成需要的时间(min) | 实际完成需要的时间(min) | 
|---|---|---|---|
| Planning | 计划 | 10 | 5 | 
| Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 12 | 
| Development | 开发 | 100 | 80 | 
| Analysis | 需求分析(包括学习新技术) | 12 | 7 | 
| Design Spec | 生成设计文档 | 5 | 9 | 
| Design Review | 设计复审 | 5 | 8 | 
| Coding Standard | 代码规范 | 3 | 7 | 
| Design | 具体设计 | 10 | 20 | 
| Coding | 具体编码 | 36 | 30 | 
| Code Review | 代码复审 | 5 | 9 | 
| Test | 测试(自我测试,修改代码,提交修改) | 10 | 20 | 
| Reporting | 报告 | 9 | 9 | 
| Test Report | 测试报告 | 3 | 8 | 
| Size Measurement | 计算工作量 | 2 | 5 | 
| Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 3 | 5 | 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号