#c #if-statement #assignment-operator #comparison-operators
#c #если-заявление #назначение-оператор #операторы сравнения
Вопрос:
Я хочу создать программу для вычисления суммы первых n натуральных чисел
Код, который я пробовал:
#includelt;stdio.hgt; void main() { int sum=0,i=1,n; printf("Enter the number upto where you want to print add : "); scanf("%d",amp;n); printf("nSUM = "); while(ilt;=n) { if(ilt;n) { printf("%d ",i); } if(i=n) { printf("%d",i); } sum=sum i; i ; } printf("nThe sum of the first %d numbers is : %d",n,sum); return 0; }
И ожидаемый результат будет, если n=5
Enter the number upto where you wnat to print add : sum =1 2 3 4 5 The sum of the first %d numbers is : 5
Но то, что я получаю, это
sum=1 5 and the value is 5
Но когда я использую if else
вместо двух if
, это работает
Комментарии:
1. Пожалуйста, включите или включите свои предупреждения в компиляторе. Компилятор должен выдать предупреждение о подозрительном использовании
=
в состоянии.
Ответ №1:
Проблема в вашем утверждении if :
if(i=n)
Один = — это назначение; то, что вы хотите, — это сравнение с==, так что :
if(i==n)
Ответ №2:
Вы использовали i=n вместо i==n в операторе if.
Ответ №3:
Вы используете оператор присваивания =
вместо оператора сравнения ==
в выражении в этом операторе if
if(i=n) { printf("%d",i); }
Тебе нужно написать
if( i == n) { printf("%d",i); }
Также лучше использовать цикл for вместо цикла while.
Например
for ( int i = 0; i lt; n; ) { printf( i == n ? "%d" : "%d ", i ); sum = i; }
Переменная i
используется только в цикле. Поэтому он должен быть объявлен в области, в которой он используется.
Всегда старайтесь объявлять переменные в минимальных областях, в которых они используются. Это сделает ваши программы более удобочитаемыми.
Обратите внимание, что в соответствии со стандартом C функция main без параметров должна быть объявлена как
int main( void )