首页 > 技术文章 > 30道四则运算题的第四次补充

zhaixing 2015-03-22 17:05 原文

一、题目要求

  让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。

二、设计思想

  1.用一个数组存取正确的结果,用另一个数组存储用户输入的答案,把两个数组进行比较,输出正确和错误的结果数目。

三、源代码

/**
作者:程鹏远
题目:30道2年纪四则运算题目
*/
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
	//初始化
	int zong=0;
	int zong0=0;
    int a,b,c;	
	int num1,num2;
	int num;
	int chufa;
	int k,jiange;
	int zhengchu;
	int j=0;
	int chengfa;
	int con;
	int q[1000],w[1000],e[1000],r[1000];
	//请输入数的范围,中间用空格隔开:
	cout<<"请输入数的范围,中间用空格隔开:";
	cin>>num1>>num2;
	if(num1>num2)
	{
		cout<<"第一个数应该小于第二个数,请重输:";
		cin>>num1>>num2;
	
	}
	//控制题目的个数,num
	cout<<"其输入要出多少道题目:";
	cin>>num;
	
	if(num>(4*(num2-num1)^2))
	{
		cout<<"您输入的题目数量太多,会造成重复,请重新输入数目:";
		cin>>num;
	}

	//打印格式
	cout<<"一行几道题,行间距是几,中间空格:";
	cin>>k>>jiange;
	if(jiange>=5||jiange<0)
	{
		cout<<"您输入的间距太大或为负数,请重输:";
		cin>>jiange;
	}
	
	//是否要除法
	cout<<"是否要除法?是输入1,否输入0:";
	cin>>chufa;
	if(chufa==1)
	{
		cout<<"是否要有余数,是输入1,否输0:";
		cin>>zhengchu;
	}
	
	//是否要乘法
	cout<<"是否要乘法,是输入1,否输入0:";
	cin>>chengfa;

	cout<<endl;
    for(int i=0;i<num;i++)
    {	
		cout<<i+1<<"、";        
		q[i]=(rand()%(num2-num1+1))+num1;
	    
		w[i]=(rand()%(num2-num1+1))+num1;
        
		if(chufa==1)
		{
			if(chengfa==1)
			{
				c=rand()%4;//0-3
			}
			else
			{
				c=rand()%3;//0-2
			}
		}
		else
		{
			if(chengfa==1)
			{
				c=rand()%3+1;//1-3
			}
			else
			{
				c=rand()%2+1;//1-2
			}
		}

        switch (c)
        {
			case 1:
				cout<<q[i]<<"+"<<w[i]<<"="<<"\t";
				e[i]=q[i]+w[i];
				
				break;
			case 2:
				if(q[i]>w[i])
				{
					cout<<q[i]<<"-"<<w[i]<<"="<<"\t";
					e[i]=q[i]-w[i];
				}
				else
				{
					cout<<w[i]<<"-"<<q[i]<<"="<<"\t";
					e[i]=w[i]-q[i];
				}
				break;
			case 3:            
				cout<<q[i]<<"*"<<w[i]<<"="<<"\t";
				e[i]=q[i]*w[i];
				break;
			case 0://除法
				if(zhengchu==1)//有余数
				{
					if(w[i]==0)
					{
						cout<<w[i]<<"/"<<q[i]<<"="<<"\t";
						e[i]=w[i]/q[i];						
					}
					else
					{
						cout<<q[i]<<"/"<<w[i]<<"="<<"\t";
						e[i]=q[i]/w[i];
					}

					
				}
				else
				{
					while((j<100000)&&(q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0))
					{
						cout<<q[i]<<"/"<<w[i]<<"="<<"\t";
						e[i]=q[i]/w[i];																
						j++;
					}
					if((q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0))
					{
						cout<<q[i]<<"/"<<w[i]<<"="<<"\t";
						e[i]=q[i]/w[i];	
						//i++;
					}
					else
					{
						int j=0;
						while(j<100000)
						{
							q[i]=(rand()%(num2-num1+1))+num1;
							w[i]=(rand()%(num2-num1+1))+num1;
							if((q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0))
							{
								cout<<q[i]<<"/"<<w[i]<<"="<<"\t";
								e[i]=q[i]/w[i];	
								//i++;
								j=100000;
								j++;
							}
							else
							{
								j++;
							}
						}
					}								
				}
				break;    
		} 
		
		
		if((i+1)%k==0)
		{
			cout<<endl;
			for(int m=0;m<jiange;m++)
			{
				cout<<endl;
			}
		}
				
    }
	
	cout<<"请答题:"<<endl;
	for(i=0;i<num;i++)
	{
		cout<<"题目"<<i+1<<".";
		cin>>r[i];
		if(e[i]==r[i])
		{
			cout<<"正确!"<<endl;
			zong++;
		}
		else
		{
			cout<<"错误!"<<endl;
			zong0++;
		}
	}
	cout<<endl<<"正确结果有"<<zong<<"个";
	cout<<endl<<"错误结果有"<<zong0<<"个"<<endl;
	//继续吗?
	cout<<"继续吗?是输入1,否输入0:"<<endl;
	cin>>con;
	if(con==1)
	{
		cout<<endl;
		main();
	}
	else
	{
		return 0;
	}
	getch();
    return 0;
}

  

四、结果截图

五、心得体会

  程序中我一直没有用到指针及相关的知识。用数组的知识实现了内容,我认为指针跟数组有某种关系,指针可能就是不连续的数组。

六、PSP0级日志

一、项目计划总结:

周活动总结表

姓名:程鹏远                                                 日期:3月22日

日期       任务

听课

编写程序

阅读课本

准备考试

日总计

周日

 

105

 

 

 105

周一

 

 

 

 

 

周二

 

 

 

 

 

周三

 

 

 

 

 

周四

 

 

 

 

 

周五

 

 

 

 

 

周六

 

 

 

 

 

周总结

 

 

 

 

 

阶段时间和效率                                           第2 周数(上一次周活动表的周数+1):

不包括上一周在内的累计时间                                                                         

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

以前各周的累计时间                                                                                    

总计

 105

 

 

 

 

 

 

平均

 105

 

 

 

 

 

 

最大

 105

 

 

 

 

 

 

最小

 105

 

 

 

 

 

 

二、时间记录表:

学生        程鹏远                                              日期     322      

教师        王建民                                              课程      软件工程       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3/22

1:05

2:55

10min

1小时40分钟

编写30道四则运算题目

 

 

三、缺陷记录日志:

学生    程鹏远

日期   3月22日 

教员       王建民   

程序号                

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 3/22

 01

20

 编码

 编码

 3分钟

 

 Ctrl+H整个文档的一个替换

推荐阅读