C 计算器 if else

C calculator if else

我想做一个简单的 C 计算器,只用 "IF" 和 "IF ELSE" 条件,它不让我选择运算符(“+、-、* 或 /”),只是出现我的最后一个 if 条件。

#include <stdio.h>
int main(){
    printf("\tCalculadora\n\n");
    int num1, num2, total;
    char oper;
    printf("Introduza o primeiro numero: \n");
    scanf("%d", &num1);
    printf("Introduza o segundo numero: \n");
    scanf("%d", &num2);
    printf("Escolha a operacao que quer realizar!\n\n");
    scanf("%c", &oper);
    if(oper == '+'){
        printf("O resultado e: %d", num1+num2);
    }
    else if(oper == '-'){
        printf("O resultado e: %d", num1-num2);
    }
    else if(oper == '*'){
        printf("O resultado e: %d", num1*num2);
    }
    else{
        printf("O resultado e: %d", num1/num2);
    }
    getchar();
    getchar();
}

这个

scanf("%c", &oper);

应该改为

scanf(" %c", &oper);

所以你让 scanf() 忽略之前 scanf() 留下的 '\n'

我避免使用 scanf() 及其表兄弟。这是使用 fgets() 输入的计算器版本。它还使用 double 作为操作数。

#include <stdio.h>
#include <stdlib.h>

#define ISIZE   100      // arbitrarily large

int main(){
    double num1, num2;
    int oper;
    char inp[ISIZE+1] = "";
    printf("\tCalculadora\n\n");

    printf("Introduza o primeiro numero: ");            // 1st operand
    fgets (inp, ISIZE, stdin);
    num1 = atof (inp);

    printf("Introduza o segundo numero: ");             // 2nd operand
    fgets (inp, ISIZE, stdin);
    num2 = atof (inp);

    printf("Escolha a operacao que quer realizar! ");   // operator
    fgets (inp, ISIZE, stdin);
    oper = inp[0];

    printf ("O resultado e: %f %c %f = ", num1, oper, num2);

    switch (oper) {
        case '+': printf("%f\n", num1+num2); break;
        case '-': printf("%f\n", num1-num2); break;
        case '*': printf("%f\n", num1*num2); break;
        case '/': if (num2!=0) printf("%f\n", num1/num2);
                  else printf ("Divisão por zero!\n");
                  break;
        default:  printf("Eu não sei o que operador\n");
    }
    return 0;
}

我也试图在一个简单的计算器中应用我的 C 知识,并遇到了你的问题。为了尊重您的 if...else 请求,我提出了这个解决方案。希望对您有所帮助。

    #include <stdio.h>
void sayHello( ) {
    printf("Hello\n"); }
// to say hello to the user
int add( int num1, int num2) {
        num1 = num1 + num2;
        return num1;
}

int minus( int num1, int num2) {
        num1 = num1 - num2;
        return num1;
}

int times( int num1, int num2) {
        num1 = num1 * num2;
        return num1;
}

int divide( int num1, int num2) {
        num1 = num1 / num2;
        return num1;
}
// This is to declare the calculations
void flush_input(){
    int ch;
while ((ch = getchar()) != '\n' && ch != EOF); }
// This is to flush the scanf values
// Kudos to Huw Collingbourne, Udemy Teacher
int main(int argc, char **argv) {
        char c;
        char f;
        int n1;
        int n2;
        int total;

        // n1 = ' ';
        // n2 = ' ';

sayHello();

do { 
    c = ' ';
    printf("Insert the type of Calculation you want to make:\n");
    printf("A(d)dition, Subs(t)raction, Mu(l)tiplication, Di(v)ision: ");
        c = getchar();
if(c == 'd') {
    printf("\nInsert the first number:");
    scanf("%d", &n1);
    printf("Insert the second number:");
    scanf("%d", &n2);
    total = add( n1, n2 );
    printf("%d plus %d equals to %d\n", n1, n2, total );
    flush_input(); } else { 
        if( c == 't') {
        printf("insert the base number:");
        scanf("%d", &n1);
        printf("Insert the subtracting number:");
        scanf("%d", &n2);
        total = minus( n1, n2 );
        printf("The difference between %d and %d is %d\n", n1, n2, total );
        flush_input(); } else {
            if( c == 'l') {
            printf("insert the first number:");
            scanf("%d", &n1);
            printf("Insert second number:");
            scanf("%d", &n2);
            total = times( n1, n2 );
            printf("%d times %d equals %d\n", n1, n2, total );
            flush_input(); } else {
                if( c == 'v') {
                printf("insert the first number:");
                scanf("%d", &n1);
                printf("Insert second number:");
                scanf("%d", &n2);
                total = divide( n1, n2 );
                printf("%d divided by %d equals %d\n", n1, n2, total );
                flush_input();
                } else {
        printf("I couln't understand the instruction\n Reseting program\n");
                } 
            }
        }
    }
        f = ' ';
        printf("\nDo you wish to make another calculation?\n");

            printf("Choose (y)es or (n)ot: ");
            f = getchar();
            // scanf("%c", &c);
            getchar();
        } while( f != 'n' ); 
        printf("\nThat's all folks!\n");
    return 0;
}
#include <stdio.h>
#include <stdlib.h>


//declaration of function
float cal (float a, float b, char o);


int main(int argc, char *argv[]) 
{
//  declaration of variable
    float num1,num2;
    int inum1,inum2;
    char  o;
    //initialization of variable
    num1=0;
    num2=0;

//input
    printf("Enter 1st number\n");
    scanf("%f",&num1);
//input
printf("operator\n");
    scanf(" %c", &o);

//input 
printf("Enter 2nd number\n");   
    scanf(" %f", &num2);

    inum1=num1;
    inum2=num2;


        if(cal(num1,num2,o)==0)
        {
            printf("Math Error");
        }
        if(cal(num1,num2,o)==1)
        {
            printf("%d",inum1%inum2);
        }
        else
        printf("%.3f\n",cal(num1,num2,o));




    return 0;
}

//definening function

float cal (float a, float b, char o)
{


        if (o=='+')
        return a+b;

        if (o=='-')
        return a-b;
        if (o=='*')
        return a*b;
        if (o=='%')
        return 1;
        if (o=='/')
        if (b!=0)
        return a/b;
        if (b==0)
        return 0;


}