Una salida inesperada con una condición “if”.
Quiero escribir un programa para calcular la suma de los primeros n números naturales.
El código que he intentado:
#include<stdio.h>
void main()
{
int sum=0,i=1,n;
printf("Ingrese el número hasta donde desea imprimir la suma : ");
scanf("%d",&n);
printf("\nSUMA = ");
while(i<=n)
{
if(i<n)
{
printf("%d+",i);
}
if(i=n)
{
printf("%d",i);
}
sum=sum+i;
i++;
}
printf("\nla suma de los primeros %d números es: %d",n,sum);
return 0;
}
y el resultado esperado si n=5 es:
ingrese el número hasta donde desea imprimir la suma:
sum = 1+2+3+4+5
la suma de los primeros %d números es: 5
pero lo que obtengo es:
sum = 1+5
y el valor es 5
pero cuando uso un if else
en lugar de dos if
, funciona correctamente. {=”” printf(“%d+”,i);=”” }=”” if(i=”n)” {=”” printf(“%d”,i);=”” }=”” sum=”sum+i;” i++;=”” }=”” printf(“\nla=”” suma=”” de=”” los=”” primeros=”” %d=”” números=”” es:=”” %d”,n,sum);=”” return=”” 0;=”” }=”” ="" y="" el="" resultado="" esperado="" si="" n="5" es:=""
=”” ingrese=”” el=”” número=”” hasta=”” donde=”” desea=”” imprimir=”” la=”” suma:=”” sum=”1+2+3+4+5″ la=”” suma=”” de=”” los=”” primeros=”” %d=”” números=”” es:=”” 5=”” ="" pero="" lo="" que="" obtengo="" es:=""
=”” sum=”1+5″ y=”” el=”” valor=”” es=”” 5=”” “`=”” pero=”” cuando=”” uso=”” un=”” if="" else
=”” en=”” lugar=”” de=”” dos=”” if
,=”” funciona=””></n)
{
printf(“%d+”,i);
}
if(i=n)
{
printf(“%d”,i);
}
sum=sum+i;
i++;
}
printf(“\nla suma de los primeros %d números es: %d”,n,sum);
return 0;
}
y el resultado esperado si n=5 es:
ingrese el número hasta donde desea imprimir la suma:
sum = 1+2+3+4+5
la suma de los primeros %d números es: 5
pero lo que obtengo es:
sum = 1+5
y el valor es 5
“`
pero cuando uso un if else
en lugar de dos if
, funciona correctamente.></stdio.h>
davy.ai
Hay un error en el código. La segunda instrucción “if” debería usar el operador de comparación == en lugar del operador de asignación =, ya que está intentando verificar si i es igual a n. El código corregido se muestra a continuación:
la salida será como se espera:
la salida será como se espera:
“`
ingresa el número hasta donde quieres imprimir la suma:
5
suma = 1+2+3+4+5
la suma de los primeros 5 números es : 15
“`></stdio.h>