Я нахожусь во вводном классе C, и у меня проблема с вводом данных. Я нахожусь в середине упражнения по подпрограммам, и мой код кажется правильным, но по какой-то причине один вопрос в программе обходит стороной, и я не могу понять это.
1) Программа читает номер книги ISBN в виде 10 отдельных символов (отметка)
2) Программа читает цену книги (чек)
3) Программа показывает количество учеников в классе (чек)
4) программа спрашивает, является ли книга более новой или более старой редакцией (не работает !!)
5) Программа спрашивает, требуется ли книга или предлагается (проверить)
Я использую char для вопросов, касающихся новых или старых, а также требуемых или предлагаемых, как мы полагаем, dto, чтобы использовать то, что мы уже изучили.
Я не могу понять, почему один из вопросов обходит стороной.
Вот мой вывод:
Enter ISBN: 1231231231
Enter list price per copy: 54.99
Enter expected class enrollment: 45
Enter N for new edition or O for Older edition:
Enter R for Required or S for Suggested: R
ISBN: 1-23-123123-1
List Price: 54.99
Expected enrollment: 45
Edition, New or Old:
Importance, Required or Suggested: R
Как видите, scanf для 4-го вопроса игнорируется.
Вот код, который я написал до сих пор. Любая помощь с благодарностью.
Спасибо.
#include <stdio.h>
#define WHOLESALE 80
void getInput(char* a, char* b, char* c, char* d, char* e,
char* f, char* g, char* h, char* i, char* j,
float* listPrice, int* numStudents, char* edition, char* importance);
void calc();
void calcBooks();
void calcProfit();
void output();
int main (void) {
// Local declarations
float listPrice;
int numStudents;
char edition;
char importance;
// ISBN char variables:
char a; // 1
char b; // 2
char c; // 3
char d; // 4
char e; // 5
char f; // 6
char g; // 7
char h; // 8
char i; // 9
char j; // 10
// Get input
getInput(&a, &b, &c, &d, &e, &f, &g, &h, &i, &j, &listPrice,
&numStudents, &edition, &importance);
// Calculate
// Output
printf("\nISBN: %c-%c%c-%c%c%c%c%c%c-%c\n", a, b, c, d, e, f, g, h, i, j); // ISBN output
printf("\nList Price: %6.2f", listPrice);
printf("\nExpected enrollment: %d", numStudents);
printf("\nEdition, New or Old: %c", edition);
printf("\nImportance, Required or Suggested: %c", importance);
return 0;
} // main
/* =============== getInput ==========================================
Gets input from the user.
Pre: addresses for ISBN (in seperate characters)
and for listPrice, numStudents, importance, and edition.
Post: Passes back values thru the addresses.
*/
void getInput(char* a, char* b, char* c, char* d, char* e,
char* f, char* g, char* h, char* i, char* j,
float* listPrice, int* numStudents, char* edition, char* importance)
{
printf("\nEnter ISBN: ");
scanf("%c%c%c%c%c%c%c%c%c%c", a,b,c,d,e,f,g,h,i,j);
printf("\nEnter list price per copy: ");
scanf("%f", listPrice);
printf("\nEnter expected class enrollment: ");
scanf("%d", numStudents);
printf("\nEnter N for new edition or O for Older edition: ");
scanf("%c", edition);
printf("\nEnter R for Required or S for Suggested: ");
scanf("%c", importance);
return;
} // getInput