Switch语句总是包括case和default

当我编译这个程序时,它输出相应的开关盒和默认的标签内容,它唯一没有打印出来的值是1月,任何帮助都会很棒!

样本输入:4

样本输出:

四月错误

虽然我可以让程序更好,但我需要以这种特定的方式。

while (month != EOF) { switch (month) { case 49: month2 = getchar(); switch (month2) { case 10: printf("January \n"); break; case 48: printf("October \n"); break; case 49: printf("November \n"); break; case 50: printf("December \n"); break; } break; case 50: printf("February \n"); break; case 51: printf("March \n"); break; case 52: printf("April \n"); break; case 53: printf("May \n"); break; case 54: printf("June \n"); break; case 55: printf("July \n"); break; case 56: printf("August \n"); break; case 57: printf("Septembe \n"); break; default: printf("Error \n"); } month = getchar(); } system("PAUSE"); return (0); 

}

你需要一个额外的盒子来处理你在终端输入时产生的迷路’\ n’。 如果您输入1,那么1月应该可行

编辑:其实我只是在Linux上测试它并且它完美无缺,但在Windows上可能会有一些细微差别。

 while (month != EOF) { switch (month) { case 49: month2 = getchar(); switch (month2) { case 10: printf("January \n"); break; case 48: printf("October \n"); break; case 49: printf("November \n"); break; case 50: printf("December \n"); break; } break; case 50: printf("February \n"); break; case 51: printf("March \n"); break; case 52: printf("April \n"); break; case 53: printf("May \n"); break; case 54: printf("June \n"); break; case 55: printf("July \n"); break; case 56: printf("August \n"); break; case 57: printf("Septembe \n"); break; // Filter out stray \n case '\n': break; default: printf("Error \n"); } month = getchar(); } system("PAUSE"); return (0);