求指点如何让打印结果对齐得漂亮些,还有该程序是否还有可以优化的地方,求解。
#include <stdio.h>
#include<time.h>
#include<stdlib.h>
double add(double x,double y){
return x+y;
}
double sub(double x,double y){
return x-y;
}
double mul(double x,double y){
return x*y;
}
double div(double x,double y){
return x/y;
}
double calc(double x,double y,int z){
switch(z){
case 1: return add(x,y); break;
case 2: return sub(x,y); break;
case 3: return mul(x,y); break;
case 4: return div(x,y); break;
}
}
void print(double x,double y,int z){
switch(z){
case 1: printf("%-2.2f+%-2.2f=%6.2f ",x,y,calc(x,y,1)); break;
case 2: printf("%-2.2f-%-2.2f=%6.2f ",x,y,calc(x,y,2)); break;
case 3: printf("%-2.2f*%-2.2f=%6.2f ",x,y,calc(x,y,3)); break;
case 4: printf("%-2.2f/%-2.2f=%6.2f ",x,y,calc(x,y,4)); break;
}
}
int main() {
double a=0.0;
double b=0.0;
int c=0;
int i=1000;
int count=0;
srand((unsigned)time(NULL));
while(i--) {
a=rand()%100+1;
b=rand()%100+1;
c=rand()%4+1;
if(a<b||(int)a%(int)b!=0){//该处把出现负数的情况和除不尽的情况去掉,适合给小学低年级的孩子出题
i++;
continue;
}
print(a,b,c);
count++;
if(count%6==0)
printf("\n");
}
return 0;
}