直接上代码:
/**
* Description: Haaaaaaaa, make some simple arithmetic problems for my sons.
* My sons are ........;
* Author: xxm, leezp, xx
* Time: 2017.3.26
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define QUESTIONNUMBER 30
#define VALUEMAX 99
#define ADD 1
#define SUB 2
#define MUL 3
#define DIV 4
#define METHOD 4
struct Node {
int operation1;
int method;
int operation2;
int result;
};
char getMethod(int methodCode);
int compare(const void *value1, const void *value2);
int generateExp(int item);
struct Node list[QUESTIONNUMBER];
int main(int argc, char* argv[]) {
srand(time(0));
int i = 0;
for(i = 0; i < QUESTIONNUMBER; i++) {
generateExp(i);
}
//print
for(i = 0; i < QUESTIONNUMBER; i++) {
printf("%d. %d %c %d = %d\n", i + 1, list[i].operation1, getMethod(list[i].method), list[i].operation2, list[i].result);
}
//test
int num[5] = {7, 3, 2, 6, 4};
qsort(num, 5, 4, compare);
for(i = 0; i < 5; i++) {
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
char getMethod(int methodCode) {
char method = '\0';
switch(methodCode) {
case ADD:
method = '+';
break;
case SUB:
method = '-';
break;
case MUL:
method = '*';
break;
case DIV:
method = '/';
break;
}
return method;
}
int compare(const void *value1, const void *value2) {
return *(int*)value1 - *(int*)value2;
}
int generateExp(int item) {
list[item].operation1 = rand() % (VALUEMAX + 1);
list[item].method = rand() % METHOD + 1;
list[item].operation2 = rand() % (VALUEMAX + 1);
switch(list[item].method) {
case ADD:
list[item].result = list[item].operation1 + list[item].operation2;
break;
case SUB:
list[item].result = list[item].operation1 - list[item].operation2;
break;
case MUL:
list[item].result = list[item].operation1 * list[item].operation2;
break;
case DIV:
list[item].result = list[item].operation1 / list[item].operation2;
break;
}
return 0;
}
//quietly tell you,my sons are xx、xxm
代码运行结果
后面那串数字是用C语言库中的快排函数排列的一堆数字,不用管…………
照片太帅!就不发出来了,就发个图片就行了
感受
中国的所有IT行业好久能实现的结对编程,一个在旁边玩,一个在旁边写~~………………