問題1
ソースコード
#include<stdio.h>
int main(void)
{
printf("おはよう\n");
printf("こんにちは\n");
printf("\n");
printf("こんばんは\n");
return 0;
}
「\n」を2回続けてかくということに注意です。
問題2
ソースコード
#include<stdio.h>
int main(void)
{
int a;
int b;
printf("3と5を入力してください。\n");
scanf("%d",&a);
scanf("%d",&b);
printf("和は%dです。\n",a+b);
printf("積は%dです。\n",a*b);
return 0;
}
int型の変数を二つ宣言します。
scanf関数で入力し、printf関数で出力します。
scnafは「&」を忘れないようにしましょう。
printf("3と5を入力してください。\n");
というのは、書かなくても大丈夫ですが、わかりやすくするには書いておいたほうがいいでしょう。
問題3
ソースコード
#include<stdio.h>
int main(void)
{
double a;
printf("円の半径を入力してください。\n");
scanf("%lf",&a);
printf("円の面積は%lfです。\n",a*a*3.14);
return 0;
}
double型で宣言することに注意してください。
それに伴って、scanfやprintfは「%lf」か「%f」を使うようにしましょう。
ここでは、「%lf」に統一しておきます。
問題4
ソースコード
#include<stdio.h>
int main(void)
{
double a;
printf("正方形の1辺を入力してください。\n");
scanf("%lf",&a);
printf("正方形の面積は%lfです。\n",a*a);
return 0;
}
正方形の1辺が整数とは限りませんので、double型にしておいたほうがいいと思います。
問題5
ソースコード
#include<stdio.h>
int main(void)
{
char a;
char b;
char c;
char d;
char e;
printf("一気に入力してください。\n");
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
scanf("%c",&d);
scanf("%c",&e);
printf("%c%c%c%c%c\n",a,b,c,d,e);
return 0;
}
これはわかりにくい問題だったと思います。
まだ「バイト」という概念を解説していない状態ですので、これはいま説くことができなくても大丈夫です。
一気に「hello」と入力すると出力できますが、1文字ずつ「h」「e」「l」「l」「o」と入力してしまうとうまくできないと思います。
これは、以前ちらっとやりましたが、「\0」の考え方が関係してくるのです。
char型が5つあるので、1文字の英語を「5つ」まで格納できるという意味です。
helloと一気に入力した場合
出力結果を「\0」を加えて見ると
hello\0
となります。
「\0」はまとめて1文字として扱われるので、合計で「6文字」になります。
ここで、あれっと思った方、その通りです。
「5文字しか格納できないのに6文字あったらだめじゃん?」ということで、このプログラムは出力は正しいですが、不安定なプログラムであるといえます。
c言語もなんとか出力しようと頑張ってくれているのです。
char f;などを追加するとより「安全」になると思います。
「h」「e」「l」「l」「o」と入力した場合
出力結果を「\0」を加えて表してみると
h\0e\0l\0
となります。(e\0o\0というのが続きますが、5をオーバーしています。)
6文字まではなんとか出力しようとしますが、それ以上となるともう入りきらないのですね。
結果としてこのような変な結果になってしまいます。
まとめ
最後の問題に関しては、いまはわからなくても大丈夫です。
1から4までをしっかりとできるようにしましょう。
応用問題+α 解答と解説
問題1+α 上底と下底と高さを入力し、台形の面積を出力せよ(結果が小数になることも配慮して作成すること)
#include<stdio.h>
int main(void)
{
double zyoutei;
double katei;
double takasa;
printf("上底を入力してください。\n");
scanf("%lf",&zyoutei);
printf("下底を入力してください。\n");
scanf("%lf",&katei);
printf("高さを入力してください。\n");
scanf("%lf",&takasa);
printf("台形の面積は%lfです。\n", ((zyoutei+katei)*takasa)/2 );
return 0;
}
変数の名前は自分で作ることができるので、ここでは上底は「」下底は「」高さは「」としました。
文字で表すと
((上底+下底)*高さ)/2)
という感じです。
ここでもわかりやすいように「上底を入力してください」などを書いた方がいいと思います。