情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |
// から行末まで
x = 10.0; // 変数 x に 10.0 を代入
x = 10.0; /* 変数 x に 10.0 を代入 */
01 #include <stdio.h> 02 #include <math.h> 03 int main(){double a,b,c,d,x,x1,x2; 04 printf("係数a,b,及び,cは? ");scanf("%lf %lf %lf",&a,&b,&c); 05 if(fabs(a) <= 1.0e-10){ 06 if(fabs(b) <= 1.0e-10)printf("解を求めることができません!\n"); 07 else{x=-c/b;printf("x=%f\n",x);}} 08 else{d=b*b-4.0*a*c; 09 if(d >= 0.0){d=sqrt(d);x1=0.5*(-b-d)/a;x2=0.5*(-b+d)/a; 10 printf("x=%f %f\n",x1,x2);} 11 else{d=sqrt(-d);x1=-0.5*b/a;x2=0.5*d/a; 12 printf("x=%f ± i%f\n",x1,x2);}}return 0;}
01 /*********************************/ 02 /* 二次方程式を解く */ 03 /* a * x * x + b * x + c = 0 */ 04 /* coded by Y.Suganuma */ 05 /*********************************/ 06 #include <stdio.h> 07 #include <math.h> 08 09 int main() 10 { 11 double a, b, c, d, x, x1, x2; 12 /* 13 係数の読み込み 14 */ 15 printf("係数a,b,及び,cは? "); 16 scanf("%lf %lf %lf",&a,&b,&c); 17 /* 18 一次方程式 19 */ 20 if (fabs(a) <= 1.0e-10) { 21 if (fabs(b) <= 1.0e-10) 22 printf(" 解を求めることができません!\n"); 23 else { 24 x = -c / b; 25 printf(" x=%f\n",x); 26 } 27 } 28 /* 29 二次方程式 30 */ 31 else { 32 33 d = b * b - 4.0 * a * c; 34 // 2実根 35 if (d >= 0.0) { 36 d = sqrt(d); 37 x1 = 0.5 * (-b - d) / a; 38 x2 = 0.5 * (-b + d) / a; 39 printf(" x=%f %f\n",x1,x2); 40 } 41 // 虚数 42 else { 43 d = sqrt(-d); 44 x1 = -0.5 * b / a; 45 x2 = 0.5 * d / a; 46 printf(" x=%f ± i%f\n",x1,x2); 47 } 48 } 49 50 return 0; 51 }
"abcd" "efgh"
for (int k = 0; k < 2; k++) {
01 #include02 int main() 03 { 04 int k, x = 10; 05 x++; 06 printf("x %d\n", x); 07 for (k = 0; k < 2; k++) { 08 x++; 09 printf(" x %d\n", x); 10 int x = 20, y = 100; 11 printf(" x,y %d %d\n", x, y); 12 } 13 printf("x %d\n", x); 14 return 0; 15 }
データ型 変数名1[= 初期値], 変数名2[= 初期値], ・・・;
データ型 バイト数と値の範囲 void * * char 1 -128 ~ 127(文字型,1 バイトの整数型) unsigned char 1 0 ~ 255(文字型,1 バイトの符号無し整数型) short 2 -32,768 ~ 32,767( 2 バイトの整数型) unsigned short 2 0 ~ 65,535( 2 バイトの符号無し整数型) int * システム依存(整数型) unsigned int * システム依存(符号無し整数型) long 4 -2,147,483,648 ~ 2,147,483,647( 4 バイトの整数型) unsigned long 4 0 ~ 4,294,967,295( 4 バイトの符号無し整数型) long long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807( 8 バイトの整数型) unsigned long long 8 0 ~ 18,446,744,073,709,551,615( 8 バイトの符号無し整数型) float 4 3.4E±38(浮動小数点型,有効桁は約 7 桁) double 8 1.7E±308(浮動小数点型,有効桁は約 15 桁) long double * 拡張精度,システム依存(浮動小数点型) bool(C++) 1 true( 0 以外) or false( 0 )(論理型),数値の 0 は false に,その他は true に変換される auto(C++11) * 代入された値によって型を推論する
-----------------------(C++)データ型-----------------------
01 #include <iostream> 02 03 using namespace std; 04 05 int main() 06 { 07 // C 08 cout << "C int 宣言\n"; 09 int x1 = 5, y1 = 1, z1 = 0; 10 cout << " x1 " << x1 << " y1 " << y1 << " z1 " << z1 << endl; 11 cout << " (x1 > y1)? " << (x1 > y1) << " (x1 < y1)? " << (x1 < y1) << endl; 12 cout << " (x1 + z1) " << (x1 + z1) << endl; 13 // C++ 14 cout << "C++ int 宣言" << endl; 15 int x2 = 5, y2 = 1, z2 = 0; 16 cout << " x2 " << x2 << " y2 " << y2 << " z2 " << z2 << endl; 17 cout << " (x2 > y2)? " << (x2 > y2) << " (x2 < y2)? " << (x2 < y2) << endl; 18 cout << " (x2 + z2) " << (x2 + z2) << endl; 19 20 cout << "C++ bool 宣言\n"; 21 bool x3 = 5, y3 = 1, z3 = 0; 22 cout << " x3 " << x3 << " y3 " << y3 << " z3 " << z3 << endl; 23 cout << " (x3 > y3)? " << (x3 > y3) << " (x3 < y3)? " << (x3 < y3) << endl; 24 cout << " (x3 + z3) " << (x3 + z3) << endl; 25 26 cout << "C++ int 宣言 (boolalpha)" << boolalpha << endl; 27 int x4 = 5, y4 = 1, z4 = 0; 28 cout << " x4 " << x4 << " y4 " << y4 << " z4 " << z4 << endl; 29 cout << " (x4 > y4)? " << (x4 > y4) << " (x4 < y4)? " << (x4 < y4) << endl; 30 cout << " (x4 + z4) " << (x4 + z4) << endl; 31 32 cout << "C++ bool 宣言 (boolalpha)\n"; 33 bool x5 = 5, y5 = 1, z5 = 0; 34 cout << " x5 " << x5 << " y5 " << y5 << " z5 " << z5 << endl; 35 cout << " (x5 > y5)? " << (x5 > y5) << " (x5 < y5)? " << (x5 < y5) << endl; 36 cout << " (x5 + z5) " << (x5 + z5) << endl; 37 38 return 0; 39 }
C int 宣言 x1 5 y1 1 z1 0 (x1 > y1)? 1 (x1 < y1)? 0 (x1 + z1) 5 C++ int 宣言 (noboolalpha) x2 5 y2 1 z2 0 (x2 > y2)? 1 (x2 < y2)? 0 (x2 + z2) 5 C++ bool 宣言 (noboolalpha) x3 1 y3 1 z3 0 (x3 > y3)? 0 (x3 < y3)? 0 (x3 + z3) 1 C++ int 宣言 (boolalpha) x4 5 y4 1 z4 0 (x4 > y4)? true (x4 < y4)? false (x4 + z4) 5 C++ bool 宣言 (boolalpha) x5 true y5 true z5 false (x5 > y5)? false (x5 < y5)? false (x5 + z5) 1
#includeclass Test { public: int x, y; Test(int x1, int y1) { x = x1; y = y1; } }; int add(int x, int y) { return x + y; } int main() { // int auto x = 10, y = 20; printf("%d + %d = %d\n", x, y, add(x, y)); // クラス Test のオブジェクト auto a = Test(1, 2); printf("a.x %d a.y %d\n", a.x, a.y); // 関数の型 auto fp = add; auto z = 30; printf("%d + %d = %d\n", x, z, (*fp)(x, z)); return 0; }
10 + 20 = 30 a.x 1 a.y 2 10 + 30 = 40
int a = 10; decltype(a) b = (int)31.5; // int b = (int)31.5; decltype((a)) c = a; // int& c = a; decltype(1+2.3) x = 3.5; // double x = 3.5; cout << "a " << a << " b " << b << endl; c = 20; cout << "a " << a << " c " << c << endl; cout << "x " << x << endl;
a 10 b 31 a 20 c 20 x 3.5
--------------------(C++)データ型終わり--------------------
double x = 10.5, y; const int z = 20;
int abc, _bef; // 正.複数の変数をカンマで区切って並べることが可能 double abc, _bef = 3.5; // 正.変数 _bef に対しては初期設定を行っている int a, A; // 正.変数 a と A は異なる char a = 'A'; // 正.変数 a を A という文字(アスキーコードで 65 )で初期化 char a = 65; // 正.変数 a を 65 で初期化(上と同等,char は,1 バイトの整数とみなすことができる) int a, abc, a; // 誤.同じ変数を 2 度定義してはいけない int if; // 誤.キーワードは変数名として使用できない int 10a; // 誤.変数名の最初は,英字または下線 int a+10; // 誤.変数名に使用できるのは,英数字と下線だけ int a = 3.5; // 誤.int 型の変数の初期値として不適当 char a = "ABC", b = "漢"; // いずれも誤.単純変数に文字列を記憶することはできない
enum coltype {red, blue, black, white} color;
color = blue; /* 変数 color に青を代入 */ if (color == red) /* もし,色が赤ならば */
enum coltype {red, blue, black=5, white} color;
red : 0, blue : 1, black : 5, white : 6
enum [列挙型名] [{列挙定数リスト}] [変数リスト];
enum coltype {red, blue, black, white}; enum coltype color;
typedef 既存のデータ型 同義語名
typedef int word;
using word = int; // C++ の場合はこの方法でも可
word x;
vector<pair<double,double>>
typedef vector<pair<double,double>> vp;
using vp = vector<pair<double,double>>; // C++ の場合はこの方法でも可
+ : 加算 - : 減算 * : 乗算 / : 除算(整数どうしの除算は,結果の小数点以下を切り捨て) % : 余り(整数演算に対してだけ使用可能)
10.0 / 4.0 * 2.0
10 / 4 * 2
演算 | 説明 |
---|---|
7 / 3 * 3 | 7 / 3 * 3 = 2 * 2 = 6 |
7 / (3 * 3) | 7 / (3 * 3) = 7 / 9 = 0 |
7 / 3 / 3 | 7 / 3 / 3 = 2 / 3 = 0 |
data = 10.0 / 4.0 * 2.0; i_data = 10 / 4 * 2;
x = 10.0 / 4.0;
k = 2; k = k + 3;
k += 3;
x = y = z = 20.4;
int x = 5, y; x = 3; // 初期設定された 5 という値は失われる x *= 5; y = x + 2;
x = y + 5;
int x = 5, y; x = 3; x *= 5; y = x + 2;
k++; n = 3 + m++;
k = k + 1;
n = 3 + m; m = m + 1;
n = 3 + ++m;
m = m + 1; n = 3 + m;
int x = 5, y = 7; x--; x--; y++;
10.0 / 4;
char < int < long < float < double < ・・・
db = 10 / 3; k = 10.0 / 4.0;
db1 = 10.4; db2 = (double)((int)db1 / 4)
演算 | 説明 |
---|---|
(double)(7 / 2) | (double)(7 / 2) = (double)3 = 3.0 |
7 / (double)2 | 7 / (double)2 = 7 / 2.0 = 7.0 / 2.0 = 3.5 |
7 / 2.0 | 7 / 2.0 = 7.0 / 2.0 = 3.5 |
7 / 2 | 3 |
/****************************/ /* 2つのデータの和と差 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { double sa, wa, x, y; /* データの入力 */ printf("2つのデータを入力して下さい "); scanf("%lf %lf", &x, &y); /* 和と差の計算 */ wa = x + y; sa = x - y; /* 結果の出力 */ printf("和は=%f 差は=%f\n", wa, sa); return 0; }
double x, y;
double wa = x + y; double sa = x - y;
double d_data; int i_data; char c_data[10]; scanf("%lf %d %s", &d_data, &i_data, c_data);
3.14 123 abc
double d_data; int i_data; char c_data[10]; ・・・・・ printf("結果は %f %10.3f %d %5d %s\n", d_data, d_data, i_data, i_data, c_data);
scanf("%lf", &sa);
sa = 20;
和は=8.000000 差は=2.000000
/****************************/ /* 2つのデータの和と差 */ /* coded by Y.Suganuma */ /****************************/ #include <iostream> using namespace std; int main() { double sa, wa, x, y; /* データの入力 */ cout << "2つのデータを入力して下さい "; cin >> x >> y; /* 和と差の計算 */ wa = x + y; sa = x - y; /* 結果の出力 */ cout << "和は=" << wa << " 差は=" << sa << endl; return 0; }
実行順序 | プログラム | x の値 | y の値 |
---|---|---|---|
1 | int x, y = 10; | - | 10 |
2 | scanf("%d", &y); | - | 5 |
3 | x = y + 3; | 8 | 5 |
4 | x *= 5; | 40 | 5 |
5 | printf("%d\n", x); | 40 | 5 |
keyword | 説明 | keyword | 説明 | keyword | 説明 | keyword | 説明 |
---|---|---|---|---|---|---|---|
_Alignas | アライメント | _Atomic | マルチスレッド | _Bool | データ型 | _Complex | 複素数型 |
_Generic | 型ジェネリック | _Imaginary | 複素数型 | _Noreturn | 関数指定子 | _Static_assert | アサート |
_Thread_local | マルチスレッド | auto | データ型,記憶クラス | alignof | アライメント | break | ループから脱出 |
case | 条件分岐 | char | データ型 | const | 変更不可 | continue | 繰り返し |
default | デフォルト | do | 繰り返し | double | データ型 | else | 条件分岐 |
enum | 列挙型 | extern | 外部参照 | float | データ型 | for | 繰り返し |
goto | ジャンプ | if | 条件分岐 | inline | インライン関数 | int | データ型 |
long | データ型 | register | レジスタ | restrict | ポインタ参照 | return | 関数からの戻り |
short | データ型 | signed | データ型 | sizeof | データサイズ | static | 静的 |
struct | 構造体 | switch | 条件分岐 | typedef | データ型の別名 | union | 共用体 |
unsigned | データ型 | volatile | 最適化の抑止 | void | 引数無し | while | 繰り返し |
---------------------(C++)キーワード-------------------------
keyword | 説明 | keyword | 説明 | keyword | 説明 | keyword | 説明 |
---|---|---|---|---|---|---|---|
alignas | アトリビュート | alignof | アライメント | asm | 処理系依存 | and | &&,代替表現 |
and_eq | &=,代替表現 | auto | データ型 | bool | データ型 | bitand | &,代替表現 |
bitor | |,代替表現 | break | ループから脱出 | case | 条件分岐 | class | クラス |
char | データ型 | char16_t | データ型 | char32_t | データ型 | catch | 例外処理 |
compl | ~,代替表現 | const | 変更不可 | const_cast | キャスト | constexpr | 定数式 |
continue | 繰り返し | decltype | 型を取得 | default | デフォルト | delete | 動的記憶域 |
do | 繰り返し | double | データ型 | dynamic_cast | 動的キャスト | else | 条件分岐 |
enum | 列挙型 | explicit | 暗黙の型変換不許可 | export | 予約 | extern | 外部参照 |
false | 偽 | final | 派生禁止,文脈依存 | float | データ型 | for | 繰り返し |
friend | フレンド | goto | ジャンプ | if | 条件分岐 | inline | インライン関数 |
int | データ型 | long | データ型 | mutable | 書き換え可能 | namespace | 名前空間 |
new | 動的記憶域 | noexcept | 例外指定 | not | !,代替表現 | not_eq | !=,代替表現 |
nullptr | ヌルポインタ | operator | 演算子多重定義 | or | ||,代替表現 | or_eq | |=,代替表現 |
override | オーバーライド,文脈依存 | private | アクセス制御 | protected | アクセス制御 | public | アクセス制御 |
register | 予約 | reinterpret_cast | キャスト | return | 関数からの戻り | short | データ型 |
signed | データ型 | sizeof | データサイズ | static | 静的 | static_assert | 表明 |
static_cast | キャスト | struct | 構造体 | switch | 条件分岐 | template | テンプレート |
this | 自分自身へのポインタ | thread_local | スレッドローカル | throw | 例外処理 | try | 例外処理 |
true | 真 | typedef | データ型の別名 | typename | テンプレート引数 | typeid | RTTI |
union | 共用体 | unsigned | データ型 | using | 名前空間 | virtual | 仮想関数 |
volatile | 最適化の抑止 | void | 引数無し | wchar_t | データ型 | while | 繰り返し |
xor | ^,代替表現 | xor_eq | ^=,代替表現 |
----------------------(C++)キーワード終わり--------------------
000 | ^@ (nul) | 016 | ^P (dle) | 032 | (sp) | 048 | 0 | 064 | @ | 080 | P | 096 | ` | 112 | p |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
001 | ^A (soh) | 017 | ^Q (dc1) | 033 | ! | 049 | 1 | 065 | A | 081 | Q | 097 | a | 113 | q |
002 | ^B (stx) | 018 | ^R (dc2) | 034 | " | 050 | 2 | 066 | B | 082 | R | 098 | b | 114 | r |
003 | ^C (etx) | 019 | ^S (dc3) | 035 | # | 051 | 3 | 067 | C | 083 | S | 099 | c | 115 | s |
004 | ^D (eot) | 020 | ^T (dc4) | 036 | $ | 052 | 4 | 068 | D | 084 | T | 100 | d | 116 | t |
005 | ^E (enq) | 021 | ^U (nak) | 037 | % | 053 | 5 | 069 | E | 085 | U | 101 | e | 117 | u |
006 | ^F (ack) | 022 | ^V (syn) | 038 | & | 054 | 6 | 070 | F | 086 | V | 102 | f | 118 | v |
007 | ^G (bel) | 023 | ^W (etb) | 039 | ' | 055 | 7 | 071 | G | 087 | W | 103 | g | 119 | w |
008 | ^H (bs) | 024 | ^X (can) | 040 | ( | 056 | 8 | 072 | H | 088 | X | 104 | h | 120 | x |
009 | ^I (tab) | 025 | ^Y (em) | 041 | ) | 057 | 9 | 073 | I | 089 | Y | 105 | i | 121 | y |
010 | ^J (lf) | 026 | ^Z (eof) | 042 | * | 058 | : | 074 | J | 090 | Z | 106 | j | 122 | z |
011 | ^K (vt) | 027 | ^[ (esc) | 043 | + | 059 | ; | 075 | K | 091 | [ | 107 | k | 123 | { |
012 | ^L (np) | 028 | ^\ (fs) | 044 | , | 060 | < | 076 | L | 092 | \ | 108 | l | 124 | | |
013 | ^M (cr) | 029 | ^] (gs) | 045 | - | 061 | = | 077 | M | 093 | ] | 109 | m | 125 | } |
014 | ^N (so) | 030 | ^^ (rs) | 046 | . | 062 | > | 078 | N | 094 | ^ | 110 | n | 126 | ~ |
015 | ^O (si) | 031 | ^_ (us) | 047 | / | 063 | ? | 079 | O | 095 | _ | 111 | o | 127 | |
Seq. | 説明 | Seq. | 説明 |
---|---|---|---|
\a | ベル | \? | リテラル クオーテーション |
\b | バック スペース | \' | シングル クォーテーション |
\f | 改ページ | \" | ダブル クォーテーション |
\n | 復改 | \\ | 円記号 |
\r | 改行 | \ddd | 8進表記による ASCII 文字 |
\t | 水平タブ | \xdd | 16進表記による ASCII 文字 |
\v | 垂直タブ |
情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |