如何去做

辽宁师范大学 • 张大为@https://daweizh.github.io/noip/

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

  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!