---------- Program ---------------------- 1: #include <stdio.h> 2: 3: int main(void); 4: 5: int main(void) 6: { 7: char a[50], b[3]; <== 文字列型の定義 8: int c; 9: 10: printf("What's your name?\n"); 11: gets(a); 12: printf("Hello, Mr. or Ms. %s! \nHow old are you ?\n",a); 13: gets(b); 14: printf("Age of %s is an almost adult. You are not a child.\n", b); 15: c = atoi(b); 16: printf("After graduating, you supposed to be %d or %d years old.\n", c + 4, c + 5 ); <== 一行で続けて書く 17: 18: } ----------- Program END ----------------- コンパイルの時に"warning"が表示されるかも知れません。 "error"でなけれれば、ここでは気にしなくて結構です。 以下、実行結果です。 ---------- 実行結果 ---------------------- [nisimiya@dhcp32 C_Exercise]$ ./ex713_9 What's your name? Nobuo Nishimiya Hello, Mr. or Ms. Nobuo Nishimiya! How old are you ? 19 Age of 19 is an almost adult. You are not a child. After graduating, you supposed to be 23 or 24 years old. ---------- 実行結果 ここまで -------------
プログラムの意味を解説します。 7行目の''char a[50]''と言うのは、「文字列型」変数です。``char''は ``charcter''の事です。 文字列には長さが必要です。 ``[50]''というのは、``長さ50文字までの変数''を表わします。 もし、あなたの氏名が50文字で入りきらない場合は、このままではエラーになり ます。 もう少し増やしてください。 (実際には、一行分という意味で、256に設定することが多いようです。) 年齢はガンダルフ(111歳?)でも3文字あれば良いでしょう。
11行目の ``gets(a)''と言うのが、キーボード入力を表わします。入力した文字 列は、文字変数``a''に代入されます。
15行目は何か? ``c=atoi(b)''というのは、文字列変数 ``b''を整数変数に変換後、``c''に代入し ているところです。 人間にとっては ``19''と表示されても、整数なのか文字列なのか判断できませ んが、コンピュータは判断しています。もしこの型変換を行わないと、 16行目の ``c+4''でエラーになります。 16行目では``c''を整数として計算してます。
---------- 実行例 ---------------------- [nisimiya@dhcp32 C_Exercise]$ ./ex713_11 Please input first number? 5 The first number is 5 Please input second number? 2 The second number is 2 1st plus 2nd equals 7.000000 1st minus 2nd equals 3.000000 1st times 2nd equals 10.000000 1st devided by 2nd equals 2.500000 ---------- 実行例ここまで -------------