mathhater 2021-12-25 15:22 采纳率: 64.3%
浏览 57
已结题

随机生成n道100以内加减乘除运算,打印无法对其

求指点如何让打印结果对齐得漂亮些,还有该程序是否还有可以优化的地方,求解。

#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;
}


  • 写回答

2条回答 默认 最新

  • _GX_ 2021-12-25 18:05
    关注
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main()
    {
        int a, b, c;
        srand(time(NULL));
        for (int i = 1; i <= 1000; i++)
        {
            do
            {
                a = rand() % 100 + 1;
                b = rand() % 100 + 1;
                c = rand() % 4 + 1;
            } while (a < b || a % b != 0);
    
            switch (c)
            {
            case 1:
                printf("%2d + %2d = %d\t", a, b, a + b);
                break;
            case 2:
                printf("%2d - %2d = %d\t", a, b, a - b);
                break;
            case 3:
                printf("%2d * %2d = %d\t", a, b, a * b);
                break;
            case 4:
                printf("%2d / %2d = %d\t", a, b, a / b);
                break;
            default:
                break;
            }
            if (i % 5 == 0)
                printf("\n");
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 12月25日