Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

366
Views
¿Por qué mi programa no funciona cuando cambio el orden de las entradas?

Empecé a aprender C y traté de codificar este programa matemático usando declaraciones de cambio. El programa se ejecuta y funciona bien cuando escaneo primero al operador y luego escaneo los números. Pero si cambio el orden de las funciones scanf para tomar primero los números y luego los operadores, el programa toma el número pero luego no toma la segunda entrada (el operador) y solo imprime el valor predeterminado (entrada no válida). ¿Por qué está pasando esto?

He proporcionado el código (si ejecuto este código, el problema ocurre con el programa simplemente tomando los números y no tomando los operadores. Pero si se invierte el orden, funciona).

 #include <stdio.h> int main() { float a, b, result; char operator; printf("Enter 2 numbers:"); scanf("%f %f", &a, &b); printf("Choose a math operator (+, -, *, /):"); scanf("%c", &operator); switch (operator) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; default: printf("\nInvalid operator"); return -1; } printf("%f", result); return 0; }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

La cadena de formato "%c" leerá el carácter de nueva línea de la primera línea de entrada. En cambio, lo que desea es " %c" , que omitirá los espacios en blanco iniciales, así que reemplace la línea

 scanf("%c", &operator);

con

 scanf(" %c", &operator);

Ver también https://pubs.opengroup.org/onlinepubs/9699919799/

Una directiva compuesta por uno o más caracteres de espacio en blanco se ejecutará leyendo la entrada hasta que no se puedan leer más entradas válidas, o hasta el primer byte que no sea un carácter de espacio en blanco, que permanezca sin leer.

over 4 years ago · Santiago Trujillo Report

0

necesitas cambiar

 scanf("%c", &operator);

para

 scanf("%s", &operator);

se ejecutará

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!