随机生成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;
}


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

#include <stdio.h>
#include <stdlib.h>
#include <time.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("%.2f + %.2f = %.2f\t", x, y, calc(x, y, 1));
        break;
    case 2:
        printf("%.2f - %.2f = %.2f\t", x, y, calc(x, y, 2));
        break;
    case 3:
        printf("%.2f * %.2f = %.2f\t", x, y, calc(x, y, 3));
        break;
    case 4:
        printf("%.2f / %.2f = %.2f\t", x, y, calc(x, y, 4));
        break;
    }
}

int main()
{
    double a = 0.0;
    double b = 0.0;
    int c = 0;
    int i = 100;
    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;
}

img

如果对你有帮助,请点个采纳支持一下,谢谢!


#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 die(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 die(x,y);
            break;
    }
}
void print(double x, double y, int z)
{
    switch (z)
    {
    case 1:
        printf("%-2.0f + %-2.0f = %-4.0f\t", x, y, calc(x, y, 1));
        break;
    case 2:
        printf("%-2.0f - %-2.0f = %-4.0f\t", x, y, calc(x, y, 2));
        break;
    case 3:
        printf("%-2.0f x %-2.0f = %-4.0f\t", x, y, calc(x, y, 3));
        break;
    case 4:
        printf("%-2.0f ÷%-2.0f = %-4.0f\t", x, y, calc(x, y, 4));
        break;
    }
}


int main() {
    double a=0.0;
    double b=0.0;
    int c=0;
    int i=100;
    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;
        }
        count++;
        print(a,b,c);
        if(count%5==0)
            printf("\n");
    }

    return 0;
}