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、
このコードをリファクタリングするとしたらどのようにすれば良いでしょうか?書くと大変だと思うのでヒントだけでも結構です。
よろしくお願いいたします。
タイトルだけ見て想像したのと実際の質問内容が
全然違うので、面食らいました。
下記の様なのを想像した。
#include<stdio.h>
int
main(void)
{
int hoge;
int fuga;
for(int i = 0; i <= 9; i++){
hoge = ( 'a' - '0' );
fuga = ( '0' + i );
printf( "%c\n",(hoge + fuga) );
}
}
回答4件
あなたの回答
tips
プレビュー