该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//这是我的全部代码
//功能是实现随机生成20个20以内的不重复的加减法
//如果大佬们对我的代码思路和代码风格有什么建议,也希望能不吝赐教
#include
#include
#include
#define Problems_Number 20
#define Range 20
void handbook();
void randomNumber(int *x,int equation[][4]);
void result(int *x,int equation[][4]);
void check_range(int *x,int equation[][4]);
void check_repeat(int* x,int equation[][4]);
void print_equation(int equation[][4]);
void input_file(int equation[][4]);
int main(){
printf("将为您生成%d内的%d道题目\n",Range,Problems_Number);
int equation[Problems_Number][4];
int i,j;
char operation;
srand((unsigned)time(NULL));
for(i=0;i
randomNumber(equation[i],equation);
}
input_file(equation);
//print_equation(equation);
}
void randomNumber(int *x,int equation[][4]){
int i;
for(i=0;i<3;i++){
x[i]=rand()%(Range+1);//生成区间为0~Range的运算数
}
result(x,equation);
check_range(x,equation);
}
void result(int *x,int equation[][4]){
x[1]%=2;//第二个数字表示运算符号,奇数为加,偶数为减
if(x[1] == 1){
x[3] = x[0] + x[2];
}
else{
x[3] = x[0] - x[2];
}
}
void check_range(int *x,int equation[][4]){
if(x[3]<0 || x[3]>20){
randomNumber(x,equation);
}
}
void check_repeat(int *x,int equation[][4]){
int i;
for(i=0 ; x>equation[i] ;i++){
if(x[3] == equation[i][3]){
if(x[0] == equation[i][0]){
if(x[2] == equation[i][2]){
randomNumber(x,equation);
}
}
}
}
}
void print_equation(int equation[][4]){
printf("为您生成的题目为:\n");
int i;
for(i=0;i
switch (equation[i][1]){
case 1:printf("%d + %d = ?\t",equation[i][0],equation[i][2]);break;
case 0:printf("%d - %d = ?\t",equation[i][0],equation[i][2]);break;
}
if(i%2==1) printf("\n");
}
}
void input_file(int equation[][4]){
FILE *fp=fopen("math_equation.txt","a");
int i;
if( fp == NULL ){
printf("Fail to open file!\n");
exit(0); //退出程序(结束程序)
}
//标准打印
for(i=0;i
switch (equation[i][1]){
case 1:fprintf(stdout,"%d + %d = ?\t",equation[i][0],equation[i][2]);break;
case 0:fprintf(stdout,"%d - %d = ?\t",equation[i][0],equation[i][2]);break;
}
if(i%2==1) fprintf(stdout,"\n");
}
//文件打印
for(i=0;i
switch (equation[i][1]){
case 1:fprintf(fp,"%d + %d = ?\t",equation[i][0],equation[i][2]);break;
case 0:fprintf(fp,"%d - %d = ?\t",equation[i][0],equation[i][2]);break;
}
if(i%2==1) fprintf(fp,"\n");
}
fclose(fp);
}