#c
#c
Вопрос:
Например, если я введу: "123456-7"
. Вывод при первом операторе печати будет: "123456-7"
и при 2-м операторе печати это будет "7"
. Что правильно.
Но в любой момент после перерыва, если я снова напечатаю массив, оператор печати будет ошибочным в последней цифре. Это будет выглядеть так: "123456-1"
и второй будет выглядеть так "1"
.
#include <stdio.h>
int main()
{
int lotoNumbers[6];
int ticketNumbers[6];
char option;
while(option != 'C')
{
printf("Your option:");
scanf(" %c", amp;option);
switch(option)
{
case 'W': printf("Please enter todays winning ticket number:");
scanf("-", amp;lotoNumbers[0], amp;lotoNumbers[1], amp;lotoNumbers[2], amp;lotoNumbers[3], amp;lotoNumbers[4], amp;lotoNumbers[5], amp;lotoNumbers[6]);
printf("Your loto ticket number is: %d%d%d%d%d%d-%dn", lotoNumbers[0], lotoNumbers[1], lotoNumbers[2], lotoNumbers[3], lotoNumbers[4], lotoNumbers[5], lotoNumbers[6]);
printf("----The following numbers matched! %dn", lotoNumbers[6]);
break;
case 'T': printf("Please enter your ticket number:");
scanf("-", amp;ticketNumbers[0],amp;ticketNumbers[1],amp;ticketNumbers[2],amp;ticketNumbers[3],amp;ticketNumbers[4],amp;ticketNumbers[5],amp;ticketNumbers[6]);
printf("Your loto ticket number is: %d%d%d%d%d%d-%dn", ticketNumbers[0], ticketNumbers[1], ticketNumbers[2], ticketNumbers[3], ticketNumbers[4], ticketNumbers[5], ticketNumbers[6]);
break;
case 'C': printf("Computing....n");
break;
case 'Q': printf("The program will now quit. Thank you for playing LOTO 649.n");
return (0);
break;
default: printf("You entered an invalid option. The program will now terminate.n");
return (0);
}
}
printf("The numbers are:%d%d%d%d%d%d-%dn", lotoNumbers[0], lotoNumbers[1], lotoNumbers[2], lotoNumbers[3], lotoNumbers[4], lotoNumbers[5], lotoNumbers[6]);
printf("The number is: %dn", lotoNumbers[6]);
return 0;
}
Комментарии:
1. нам нужен пример кода, который можно скомпилировать. избавьтесь от всего ненужного материала.
2.Хорошая идея проверить результат
scanf()
перед использованиемlotoNumbers
. Убедитесь, что это 7.3. meta.stackexchange.com/questions/94807/…
4. Отмеченное будет сделано в будущем. Извините за это.
5. Это четвертый вопрос, который вы задали, который сводится к неправильному использованию индексов массива. Вы сэкономите много времени, если прочитаете несколько онлайн-руководств по массивам и индексации.
Ответ №1:
Вы не выделили достаточно места для своих массивов. Число, используемое для выделения места для массива, — это количество записей в массиве, а не последний номер индекса. Индекс 6 является 7-м элементом и находится за концом массива. Значение lotoNumbers[6] не определено и может изменяться случайным образом, потому что программа использует эту память для чего-то другого.
int lotoNumbers[6];
int ticketNumbers[6];
Это 6 должно быть 7.