如何去做

辽师张大为@https://daweizh.github.io/csp/

任何一个程序从开始有想法,到程序实现完成,大概都要经历如下几个阶段:

  1. 有想法(灵光咋现)
  2. 写需求(程序/软件究竟要做什么)
  3. 做分析(权衡利弊,确定“大小多少”)
  4. 做框架(给你要完成的代码准备“空间”)
  5. 做设计(关键代码,如计分算法如何实现)
  6. 去实现(老老实实的去编代码,调试程序)

以上过程,如果你有程序设计经验,OK没问题。对于新手来说,在有了需求和分析的基础上,在有了上述实现程序过程的认知的情况下,可以尝试由里到外,由小到大的编码过程。也就是先找到核心问题,实现它,然后完善它。

准备工作空间

  1. 在wedo文件夹中创建game文件夹
  2. 在game文件夹中创建arith文件夹
E:\NOI\WEDO
        └─game
            └─arith

在arith文件夹内创建项目arith

写核心代码

#include <iostream>
using namespace std;

char opt='+';		//运算符 

long long x;		//操作数1,被加数或被减数 
long long y;		//操作数2,加数或减数 
long long ans;		//由你提供的回答 
long long result;	//正确答案 

int main(int argc, char** argv) {
	cout << "please int x + y or x - y then input answer,";
	cout << "between operator is blank." << endl;
	cin >> x >> opt >> y;
	
	switch(opt){
		case '+':
			result = x + y;
			break;
		case '-':
			result = x - y;
			break;
	}
	
	cin >> ans;
	if(ans==result)
		cout << "Right!" << endl;
	else
		cout << "Error!" << endl;
		
	return 0;
}

按F11执行

please int x + y or x - y then input answer,between operator is blank.
123 + 321
444
Right!

随机出题

自己想题太难了!!!让计算机帮忙随机出题怎样?

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

char opt='+';		//运算符 

int num=10;			//出题数 

long long x;		//操作数1,被加数或被减数 
long long y;		//操作数2,加数或减数 
long long ans;		//由你提供的回答 
long long result;	//正确答案 

int main(int argc, char** argv) {
	
	srand((unsigned)time(NULL));	//设定随机数生成方式 

	for(int i=0;i<num;i++){			//让计算机出num道题 
		x = (long long)rand();
		y = (long long)rand();

		switch(opt){
			case '+':
				result = x + y;
				break;
			case '-':
				result = x - y;
				break;
		}

		cout << x << opt << y << "=" ; //显示问题横式		
		cin >> ans;
		if(ans==result)
			cout << "Right!" << endl;
		else
			cout << "Error!" << endl;
	}
		
	return 0;
}

按F11执行:

13452+5616=19086
Error!
13351+30155=43506
Right!
29107+14963=44
Error!
28158+8300=44
Error!
32420+11621=44
Error!
1812+16807=44
Error!
3769+30221=44
Error!
17826+12964=44
Error!
21264+2914=44
Error!
26072+7071=44
Error!