四则运算2代码实现
1.设计思想:
主要运用switch语句进行选择,运用随机函数避免题目重复,其他思想在上一篇有所陈述。
2.源程序代码:
1 //信1305 郭婷 20132916 2 #include <iostream> 3 #include <time.h> 4 using namespace std; 5 6 int main() 7 { 8 srand(time(NULL)); 9 int x1,x2,flag,i,j; 10 int x3,x4; 11 int a1,a2; 12 char a3,a4,a5,a6; 13 int n; 14 //可定制打印的题目数 15 cout<<"请输入要打印的题目数:"; 16 cin>>a1; 17 while(a1<=0) 18 { 19 cout<<"请重新输入有效的题目数:"; 20 cin>>a1; 21 }; 22 //可定制运算数的范围 23 cout<<"请输入运算数的范围(大于1的数):"; 24 cin>>a2; 25 while(a1<=0) 26 { 27 cout<<"请重新输入有效的范围:"; 28 cin>>a2; 29 }; 30 //可定制题目中是否有乘除法 31 cout<<"请选择否有乘除法(Y/N):"; 32 cin>>a3; 33 while ((a3!='Y')&(a3!='N')) 34 { 35 cout<<"请重新输入有效的数值:"; 36 cin>>a3; 37 }; 38 //可定制题目结果是否有负数 39 cout<<"请选择结果有无负数(Y/N):"; 40 cin>>a4; 41 while((a4!='Y')&(a4!='N')) 42 { 43 cout<<"请重新输入有效的数值:"; 44 cin>>a4; 45 }; 46 //可定制结果是否有余数 47 cout<<"请选择结果有无余数(Y/N)"; 48 cin>>a5; 49 while((a5!='Y')&(a5!='N')) 50 { 51 cout<<"请重新输入有效的数值:"; 52 cin>>a5; 53 }; 54 //可定制是否支持分数 55 cout<<"请选择是否支持分数(Y/N):"; 56 cin>>a6; 57 while((a6!='Y')&(a6!='N')) 58 { 59 cout<<"请重新输入有效的数值:"; 60 cin>>a6; 61 }; 62 cout<<"每行输出的题目数:"; 63 cin>>n; 64 //循环打印符合要求的题目 65 for (i=0;i<a1;i++) 66 { 67 switch (a3) 68 { 69 case 'Y':j=rand()%4; 70 break; 71 case 'N':j=rand()%2; 72 break; 73 } 74 x1=rand()%a2+1; 75 x2=rand()%a2+1; 76 //循环打印 77 78 if (j==0) 79 { 80 switch(a6) 81 { 82 case 'N':cout<<i+1<<" "<<x1<<"+"<<x2<<"= "; 83 if ((i+1)%n==0) 84 { 85 cout<<endl; 86 } 87 break; 88 case 'Y':x3=rand()%9+1; 89 x4=rand()%9+1; 90 cout<<i+1<<" "<<x1<<"/"<<x2<<"+"<<x3<<"/"<<x4<<"= "; 91 if ((i+1)%n==0) 92 { 93 cout<<endl; 94 } 95 break; 96 } 97 } 98 if (j==1) 99 { 100 switch(a4) 101 { 102 case 'Y': 103 break; 104 case 'N': 105 if (x1<x2) 106 { 107 flag=x1; 108 x1=x2; 109 x2=flag; 110 } 111 break; 112 } 113 switch (a6) 114 { 115 case 'N':cout<<i+1<<" "<<x1<<"-"<<x2<<"= "; 116 if ((i+1)%n==0) 117 { 118 cout<<endl; 119 } 120 break; 121 case 'Y': 122 x3=rand()%9+1; 123 x4=rand()%9+1; 124 cout<<i+1<<" "<<x1<<"/"<<x2<<"-"<<x3<<"/"<<x4<<"= "; 125 if ((i+1)%n==0) 126 { 127 cout<<endl; 128 } 129 break; 130 } 131 } 132 if (j==2) 133 switch(a6) 134 { 135 case 'N':cout<<i+1<<" "<<x1<<"*"<<x2<<"= "; 136 if ((i+1)%n==0) 137 { 138 cout<<endl; 139 } 140 break; 141 case 'Y': 142 x3=rand()%9+1; 143 x4=rand()%9+1; 144 cout<<i+1<<" "<<x1<<"/"<<x2<<"*"<<"("<<x3<<"/"<<x4<<")"<<"= "; 145 if ((i+1)%n==0) 146 { 147 cout<<endl; 148 } 149 break; 150 } 151 if (j==3) 152 { 153 switch(a5) 154 { 155 case 'Y': 156 break; 157 case 'N': 158 while (x1%x2!=0) 159 { 160 x1=rand()%a2+1; 161 x2=rand()%a2+1; 162 }; 163 break; 164 } 165 switch(a6) 166 { 167 case 'Y':cout<<i+1<<" "<<x1<<"/"<<x2<<"= "; 168 if ((i+1)%n==0) 169 { 170 cout<<endl; 171 } 172 break; 173 case 'N': 174 x3=rand()%9+1; 175 x4=rand()%9+1; 176 cout<<i+1<<" "<<"("<<x1<<"/"<<x2<<")"<<"/"<<"("<<x3<<"/"<<x4<<")"<<"= "; 177 if ((i+1)%n==0) 178 { 179 cout<<endl; 180 } 181 break; 182 } 183 184 } 185 } 186 187 return 0; 188 }
3.程序截图
4.编程总结
刚一开始看到这个题目,感觉有点难,要求挺多。但是经过对每一个要求的分析和理解,将这个程序由大化小,先将一个个小的要求实现,在将这些要求程序连接起来,就可以将一个看似麻烦的程序变得简单了;还有就是对于题目的重复问题,我在网上查过之后,找到了srand(time(NULL));这个函数。其中不足的是是否支持分数,如果选择是,则题目中都是分数。
5.时间记录日志