論理演算子
コンピュータサイエンス入門でやったやつ。C言語でコードを書く場合は以下の記号を使う。
||(論理和)
AまたはB。
&&(論理積)
AかつB。
!(論理否定)
Aではない。
条件演算子
「変数 = (条件式) ? 条件が真のときに入れる値 : 条件が偽のときに入れる値 ;」で、if文を使わなくても場合分けをすることができる。
大人と子どもで料金が異なる場合のコード
ロープウェイの運賃は12歳未満なら子ども料金が適用されるというケース。
#include
int main(void)
{
int age,fee; //※feeは運賃という意味の英単語。
printf("年齢: ");
scanf("%d",&age);
fee = (age<12) ? 300:600; //12歳未満の運賃は300円、それ以外は600円という条件式。
printf("\nロープウェイ運賃は%d円です。\n",fee);
return 0;
}
携帯電話のパケット代を求めるコード
基本料は1パケット0.05円なのだが、上限額が月5000円までと決まっている場合。
#include
int main(void)
{
double packet,fee;
printf("パケット数: ");
scanf("%lf",&packet);
fee = 0.05 * packet;
fee = (fee>5000.0) ? 5000.0 : fee; //5000円以上の場合は請求額5000円で変わらず、5000円未満は0.05×パケット数で求めるという条件演算子。
printf("\n通信料は%.0f円です。\n",fee);
return 0;
}
たくさん買うとお得になるコード
リンゴの値段は1個50円だが、4個以上買うと1割引、7個以上は2割引になるという設定。
#include
int main(void)
{
int n,fee;
printf("リンゴの個数: ");
scanf("%d",&n);
fee = 50 * n;
fee = n<=3 ? fee:(4<=n && n<=6? fee*9/10 : fee*8/10); //1割引は(本来の料金×9/10)として計算。
printf("\n料金は%d円です。\n",fee);
return 0;
}
for文
繰り返し処理を行うための構文。
文法的には、for(初期化の式1; 繰り返すかどうかを判断する式2; 継続処理の式3) {繰り返したい処理;} という形になる。イメージとしては高校数学に出てくるシグマとかに似ている。
Hello World!を50回繰り返すコード
コピペを50回分繰り返すのも大変なのでfor文を用いる。
しかし、このHello World!ってなんなんだろうな。コンピュータの授業だと、いつも最初にやらさせられるけど、「キミもこのコンピュータの世界に生まれたんだね、おめでとう」、みたいななんかバカにされてる感じがして、別にほかの言葉でもいいと思うんだけどね。ハローワールドくらいわかるよバカやろうとか。
#include
int main(void)
{
int i = 1;
for(i = 1; i <=50; i++)
//初項は1で(i = 1)、そのあと1ずつ増やしていって(i++)、iが50まで行ったらおしまい(i <=50)という意味。
{printf("Hello World!\n");} //繰り返したい処理
return 0;
}
身長から適正体重を3回繰り返して調べるコード
課題の意味がよくわからなくて手こずったやつ。
適正体重(kg)は、身長(m)×身長(m)×22なので、式さえ定義すればいい。
ややこしいのは、結局ユーザーに3回身長を入力させるため、scanfの行もfor文の{}の中に組み込むというところ。
#include
int main(void)
{
double l,kg; //身長と適正体重の変数の宣言。
int i; //繰り返し回数の変数の宣言。
for(i=1; i<=3; i++)
{
printf("身長を入力\n");
scanf("%lf",&l);
printf("身長:%f\n",l);
kg=l*l*22;
printf("適正体重:%f\n",kg);
}
return 0;
}
1から入力された値までの奇数の和を求めて出力するコード
ただし、0やマイナスの数が入力された場合は合計値を0と表示すること。
いよいよ中かっこだらけで、どれがどの中かっことセットになっているか、わからなくなってきました。
かなり難しいが、テキストの155ページに答えが載っていた・・・
#include
int main(void)
{
int i,n,sum=0; //繰り返し回数iと、入力された値nと、奇数の和のsumを宣言
for(i=1; i<=n; i=i+2)
//初項は1で(i=1)、偶数は抜かすから一つ飛ばしで足していって(i=i+2)、nまで行ったらおしまい(i<=n)という意味。
{
printf("入力値:\n");
scanf("%d",&n);
if(n>0) //入力された数値がプラスの数ならば1~nまでの奇数を全て足す。
{
sum +=i ;
printf("1~%dまでの合計値は%dです。\n",sum);
}
else
{printf("合計値:0\n");} //0やマイナスの数が入力された場合は合計値を0と表示する。
}
return 0;
}
繰り返し回数を入力して決められるコード
繰り返す回数をnum回として、num回まで繰り返したら処理終了としている。
#include
int main(void)
{
int num,i;
printf("いくつ「Hello World!」を出力しますか?\n");
scanf("%d",&num);
for(i=1; i<=num; i++)
{printf("Hello World!\n");}
return 0;
}
4つの整数の最小値と最大値を求めるコード
テキストに載っていない恐るべき課題。
最小値は、それぞれの整数とminを比べて、minよりも小さければそれが最小値という決め方をさせている。
#include
int main(void)
{
int i,n,min,max;
n=0;
max=-10000;
min=10000;
for(i=1; i<=4; i++)
{
printf("整数:");
scanf("%d",&n);
if(min > n) //その数がminより小さいかどうかを調べている
min = n;
if(max < n) //その数がmaxより大きいかどうかを調べている
max = n;
}
printf("最小値は%dです。\n", min);
printf("最大値は%dです。\n", max);
return 0;
}
1から入力された値までの奇数の和を求めて出力するコード
ただし、0やマイナスの数が入力された場合は合計値を0と表示するということなので、この合計値が0になる場合(nが0以下)を先にif文ではけさせてしまう。
それ以外をelse文の{}に入れて、この中でfor文を作る。
#include
int main(void)
{
int i,n,sum;
sum=0;
scanf("%d",&n);
printf("入力値:%d\n",n);
if(n<=0)
{
printf("\n合計値:0\n");
}
else
{
for(i= 1; i<= n; i=i+2) //初項1、1つ飛ばしに増えて、nまで行ったらおしまい
{ sum=sum+i; } //※sum+=iでも多分大丈夫。
}
printf("合計値:%d\n",sum);
return 0;
}