天天看點

編寫一個能自動生成國小四則運算題目的程式。

主要功能:運算國小四則運算,可以選擇加減乘除以及混合運算。

設計思想:首先思考運算數字範圍,考慮國小生的運算能力,然後分類運算方法,分為加減乘除混合運算,

然後可以選擇是繼續做題還是退出程式,可以總結做對或者做錯的題數,友善計算正确以及錯誤的題數。

源代碼:

#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 takeTest();

void falsePrint(int);

void correctPrint(int);

//main函數

void main()

{

    while(1)

    {

        takeTest();

    }

}

//擷取随機運算符

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 takeTest()

    int giveRes;

    int num1;

    int num2;

    char signal;

    int printFlag;

    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=='/')

        if(num2==0)

    printf("%d%c%d=",num1,signal,num2);

    scanf("%d",&giveRes);

    fflush(stdin);

    if(getResult(num1,num2,signal)==giveRes)

        printFlag=random(1,5);

        correctPrint(printFlag);

    else

        printFlag=random(1,4);

        falsePrint(printFlag);

        printf("正确答案:%d\n",getResult(num1,num2,signal));

//回答正确列印資訊

void correctPrint(int num)

    switch(num)

    case 1:

        printf("You're right!\n");break;

    case 2:

        printf("It's OK!\n");break;

    case 3:

        printf("Correct!\n");break;

    case 4:

        printf("Perfect!\n");break;

    case 5:

        printf("Good!\n");break;

        printf("Powerful!\n");break;

//回答錯誤列印資訊

void falsePrint(int num)

        printf("You're lost!");break;

        printf("Failure!");break;

        printf("Come on!");break;

        printf("It's wrong!");break;

        printf("Incorrect!");break;

編寫一個能自動生成國小四則運算題目的程式。

感謝《百度貼吧》大神的幫助