#arrays #c #fill
Вопрос:
Я могу понять первое решение.Но во втором решении я запутался в том scanf
, как принять 4 значения одновременно и применить их к for
циклу.
//first solution
#include <stdio.h>
int main() {
int pin[4],i;
for(i=0; i<4; i ){
printf("Give value: ");
scanf("%d", amp;pin[i]);
}
return 0;
}
//second solution
#include <stdio.h>
int main() {
int pin[4],i;
printf("Give 4 values: ");
for(i=0; i<4; i ){
scanf("%d", amp;pin[i]);
}
return 0;
}
Комментарии:
1. Что сбивает с толку и в чем разница? И, пожалуйста, исправьте форматирование.
2. Попробуйте ответить
"42 -1 2021 0<ENTER>"
на 1-й пример (после первой печати).3. Хорошо, теперь я вижу, что решения 1 и 2-это одно и то же. Но меня смущает то, что я могу дать 4 значения одновременно . Для меня это не имеет смысла, потому что scanf находится внутри цикла for, и его нужно выполнить 4 раза.
Ответ №1:
Разница только в том, что в первом примере есть функция printf, которая запрашивает входные значения на каждой итерации цикла, в то время как в первом примере перед циклом есть функция printf (только одна).
Операция, которая имеет значение (scanf), точно такая же в двух примерах.
Ответ №2:
scanf
Запятая не считывает четыре значения одновременно.
Это пример цикла: фрагмент кода, который выполняет одно и то же несколько раз.
for(i=0; i<4; i ){
scanf("%d", amp;pin[i]);
}
Что for
делает оператор, так это сначала инициализирует i
до нуля, затем проверяет, что i
меньше четырех, а затем выполняет код в фигурных скобках. Это scanf
оператор, который пытается прочитать целое число по адресу, указанному amp;pin[i]
. Так i
как равно нулю, это означает, что адрес pin[0]
, который является первым элементом массива pin
.
После scanf
выполнения (и независимо от того, удастся ли это , что вы, возможно, захотите изучить) for
оператор увеличивает значение i
, проверяет, что оно все еще меньше четырех, и снова выполняет блок кода между фигурными скобками. На этот раз scanf
заявление пытается прочитать pin[1]
.
Цикл выполняется еще два раза, потенциально сохраняя целые числа в pin[2]
и pin[3]
перед завершением сразу после увеличения i
до 4.