c
1#include <stdio.h> 2 3int main(void) 4{ 5 int month; 6 char a[100] = "元日、成人の日"; 7 char b[100] = "建国記念の日"; 8 char c[100] = "春分の日"; 9 char d[100] = "昭和の日"; 10 char e[100] = "憲法記念日、みどりの日、こどもの日"; 11 char f[100] = "海の日"; 12 char g[100] = "敬老の日、秋分の日"; 13 char h[100] = "体育の日"; 14 char i[100] = "文化の日、勤労感謝の日"; 15 char j[100] = "天皇誕生日"; 16 17 printf("what is Number of month : "); scanf("%d", &month); 18 19 switch (month) { 20 case 1 : 21 printf("%s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n", a,b,c,d,e,f,g,h,i,j); break; 22 case 2 : 23 printf("%s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n", b,c,d,e,f,g,h,i,j); break; 24 case 3 : 25 printf("%s\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n", c,d,e,f,g,h,i,j); break; 26 case 4 : 27 printf("%s\n %s\n %s\n %s\n %s\n %s\n %s\n", d,e,f,g,h,i,j); break; 28 case 5 : 29 printf("%s\n %s\n %s\n %s\n %s\n %s\n", e,f,g,h,i,j); break; 30 case 6 : 31 printf("%s\n %s\n %s\n %s\n %s\n", f,g,h,i,j); break; 32 case 7 : 33 printf("%s\n %s\n %s\n %s\n %s\n", f,g,h,i,j); break; 34 case 8 : 35 printf("%s\n %s\n %s\n %s\n", g,h,i,j); break; 36 case 9 : 37 printf("%s\n %s\n %s\n %s\n", g,h,i,j); break; 38 case 10 : 39 printf("%s\n %s\n %s\n", h,i,j); break; 40 case 11 : 41 printf("%s\n %s\n", i,j); break; 42 case 12 : 43 printf("%s\n", j); break; 44 } 45 return 0; 46} 47
プログラミング初心者です。
このコードは入力された月から年末までの祝日を出力する練習なのですが、かなり無駄が多いとお思います。可読性もよくないです。
アルファベットをインクリメントできればfor文でもう少しすっきりすると思うのですが。。。
質問1、
アルファベットをインクリメントする方法はありますか?
質問2、
このコードをリファクタリングするとしたらどのようにすれば良いでしょうか?書くと大変だと思うのでヒントだけでも結構です。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー