#c
#c
Вопрос:
В этом коде C я пытаюсь присвоить и распечатать числа в соответствии с номером месяца
НАПРИМЕР, ввод = 1, результат = январь.
Я искал в Интернете, кажется, я не могу найти ответ на этот вопрос, я попытался присвоить числа способом {} ,
{
1 = "January" ;
}
Что-то вроде приведенного выше, но это не работает, могу ли я узнать, что я сделал здесь неправильно.
Приведенный ниже код решает проблему, но я знаю, что его считают плохим кодом Спасибо!
#include <stdio.h>
int main()
{
int y ;
printf("enter a value :" , y);
scanf("%d" , amp;y);
if (y>=1 || y<=12)
{
if (y == 1 )
{printf("January");}
if (y == 2 )
{printf("February");}
if (y == 3 )
{printf("March");}
if (y == 4 )
{printf("April");}
if (y == 5 )
{printf("May");}
if (y == 6 )
{printf("June");}
if (y == 7 )
{printf("July");}
if (y == 8 )
{printf("August");}
if (y == 9 )
{printf("September");}
if (y == 10 )
{printf("October");}
if (y == 11 )
{printf("November");}
if (y == 12 )
{printf("December");}
}
return 0 ;
}
Комментарии:
1. ??
January = 1;
?? Вы не можете ничего присвоить целочисленному литералу, например1
, это не l-значение. Если вы хотите создавать константы, почему бы не использовать глобальныйenum
? , напримерenum { January, February, March, April, May, June, July, August, September, October, November, December };
, для создания именованных константJanuary
—December
со значениями1
—12
. Затем вы можетеswitch (y) case : January puts ("January"); break; case : February ...
2. Просто в качестве примечания: небезопасно использовать
scanf
без проверки возвращаемого значения. Смотрите эту страницу для получения дополнительной информации: руководство для начинающих по scanf()3. Необходимо
enum
будет начатьenum { January = 1, February, ... }
, иначе значение, связанное сJanuary
, по умолчанию0
будет равно .
Ответ №1:
Вы могли бы попробовать сохранить их в массиве, подобном этому:
#include <stdio.h>
const char *months[12] = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
int main()
{
int y;
printf("enter a value :");
scanf("%d" , amp;y);
if (y>=1 amp;amp; y<=12)
{
printf("%s", months[y-1]);
}
return 0;
}