文章出處

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int n;//記錄輸入的題目個數
int a,b,c,da;//a,b分別代表第一,第二操作數,c代表得數,da代表輸入的答案
//進行加法運算
void jia();
void jian();
void chen();
void chu();
void main()
{

    int choice;
    srand((unsigned)time(NULL));//隨機產生0-99之間的隨機數
    while(1)
    {
        switch(choice)
        {
        case 1:
            jia();                            
            break;
        case 2:
            jian();                                 
            break;
        case 3:
            chen();                             
            break;
        case 4:
            chu();
            break;
        case 5:    
            printf("謝謝使用");
            exit(0);

        }
        choice=selectmenu();
    }
}
void jia()
{
    int i;
    printf("\t\t\n歡迎使用,以下是加法運算\n\n\n");
    printf("請輸入題目數:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        a=rand()%100;
        b=rand()%100;
        c=a+b;
        printf("%d+%d=?\n",a,b);
        printf("請輸入你的答案:");
        scanf("%d",&da);
         if(da==c)                             //判斷答案是否正確
            printf("\n恭喜你,答對了!\n");
        else
        {
            printf("\n抱歉,你答錯了!你還有一次機會\n");
            printf("%d+%d=?\n",a,b);
            printf("請輸入你的答案:");
            scanf("%d",&da);
            if(da==c)
                printf("\n恭喜你,答對了!\n");
            else  printf("\n抱歉,你又答錯了\n");
        }
    }
}
//進行減法運算
void jian()
{
    int i,temp;//temp是中間變量
    printf("\t\t\n歡迎使用,以下是減法運算\n\n\n");
    printf("請輸入題目數:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        a=rand()%100;
        b=rand()%100;
        if(a<b)//保證得出的數不是負數
        {
            temp=a;
            a=b;
            b=temp;
        }
        c=a-b;
        printf("%d-%d=?\n",a,b);
        printf("請輸入你的答案:");
        scanf("%d",&da);
        if(da==c)
            printf("\n恭喜你,答對了!\n");
        else
        {
            printf("\n抱歉,你答錯了,你還有一次機會\n");
            printf("%d-%d=?\n",a,b);
            printf("請輸入你的答案:");
            scanf("%d",&da);
            if(da==c)
                printf("\n恭喜你,答對了!\n");
            else  printf("\n抱歉,你又答錯了\n");

        }
    }
}
//進行乘法運算
void chen()
{
    int i;
    printf("\t\t\n歡迎使用,以下是乘法題\n\n");
    printf("\n請輸入題目數:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        a=rand()%100;
        b=rand()%100;
        c=a*b;
        printf("%d*%d=?\n",a,b);
        printf("請輸入答案:");
        scanf("%d",&da);
        if(da==c)
            printf("\n恭喜你,答對了!\n");
        else
        {
            printf("\n抱歉,你答錯了,你還有一次機會!\n");
            printf("%d*%d=?\n",a,b);
            printf("請輸入答案:");
            scanf("%d",&da);
            if(da==c)
                printf("\n恭喜你,答對了!\n");
            else  printf("\n抱歉,又答錯了!\n");
        }
    }
}
//進行除法運算
void chu()
{
    int i,j,k;//j,k用于記錄輸入的數
    char dn;//用以保存除法運算符
    float an;//用以保存除法運算得出的答案
    printf("\t\t\n歡迎使用,以下是除法題\n\n");
    printf("請輸入題數:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        a=rand()%100;
        b=rand()%99+1;//使得隨機出現的數不會有0,保證了除數不會出現0情況
        c=a/b;
        if(a%b==0)  //判斷數能否除盡,若a對b求余為0,則說明除得盡,以整數形式輸入,否則則為除不盡,提示以分數輸入
        {
               printf("%d/%d=?\n",a,b);
               printf("\n請輸入你的答案:");
               scanf("%f",&an);
            if(an==c) 
                printf("恭喜你,答對了!\n");
               else
            {
                   printf("抱歉,你答錯了,你還有一次機會!\n");
                   printf("%d/%d=?\n",a,b);
                   printf("\n請輸入你的答案:");
                   scanf("%f",&an);
                   if(an==c)  printf("恭喜你,答對了!\n");
                   else  printf("抱歉,你又答錯了!\n");
            }
        }
        else
        {
              dn='/';//dn保存除法運算符
            printf("%d/%d=?\n",a,b);
            printf("\n請輸入你的答案(請以分數形式輸入):");
            scanf("%d%c%d",&j,&dn,&k);
            if(j/k==a/b)  
                printf("恭喜你,答對了!\n");
            else
                printf("抱歉,你答錯了!\n");
        }
    }
}
int selectmenu()
{
    int choice;
    printf("\t1:加法運算\n");
    printf("\t2:減法運算\n");
    printf("\t3:乘法運算\n");
    printf("\t4:除法運算\n");
    printf("\t5:謝謝使用\n");
    printf("請選擇(1-5):");
    while((!scanf("%d",&choice)||(choice<0)||(choice>6)))
    {
        printf("\t1:加法運算\n");
        printf("\t2:減法運算\n");
        printf("\t3:乘法運算\n");
        printf("\t4:除法運算\n");
        printf("\t5:謝謝使用\n");
        printf("請選擇(1-5):");
    }
    return choice;
}

 

代碼:

 

這是對第一次作業的改進,設置了一個菜單選擇供用戶選擇。在做這次作業的過程,發現理解題目要求很重要,代碼的重用性的好壞也很重要,寫出來的代碼首先要符合邏輯,其次是要讓別人也可以看懂你的代碼;在理解了題目要求后要明白大概要實現什么功能,怎么實現,需要什么等等,明白需求后在著手打代碼并逐漸完善,雖然這不是第一次使用C,但仍然出現不少問題,以下就是我對編程過程的總結:

沒有解決的一個問題:

1、

當出現結果除不盡的情況時,用戶輸入的數沒有以分數形式輸入時,不知如何設置提示輸入錯誤,嘗試用while語句來判斷時,如果輸入整型,無論結果是否對都會提示對了

總結:

1、在對加減乘除進行運算時搞清楚存放操作數的數組的位置以及數組與變量的類型,否則會出錯

1、 使用srand()函數來產生隨機數時,必須要含有頭文件#include<time.h>

2、  做減法運算時要考慮結果為負數的情況,因此要對第一個操作數和第二個操作數進行判斷,如果是第一個操作數小,則要根據中間變量將他們進行位置調換,再進行減法運算

3、  做除運算時要考慮除數不能為0的情況或者如果結果不能除盡的情況;因此將其分為兩種情況,首先是將除法運算中除數產生的隨機數取值在1到100之間,然后將被除數對除數進行求余運算,若是求余結果為0,則是除得盡,則用戶輸入結果為整型,否則就是除不盡,則提示用戶要以分數的形式輸入

4、將題目的個數設置為用戶任意輸入

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()