#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
здесь лучший выбор. Как вы думаете, чего можно достичь с помощью afor
-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 Пользователь может захотеть узнать, сколько раз выполнялся цикл. Я думаю, это будет необходимо для других его утверждений.