Мне нравятся основания C: -scanf ("% d", int) вчера, а не сегодня. Что происходит?
В этой программе есть две итерации scanf(). Первый полностью функциональный. Второй внешний вид ничего не делает и вместо этого выходит из программы и возвращается к стандартной строке командной строки.
Кроме того, мой второй цикл печатает только первые 4 цифры вместо 5.
Вот код:
int main() {
int i;
int iNum[4]
int iMenu = 0;
printf("\n\n\tPlease enter five numbers: ");
for (i = 0; i < 4; i++) {
scanf("%d ", &iNum[i]);
}
printf("\n\tThank you. Here are your numbers: \n\t");
for (i = 0; i < 4; i++) {
printf("%d", iNum[i]);
}
printf("\n\tMenu:");
printf("\n1\tSort your numbers ascending.");
printf("\n2\tSort your numbers descending.");
printf("\n3\tQuit program");
printf("\n\nWhat would you like to do?\n\tEnter your option here: ");
scanf(" %d", &iMenu);
switch (iMenu) {
case 1:
printf("\nCase1testPrint");
sortAsc();
break;
case 2:
printf("\nCase2testPrint");
sortDesc();
break;
. . .//rest of code }
Как только программа достигает второго Scanf(), программа заканчивается и возвращается в командную строку.
Это непонятно, и я пробовал много вариантов того, что может быть неправильным. Пожалуйста, предоставьте то, что вы можете.
Вот как это выглядит, если я запускаю программу. Обратите внимание на мой вход «1» появляется в командной строке вместо программы:
C:\Users\Cortland\Documents\C projects>gcc arraysort.c
C:\Users\Cortland\Documents\C projects>a
Please enter five numbers: 3
6
5
4
5
Thank you. Here are your numbers:
3 6 5 4
Menu:
1 Sort your numbers ascending.
2 Sort your numbers descending.
3 Quit program
What would you like to do?
Enter your option here:
C:\Users\Cortland\Documents\C projects>1
Ваш текст запрашивает у человека пять цифр, но ваш массив имеет место только для 4, и ваш код на самом деле получает 4 номера. Но ваш вывод, похоже, показывает, что он запрашивает пять номеров. Что-то здесь не соответствует. –
'for (i = 0; i <4; i ++) {' будет перебирать 0, 1, 2, 3. почему бы не 4? потому что '<' не включает '=' – fukanchik
Это не ваш реальный код. В объявлении 'iNum' есть точка с запятой. (Вам также не хватает '#include', но компилятор lax может позволить вам скомпилировать его без него.) Если вы не скопируете и не вставьте фактический код, который обнаруживает проблему, мы не можем различать ошибки в вашем фактическом коде и ошибки, введенные вами при их суммировании. –