#include <stdio.h> main() { int price1, price2, sum; printf("Please type the price 1: "); scanf("%d", &price1); printf("Please type the price 2: "); scanf("%d", &price2); sum = price1 + price2; printf("Sum of price is: %d\n", sum); } |
2つの数値を入れ、それを足すだけである。
このプログラムを元に、Cのプログラムの一般的な約束事を述べる。
#include <stdio.h> main() { 変数の宣言 文 文 文 ..... } |
のような形をしている。
#include <stdio.h> main() { int price1, price2, sum; printf("Please type the price 1: "); scanf("%d", &price1); printf("Please type the price 2: "); scanf("%d", &price2); sum = price1 + price2; printf("Sum of price is: %d\n", sum) ; } |
のように書いても問題無く動作する。しかし、プログラムを構造に従って きちんと字下げして書く習慣を付けることは正しいプログラムを書ける ために非常に重要なので、ちゃんと書かねばならない。
#include <stdio.h>は、プログラム中に出て来たprintfを使うために必要な ものである。実は、「#include <ファイル名>」 は、システムのどこか(普通のUNIXでは/usr/include)に ある「stdio.h」というファイルのこの部分に読み込め、 という命令である。その中には「printfのプロトタイプ宣言」 と呼ばれるものが書かれているが、この意味はまだ分からなくて良い。
int price1, price2, sum;の部分は変数の宣言である。intは整数型(整数が入る変数)であることを 指定し、price1、price2、sumが変数の名前である。
char | 8bit整数(文字型) |
short int | 16bit整数 |
long int | 32bit整数 |
int | 32bit整数 |
float | 32bit浮動小数点数 |
double | 64bit浮動小数点数 |
がある。
price = 100; price = price + 100;のようにすると値を代入することが出来る。この場合の等号は右側の式の値を 左側の変数に代入すると意味であり、数学的な等号とは意味が違う。 後者の文は「priceを100ふやす」という意味である。
int price = 100;のように宣言することも出来る。
printf("Please type the price 1: ");で、「Please type the price 1: 」と表示する。 文字列は、このように「"」で囲う。
また、
printf("Sum of price is: %d\n", sum);のように、「%d」があると、その部分は文字列の 後で指定した値で置き換えられる。例えば、
printf("abc%ddef%dghi", 100, 2);で、「abc100def2ghi」と表示される。 末尾の「\n」は、そこで改行することを示す。
なお、「%d」は表示したい値が整数の場合で、 そうで無い場合は、次の表に従う。
%d | 整数を10進数で表示 |
%c | 文字 |
%s | 文字列 |
%f | 浮動小数点数(0.0314のように) |
%e | 浮動小数点数(3.14e-02のように) |
%g | 浮動小数点数(%fと%gのうち短い方で表示) |
%% | ただの「%」という文字 |
%.15g | %gで有効数字15桁まで表示 |
scanf("%d", &price1);で、キーボードから数値を入力し、その値を price1という変数に代入する。 変数の前に付いている「&」は 「アドレス演算子」と呼ばれるものでポインタと 深い関りがあるが、ここでは触れない。 こう書くものと思って欲しい。
scanfの場合も%の部分は変数の型によって次のように 使い分ける。printfと似ているが少し違うので注意。
%d | 整数を10進数で入力 |
%c | 文字 |
%s | 文字列 |
%f,%e,%g | 浮動小数点数(float型) |
%lf,%le,%lg | 浮動小数点数(double型) |
+ | 加算 |
- | 減算、符号反転 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
がある。*、/、%は、+、-よりも 優先順位が高く、また括弧()を利用して優先順位を変更することも出来る。
x = 10 - 2 * 5; x = (10 - 2) * 5;また、省略形として +=、-=、*=、/=、%=という 演算子がある。例えば、
x = x + 10;
x += 10;と書くことが出来る。
#include <stdio.h> #include <math.h> main() { int price1, price2; printf("Please type the price: "); scanf("%d", &price1); price2 = (int)floor(price1 * 1.05); printf("Price with tax is: %d\n", price2); } |
scanf、printfの使い方は先に述べた。
ここで出て来た
#include <math.h>は、数学関数(ここではfloor)を使うために必要なものである。 また、数学関数を使ったプログラムをコンパイルするときは、
% cc -o tax tax.c -lm %のように、-lmを付加する必要がある。なお、これを 付加する位置は重要で、必ずソースファイル(tax.c)より 後に指定しなければならない。
floor | 切り捨て |
ceil | 切り上げ |
fabs | 絶対値 |
sqrt | 平方根 |
exp | 指数関数 |
log | 対数関数(底はe) |
log10 | 対数関数(底は10) |
pow(x,y) | xのy乗 |
cos | コサイン |
sin | サイン |
tan | タンジェント |
asin | アークサイン |
acos | アークコサイン |
atan | アークタンジェント |