程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 四則運算出題器3,四則運算出題器

四則運算出題器3,四則運算出題器

編輯:C++入門知識

四則運算出題器3,四則運算出題器


一、實驗題目

    這次我的程序,是對四則運算2的進一步擴展

    我選的是第一個方向:程序能夠接受用戶輸入的答案,並能判定對錯,最後還可以給出總共對/錯的數量。

二、實驗擴展思想

    1、因為我給每個題目都編了序號,所以再輸入答案的時候只需按著題目的順序輸入就可以了。

    2、判斷對錯,我是事先定義了一個數組,來存放正確答案,最後把用戶輸入的答案和正確答案做比較即可

    3、給出對/錯的數量,這個比較容易,只需要設計兩個變量,一個用來計算正確的個數,一個用來計算錯誤的個數,最後給出答案即可。

三、實驗代碼

//作者: 信1201-2班  司新紅
#include<iostream.h>
#include<stdlib.h>
#include<time.h>

void hycc()
{
	int f;//定義要測試的是四則運算是幾進制
	cout<<"請輸入要測試的四則運算是幾進制?"<<endl;
	cin>>f;	
	int x,y,z,t;   //x,y分別表示所產生的兩個數,z來控制做加減乘除
	int e;//輸入每行算數題的個數
	srand(time(NULL));
	int n;
	int b;//表示有無負數
	int a;//用來輸入行間距
	int d;//代表輸入的答案
	float daan[100];//代表正確答案
	int zq=0;//用來表示正確答案的個數
	int cw=0;//用來表示錯誤答案的個數
	cout<<"需要列出多少到數學題?"<<endl;
	cin>>n;      //n代表出題的個數
	cout<<"加減有無負數?(0代表有負數,1代表無負數)"<<endl;
	cin>>b;
	cout<<"每行需要打印幾個算數題?"<<endl;
	cin>>e;
	cout<<"打印時行間距是多少?"<<endl;
	cin>>a;
	
	cout<<"********************************"<<endl;
	for(int i=0;i<n;i++)
	{
		x=rand()%f;
		y=rand()%f;
		z=rand()%4;
		switch(z)
		{
		case 0:
			cout<<i+1<<"、 "<<x<<"+"<<y<<"="<<"     ";
			daan[i+1]=x+y;
			break;
			
		case 1:
			if(b==1)
			{
			if(x<y)
			{
				t=x;
				x=y;
				y=t;
			}
			cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<"     ";
			
			}
			else if(b==0)
			{
			cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<"     ";
			}
			daan[i+1]=x-y;
			break;
		case 2:
			cout<<i+1<<"、 "<<x<<"*"<<y<<"="<<"     ";
			daan[i+1]=x*y;
			break;
		case 3:
			if(y!=0)
			{
			cout<<i+1<<"、 "<<x<<"÷"<<y<<"="<<"     ";
			}
			else
			{
				i=i-1;
			}
			daan[i+1]=(float)x/y;
			break;
		default:
			cout<<"超出測試范圍"<<endl;
			break;
		}
		if((i+1)%e==0)
		{
			for(int c=0;c<=a;c++)
			{
				cout<<endl;
			}
		}
		if((i+1)==n)
		{
			cout<<endl;
		}
	}
	for(i=1;i<=n;i++)
	{
		cout<<"請作答:"<<endl;
		cout<<i<<"、";
		cin>>d;
		if(d==daan[i])
		{
			cout<<"恭喜您,回答正確!"<<endl;
			cout<<endl;
			zq=zq+1;
		}
		else
		{
			cout<<"回答錯誤,正確答案為:"<<"  "<<daan[i]<<endl;
			cout<<endl;
			cw=cw+1;
		}
	}
	cout<<"回答正確的數量為:"<<" "<<zq<<"個"<<endl;
	cout<<"回答錯誤的數量為:"<<" "<<cw<<"個"<<endl;
}

void bhycc()
{

	int f;
	cout<<"請輸入要測試的四則運算是幾進制?"<<endl;
	cin>>f;	
	int e;//輸入每行算數題的個數
	int x,y,z,t;   //x,y分別表示所產生的兩個數,z來控制做加減乘除
	srand(time(NULL));
	int n;//n代表出題個數
	int b;//代表加減有無負數
	int a;//用來輸入行間距
	int d;//代表輸入的答案
	int daan[100];//代表正確答案
	int zq=0;//用來表示正確答案的個數
	int cw=0;//用來表示錯誤答案的個數
	cout<<"需要列出多少到數學題"<<endl;
	cin>>n;      //n代表出題的個
	cout<<"加減有無負數?(0代表有負數,1代表無負數)"<<endl;
	cin>>b;
	cout<<"每行需要打印幾個算數題?"<<endl;
	cin>>e;
	cout<<"打印時行間距是多少?"<<endl;
	cin>>a;
	cout<<"********************************"<<endl;
	for(int i=0;i<n;i++)
	{
		x=rand()%f;
		y=rand()%f;
		z=rand()%2;
		switch(z)
		{
		case 0:
			cout<<i+1<<"、 "<<x<<"+"<<y<<"="<<"     ";
			daan[i+1]=x+y;
			break;
		case 1:
			if(b==1)
			{
			if(x<y)
			{
				t=x;
				x=y;
				y=t;
			}
			cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<"     ";
			}
			else if(b==0)
			{
				cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<"     ";
			}
			daan[i+1]=x-y;
			break;
		default:
			cout<<"超出測試范圍"<<endl;
			break;
		}
		if((i+1)%e==0)
		{
			for(int c=0;c<=a;c++)
			{			
				cout<<endl;
			}
		}
		if((i+1)==n)
		{
			cout<<endl;
		}
	}
		for(i=1;i<=n;i++)
	{
		cout<<"請作答:"<<endl;
		cout<<i<<"、";
		cin>>d;
		if(d==daan[i])
		{
			cout<<"恭喜您,回答正確!"<<endl;
			cout<<endl;
			zq=zq+1;
		}
		else
		{
			cout<<"回答錯誤,正確答案為:"<<"  "<<daan[i]<<endl;
			cout<<endl;
			cw=cw+1;
		}
	}
	cout<<"回答正確的數量為:"<<" "<<zq<<"個"<<endl;
	cout<<"回答錯誤的數量為:"<<" "<<cw<<"個"<<endl;
}

int main()
{
	int c;//c代表輸入是否繼續的數字
	char ch;
	cout<<"是否支持乘除?(Y/N)"<<endl;
	cin>>ch;
	if(ch=='Y'||ch=='y')
	{
		hycc();	
		cout<<"********************************"<<endl;
	}
	
    else if(ch=='N'||ch=='n')
	{
		bhycc();
		cout<<"********************************"<<endl;
	}
	else 
	{
		cout<<"輸入錯誤,無法為您出題!"<<endl;
	}

	cout<<"要繼續答題嗎?(0:繼續  1:退出)"<<endl;
	cin>>c;
	if(c==0)
	{
		cout<<endl;
		main();
	}
	else
	{
		cout<<endl;
		return 0;
	}
	
	return 0;
}

 

四運行結果

五、總結

  這次的題目有幾個選向,由於我的編程能力不強,所以 我選擇了第一個方向,在編寫程序時還遇到了一定的困難,比如在做除法的時候,由於定義的正確答案的數組是整形,所以導致除法計算一直不正確,所以我選擇了把數組定義為浮點型。我在以後的時間裡一定會多加聯系,爭取再實現另外一個方向

 

 

PSP 

學生     司新紅      

日期  2014.3.17

教師  王建民         

程序號_______________

 

                                                                                                      項目計劃總結

 

編程

閱讀書籍

課後復習

日總計

周日

 

 

 

 

周一

 

 

 

 

周二

30

30

90

150

周三

90

30

 

120

周四

120

30

 

150

周五

 

 

 

 

周六

 

 

 

 

周總計

240

90

90

420

 

 

                                                                                                時間記錄總結

 

日期

開始

結束

中斷時間

淨時間

活動

備注

C

U

3月17日

4:00

5:00

160

編程

 

 

 

 

8:00

9:30

30

60

復習

寫作業

 

 

 

10:00

10:30

30

閱讀書籍

 

 

 

3月18日

10:00

11:30

15

75

編程

休息

 

 

 

10:00

10:30

30

閱讀書籍

 

 

 

3月19日

7:00

9:00

120

編程

 

 

 

 

 

                                                                                                          缺陷記錄日志

 

日期

編號

類型

引入階段

排除階段

修復時間

修復缺陷

3月17日

01

程序

編碼

編譯

20min

求幾個數中最大值時一直報錯,最後我把所求的和放在了一個數組中

3月18日

02

程序

編碼

編譯

10min

忘記給正確答案的個數和錯誤答案的個數賦值

 

03

程序

編碼

編譯

30min

計算除法的正確答案時,不能是浮點型,然後我就把答案這個數組定義成了浮點型

3月19日

04

程序

編碼

編譯

10min

在不含有乘除的函數中,忘了給正確答案賦值,導致結果報錯

 

05

程序

編碼

編譯

10min

變量用錯,運行時運行無響應了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved