一、设计思路
这次版本加入了一下功能:
可定制题目的数量:修改循环次数;
可以定制每行打印的题目数和行间距的大小(当前题目序号可以整除定制数时输出输入的行间距个换行符);
可以定制算式的范围(修改随机数的最大值);
可以选择有无乘除法(没有乘除法即修改符号的情况,有四种改为两种);
可以选择减法中得数是否可以为负(不要负数的情况即比较减式中俩数大小,大数放前面)。
二、代码
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int main() 5 { 6 int Ques1=1; 7 int Ques2=1; 8 int Ques3=100; 9 char Ques4='y'; 10 int Ques5=1; 11 char Ques6='n'; 12 char Ques7='n'; 13 Again: 14 cout<<"请输入题目数量:"; 15 cin>>Ques1; 16 cout<<"请输入每行打印题目数(1-5):"; 17 cin>>Ques2; 18 cout<<"请输入算式中数值的最大值:"; 19 cin>>Ques3; 20 while(1) 21 { 22 cout<<"运算中需要乘除法吗?y:需要;n:不需要"; 23 cin>>Ques4; 24 cout<<"减法运算需要有负数吗?y:需要;n:不需要"; 25 cin>>Ques7; 26 cout<<"行间距(正整数):"; 27 cin>>Ques5; 28 srand(time(NULL)); 29 if(Ques4=='y') 30 { 31 while(1) 32 { 33 if(Ques1<1) 34 { 35 cout<<"输入有误,请重新输入:"; 36 cin>>Ques1; 37 } 38 else 39 { 40 for(int j=0;j<Ques1;j++) 41 { 42 if(j!=0&&j%Ques2==0) 43 { 44 for(int i=0;i<Ques5;i++) 45 { 46 cout<<endl; 47 } 48 } 49 int num1=rand()%Ques3; 50 int num2=rand()%Ques3; 51 int sign=rand()%4; 52 switch(sign) 53 { 54 case 0: 55 cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<" "; 56 break; 57 case 1: 58 if(Ques7=='y') 59 { 60 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; 61 } 62 else 63 { 64 if(num1>num2) 65 { 66 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; 67 } 68 else 69 { 70 cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<" "; 71 } 72 } 73 break; 74 case 2: 75 cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<" "; 76 break; 77 case 3: 78 if(num2!=0) 79 { 80 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<" "; 81 } 82 else 83 { 84 j--; 85 } 86 break; 87 } 88 } 89 break; 90 } 91 } 92 break; 93 } 94 if(Ques4=='n') 95 { 96 while(1) 97 { 98 if(Ques1<1) 99 { 100 cout<<"输入有误,请重新输入:"; 101 cin>>Ques1; 102 } 103 else 104 { 105 for(int j=0;j<Ques1;j++) 106 { 107 if(j!=0&&j%Ques2==0) 108 { 109 for(int i=0;i<=Ques5;i++) 110 { 111 cout<<endl; 112 } 113 } 114 int num1=rand()%Ques3; 115 int num2=rand()%Ques3; 116 int sign=rand()%2; 117 switch(sign) 118 { 119 case 0: 120 cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<" "; 121 break; 122 case 1: 123 if(Ques7=='y') 124 { 125 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; 126 break; 127 } 128 else 129 { 130 if(num1>num2) 131 { 132 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; 133 break; 134 } 135 else 136 { 137 cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<" "; 138 break; 139 } 140 } 141 break; 142 } 143 } 144 } 145 break; 146 } 147 break; 148 } 149 150 else 151 { 152 cout<<"输入有误,请按要求输入!"<<endl; 153 } 154 } 155 cout<<endl; 156 while(1) 157 { 158 cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)"; 159 cin>>Ques6; 160 if(Ques6=='y') 161 { 162 goto Again; 163 } 164 if(Ques6=='n') 165 { 166 goto Exit; 167 } 168 else 169 { 170 cout<<"输入有误,请重新输入:"; 171 } 172 } 173 Exit: 174 return 0; 175 }
三、运行结果
四、实验总结
在这次试验中,我发现了我不会使用函数,导致所有的代码都是在主函数中完成的,看上去很乱,还有对文件的读写也不明白,要想把这个程序做得更好,我接下来还要继续看课本,找资料。