Как преобразовать цикл while в цикл for? C

#c #for-loop #while-loop

#c #for-цикл #цикл while

Вопрос:

Я проверил решения проблем, похожих на мои, но они не сработали в моей ситуации. Я хочу, чтобы эта программа использовала цикл for вместо цикла while.

 #include <stdio.h>

#define SENTINEL -99

int main(void) {
  int sum = 0, number;

  printf("Enter first number (or %d to quit)> ", SENTINEL);
  scanf_s("%d", amp;number);
  while (number != SENTINEL) {
    sum  = number;
    printf("Enter next number (%d to quit)> ", SENTINEL);
    scanf_s("%d", amp;number);
  }
  printf("nThe sum of 5, 52, 31, and 65 is %dn", sum);

  return (0);
}
  

Комментарии:

1. while (<whatever>) ==> for( ; <whatever> ; )

2. О. Т.: Ваш код не похож на идиоматический C . Я не вижу ничего, что не было бы принято стандартным компилятором C, но я вижу много вещей, которые можно / нужно было бы сделать по-другому в C .

3. Imo a while здесь лучший выбор. Как вы думаете, чего можно достичь с помощью a for -loop?

4. Из любопытства: откуда вы знаете, что пользователь будет вводить 5, 52, 31, and 65 ? 😉

5. Лично я бы улучшил структуру while цикла и устранил дублирование кода (например, запрашивая пользователя и считывая ввод в двух разных местах), прежде чем даже рассматривать превращение while цикла в for цикл. Но, вообще говоря, вы не можете ожидать здесь слишком много ответов — как правило, единственный раз, когда у кого-то есть явный запрос на превращение while цикла в какой-то другой цикл, это домашнее задание — и любой, у кого есть опыт, знает, что вы узнаете больше, выяснив, как это сделать для себя, чем с помощьювыпрашивать и получать решения с ложечки.

Ответ №1:

 #include <stdio.h>
#include <vector>

#define SENTINEL -99

int 
main(void)
{
int sum = 0, number;
    std::vector<int> v;
    
printf("Enter first number (or %d to quit)> ", SENTINEL);
scanf_s("%d", amp;number);
for(int i = 0; number != SENTINEL; i  ) {
    sum  = number;
    v.push_back(number);
    printf("Enter next number (%d to quit)> ", SENTINEL);
    scanf_s("%d", amp;number);
}
    for(int n : v) {
        printf("%d, ", n);
    }
printf(" = %dn", sum);
return (0);
}

  

Вы использовали тег C , но ваш код использует библиотеку C.

Вы можете скомпилировать с таким параметром: g code.cpp

Комментарии:

1. Почему вы вводите неиспользуемую переменную int i = 0 ?

2. @mch Пользователь может захотеть узнать, сколько раз выполнялся цикл. Я думаю, это будет необходимо для других его утверждений.