【C言語入門】part3 : 演算子と四則演算,scanf文
前回はC言語のプログラムの構造,printf文,データの型(変数)についてやりました.
今回は演算子と四則演算,scanf文についてやっていきます.
演算子と四則演算
前回,敵のHPは3だったものに直接2を代入しました.でもこれいちいち書いていくのは大変ですし,初期値によって代入する値も変えていくのは面倒です.1ダメージの攻撃であるなら"enemyHP-1"の計算をして,enemyHPに代入すれば初期値に依存しないですよね.C言語での数値の計算は以下のように書けます.・test3-1.c
#include <stdio.h> int main(void){ int enemyHP = 3; printf("敵のHP:%d\n",enemyHP); enemyHP = enemyHP - 1; printf("敵のHP:%d\n",enemyHP); return 0; }
・実行結果
C:\Users\ユーザ名\Desktop>test3-1.exe 敵のHP:3 敵のHP:2
このように書くことで初期値に依存せずにダメージを与えることができますね.前回変数へ値を代入する値が後ろ,代入先が前に書くと言いましたが,計算式も同様です.以下の図のようになります.
引き算は私たちがよく使うマイナス記号-を使いますが,C言語での計算式(これから演算子と呼びます)は普段使うものと少し異なるものがあります.以下にC言語で用いる主な演算子を紹介します.
・-:引き算
・*:掛け算
・/:割り算(商)
・%:剰余(余り)
・test3-2.c
#include <stdio.h> int main(void){ int ichitasuichiha; ichitasuichiha = 1 + 1; printf("カメラマン「1足す1はー?」\nみんな「%d!」\n",ichitasuichiha); return 0; }
・実行結果
C:\Users\ユーザ名\Desktop>test3-2.exe カメラマン「1足す1はー?」 みんな「2!」
数学の方程式ではカッコ( )で囲った中身は先に計算するといった規則がありますが,C言語の計算式でも同様のことができます.
・test3-3.c
#include <stdio.h> int main(void){ int ans; ans = (2+8)/2; printf("(2+8)/2=%d",ans); return 0; }
・実行結果
C:\Users\ユーザ名\Desktop>test3-3.exe (2+8)/2=5
scanf文
今まで数値を表示することをしてきました.ここではキーボードから実際に数値を入力し,コンピュータに計算させることをしてみましょう.そこで使うのがscanfになります.それでは早速以下のプログラムを実行してみてください.・test3-4.c
#include <stdio.h> int main(void){ int enemyHP; printf("敵のHPを入力してね:"); scanf("%d",&enemyHP); printf("敵のHP:%d",enemyHP); return 0; }
・実行結果
C:\Users\ユーザ名\Desktop>test3-4.exe 敵のHPを入力してね:_
このような_が点滅しているところでプログラムが止まっていると思います.これが入力待ち状態です.この状態で,キーボードから数値を入力し,エンターキーを押すとプログラムは進みます.
・実行結果(続き)
C:\Users\ユーザ名\Desktop>test3-4.exe 敵のHPを入力してね:3 敵のHP:3
それではscanf文の書き方を見てみましょう.
・scanf関数
scanf("書式文字",&変数名);
printf文のときと違い変数名の前に&が付くのが特徴です.なぜ&を付けるのかについてはポインタの分野で詳しくやりますので,今のところはおまじないとして付けてください.printfの時の変数名から書式文字へ代入するものでしたが,その逆のイメージがscanfで,書式文字から変数名のほうへ代入するイメージです.
ここまで学べば,足し算機みたいなものも作れますね.
・test3-5.c
#include <stdio.h> int main(void){ int ans; int a; int b; printf("a+bを計算するよ\naを入力してね:"); scanf("%d",&a); printf("bを入力してね:"); scanf("%d",&b); ans = a + b; printf("答え:%d",ans); return 0; }
・実行結果
C:\Users\ユーザ名\Desktop>test3-5.exe a+bを計算するよ aを入力してね:3 bを入力してね:5 答え:8
それでは今回も練習問題を載せるので,ぜひ解きながら学んでいってください.
お疲れさまでした.
練習問題
・問題1主人公のHPを表す整数型変数(heroHP)を定義し,キーボード入力から受け付け,その変数へ代入した後,敵から3ダメージを受けた後の主人公のHPを表示するプログラム(test3-6.c)を作成してみよう.(前回のtest2-3.cが参考になると思います)
・実行結果例
C:\Users\ユーザ名\Desktop>test3-6.exe 主人公のHPを入力してね:5 今の主人公のHP:5 主人公は敵から3のダメージを受けた! 今の主人公のHP:2
・問題2
test3-5.cを参考にしながら,整数型変数aとbに数値を入力させ,a÷bの商と余りを求めるプログラム(test3-7.c)を書いてみましょう.
・実行結果例
C:\Users\ユーザ名\Desktop>test3-7.exe a/bを計算するよ aを入力してね:5 bを入力してね:3 a/b=1余り2
練習問題の解答例
・問題1・test3-6.c
#include <stdio.h> int main(void){ int heroHP; printf("主人公のHPを入力してね:"); scanf("%d",&heroHP); printf("今の主人公のHP:%d\n",heroHP); printf("主人公は敵から3のダメージを受けた!\n"); heroHP = heroHP - 3; printf("今の主人公のHP:%d\n",heroHP); return 0; }
・問題2
・test3-7.c
#include <stdio.h> int main(void){ int ans1; int ans2; int a; int b; printf("a/bを計算するよ\naを入力してね:"); scanf("%d",&a); printf("bを入力してね:"); scanf("%d",&b); ans1 = a / b; ans2 = a % b; printf("a/b=%d余り%d",ans1,ans2); return 0; }