Das folgende C-Programm gibt mir nur Ausgabe für Addition (+), Differenz (-), Multiplikation (*). Wenn ich jedoch versuche, Division (/) und Modul (%) zu verwenden, schließt sich das Programm einfach ohne Fehler. Hilf mir, ich bin ein Neuling in der C-Programmierung.

//A simple calculator.

#include<stdio.h>
#include<conio.h>
void main()
{
int a, b, sum, diff, rem, multi;
float div;
char character;
clrscr();
printf("Choose the character you want to use(+, -, *, /, %): ");
scanf("%c", &character);
switch(character)
{
case '+': //will be used for addition.
    printf("Enter the first and second number: ");
    scanf("%d %d", &a, &b);
    sum = a+b;
    printf("The sum of the %d and %d is %d", a, b, sum);
    break;
case '-': //will be used for difference.
    printf("Enter the first and second number: ");
    scanf("%d %d", &a, &b);
    diff = a-b;
    printf("The difference between %d and %d is %d", a, b, diff);
    break;
case '%': //will be used for modulus.
    printf("Enter the first and second number: ");
    scanf("%f %f", &a, &b);
    rem = a%b;
    printf("The remainder of %f and %f is %f", a, b, rem);
    break;
case '*': //will be used for product of 2 no.
    printf("Enter the first and second number: ");
    scanf("%d %d", &a, &b);
    multi = a*b;
    printf("The multiplication of %d and %d is %d", a, b, multi);
    break;
case '/': //will be used for the division.
    printf("Enter the first and second number: ");
    scanf("%f %f", &a, &b);
    div = a/b;
    printf("The division of %f and %f is %f", a, b, div);
    break;
default:
    printf("Error! character please retry");
}
getch();
}
c
1
GAMING INC 19 Jän. 2019 im 12:31

3 Antworten

Beste Antwort

Sie verwenden den Formatbezeichner %f für int Variablen in den Fällen / und %.

scanf("%f %f", &a, &b);

So wird undefiniertes Verhalten aufgerufen.

Ändern Sie es wie folgt.

scanf("%d %d", &a, &b);

%f wird zum Lesen der Float-Variablen verwendet.


Wenn Sie ein Float-Ergebnis für die Division wünschen, müssen Sie das Argument für Float umwandeln, anstatt es als float zu lesen.

  div = (float)a/b;
0
kiran Biradar 19 Jän. 2019 im 09:41

Bei Verwendung von / und % verwenden

scanf("%d %d", &a, &b);

Anstatt von

scanf("%f %f", &a, &b);

Weil% f für Float-Vars verwendet wird, während im Fall von / und% % d verwendet wird

0
Talha Israr 19 Jän. 2019 im 09:42

Sie verwenden falsche Formate. Nachdem ich -Wall in gcc aktiviert und die Warnungen behoben habe, erhalte ich ein funktionierendes Programm. Sie vermissen auch die \n in Ihrer Antwort printf()

#include <stdio.h>

int main(int argc, char **argv)
{
  int a, b, sum, diff, rem, multi;
  float div;
  char character;
  printf("Choose the character you want to use(+, -, *, /, %%): ");
  scanf("%c", &character);
  switch(character)
    {
    case '+': //will be used for addition.
      printf("Enter the first and second number: ");
      scanf("%d %d", &a, &b);
      sum = a+b;
      printf("The sum of the %d and %d is %d\n", a, b, sum);
      break;
    case '-': //will be used for difference.
      printf("Enter the first and second number: ");
      scanf("%d %d", &a, &b);
      diff = a-b;
      printf("The difference between %d and %d is %d\n", a, b, diff);
      break;
    case '%': //will be used for modulus.
      printf("Enter the first and second number: ");
      scanf("%d %d", &a, &b);
      rem = a%b;
      printf("The remainder of %d and %d is %d\n", a, b, rem);
      break;
    case '*': //will be used for product of 2 no.
      printf("Enter the first and second number: ");
      scanf("%d %d", &a, &b);
      multi = a*b;
      printf("The multiplication of %d and %d is %d\n", a, b, multi);
      break;
    case '/': //will be used for the division.
      printf("Enter the first and second number: ");
      scanf("%d %d", &a, &b);
      div = a/b;
      printf("The division of %d and %d is %f\n", a, b, div);
      break;
    default:
      printf("Error! character please retry");
    }
}

Testausgabe:

$ ./dummy
Choose the character you want to use(+, -, *, /, %): %
Enter the first and second number: 5 2
The remainder of 5 and 2 is 1
$
0
Stefan Becker 19 Jän. 2019 im 09:44