C言語によるプログラミング 基礎編 第2版

キーフレーズ

printf プログラム int 関数 変数 double include return 文字列 char 構造体 ファイル リスト データ 配列 場合 ポインタ void 演算子 break 文字 実行 アドレス main 定義 str scanf 初期化 while 入力 stdio address AccessRank VOid 表示 結果 記述 コンピュータ 引数 条件 処理 整数型 メモリ プログラミング 計算 出力 switch MAX ファイル名 NULL tray for dYn 必要 result array コンパイラ static dat 格納 sizeof string 代入 struct 用い define 9. しよう 要素 data 使用 long case max weight coffee name ループ 説明 定数 ホームページ 宣言 共用体 表現 fopen コンパイル powint 人力 求める 小数点 方法 意味 sum アクセスログ

目次

序 目 文 プログラミングの基礎知識 フロクラミング言語としての C はしめに 121 C の位置付け 122 C の簡単な歴史 コンビュータ入門 4 6 1 .3.1 コンピュータの中身 1 .3.2 コンピュータの構成 7 9 1 .3.3 コンピュータの動作原理 フロクラムの作成から実行まで 1 .4.1 プログラミングの進め方 1 .4.2 実行させてみよう 1 .4.3 プログラムの動作環境 フロクラミングの学習 1 .5.1 どうやって学習するか 1 .5.2 困ったときには 22 1 4 20 32 2.3 22 プログラミング入門 画面にメッセーシを表示しよう 計算するプログラム 42 変数というもの 40 数の計算をしてみよう・ 表示を整える 37 3 行に分けてメッセージを表示するには 26 最も単純な例 2.2.2 2.2.1 2.1 .3 2.1 .2 2.1 . 1 ・・ 14 ・・ 26 ・・ 40 ・・ 47 入出力について 2.3.1 入出力の概念 2.3.2 実際の標準入力 47 48

目 / 人 3.1 32 4.1 4.2 2.4 2.5 4.3 プログラムの流れを変える 2.4.1 条件による分岐 2 章までのおさらいと今後の展望 変数と式 変数と型 3.1 ・ 1 3 ・ 1 ・ 2 3.1 .3 3.1 ・ 4 3.1 .5 3 ・ 1 ・ 6 3 ・ 1 ・ 7 変数とは何か 60 さまざまな変数定義 変数の定義と初期化 定数 73 文字の表現 67 型の概念 63 使用できる変数名 式と演算子 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 式は大切な概念 代入式 87 算術演算子 89 sizeof 演算子 92 演算子の優先順位 62 78 81 85 94 整数型と浮動小数点の混合演算 95 制御の流れ 文と制御の流れ 条件判断処理 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 条件式 103 if 文 1 1 2 127 条件分岐の応用例 多岐条件文 123 switch 文 : 場合分けをする 1 1 7 else 文 : そうでなければ ~ をする ループ処理 ( 繰り返し処理 ) 1 1 6 132 150 ・ 57 ・ 60 ・ 85 ・・ 102 ・・ 102 ・・ 132 4.3.1 4.3.2 4.3.3 while 文 : 真のあいだ、繰り返す for 文 : 順番に繰り返す 143 do-while 文 : 真のあいだ、繰り返す

4.4 4.5 5.5 5.2 5.3 4.3.4 無限ループとループのネスト 1 53 4.4.1 goto 文 無条件分岐 4.4.2 goto 文を用いた例 条件演算子 関数 関数 154 162 5.1 . 1 5.1 .2 5.1 .3 5.1 .4 5.1 .5 5.2.1 5.2.2 5.2.3 簡単な関数の定義 関数を含むプログラムの構造 関数の呼び出し手順 1 72 166 局所変数 176 sqrt 関数を作ってみよう 関数宣言と引数 177 引数の記述形式と関数の型 180 引数の個数と型の一致 関数の名前の重複の禁止 181 182 いろいろな関数の例 5.3.2 void 型関数 186 5.3.1 関数の中から別の関数を呼び出す 1 84 5.3.3 void 型関数と他の型をもつ関数の組み合わせ さまさまな変数 1 88 目 ・・ 153 ・・ 158 ・・ 162 ・・ 180 ・・ 189 ・・ 184 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.4.6 自動変数 外部変数 static 変数 auto 変数 189 194 195 197 register 変数 197 変数の初期化 198 変数の通用範囲 ( スコープ ) 199 5.5.1 自動的な変数の通用範囲 5.5.2 静的な変数の通用範囲 199 201

67 6.8 62 3 6.4 6.5 6.6 7.1 7.2 配列 配列の概念 6.1 . 1 配列の考え方 204 6.1 .2 配列を用いる場面 205 配列の使い方 6.2.1 配列変数の定義 207 6.2.2 配列の添字 210 6.2.3 配列の値の参照と代入 配列を使ったプロクラム 6.3.1 平均値・分散・標準偏差 6.3.2 並べ替え (sorting) 220 配列の要素数とマクロ定数 210 216 2 次元配列 6.5.1 行列計算 6.5.2 座標計算 配列の初期化 229 ー仲の悪い 2 人一 234 6.6.1 1 次元配列の初期化 6.6.2 2 次元配列の初期化 多次元配列・ 関数の引数に配列を使う 236 238 文字列 文字列の表現 7.1 . 1 文字の復習 7.1 .2 文字配列 248 250 7.1 .3 文字配列の初期化 文字列の操作 ・ 204 ・ 207 ・・ 216 ・・ 224 ・ 228 ・・ 236 ・・ 240 ・・ 241 ・・ 248 ・・ 256 7.2.1 7.2.2 7.2.3 7.2.4 文字列のコピー 文字列の長さ 文字列の連結 文字列の比較 256 260 262 266 253

ポインタ ポインタの基礎 8.1 . 1 8.1 .2 8.1 .3 8.1 .4 8.1 .5 8 ・ 1 ・ 6 アドレス 270 ポインタとは 271 アドレス演算子 273 ポインタ変数の定義 274 間接演算子 275 ポインタ変数の初期化 276 8.2 9.1 9.2 9.3 9.4 9.5 ポインタの応用 8.2.1 8.2.2 8.2.3 8.2.4 ポインタ演算 ポインタと配列 277 281 文字列とポインタ 285 ポインタの引数としての使い方 287 構造体とユーサ定義型 構造体 (structure) 9.1 . 1 9.1 .2 9.1 .3 9.1 .4 9.1 .5 構造体の概念 構造体宣言 294 295 構造体メンバの操作 構造体の代入 ( コピー ) 302 構造体のネスト 共用体 (union) 構造体と共用体の初期化 9.3.1 構造体の初期化 9.3.2 共用体の初期化 構造体の活用 308 309 9.4.1 構造体の配列 311 9.4.2 構造体へのポインタ 9.4.3 構造体と関数 315 ユーサ定義型 9.5.1 typedef 317 9.5.2 列挙 (enumeration) 亘言と定義 323 9.5.3 300 301 320 313 ・・ 270 ・・ 316 ・・ 311 ・・ 308 ・・ 304 ・ 294 ・・ 277

目 / 人 10.1 10.2 IO. 3 10.4 10.5 10.6 107 10.8 10.9 10.10 ファイル ファイルの概念 ファイルからの入力 ファイル名を指定した入力 入力データの終わりの判定 複数のファイルから入力するには ファイルへの出力 ファイルの追加出力 fscanf 関数の危険性 344 工ラーチェック 343 工ラーを未然に防ぐ 342 工ラー発生時の対処 10.8.1 10.8.2 10.8.3 10.8.4 10.8.5 fclose 関数のチェック 346 例外処理で有効な goto 文 347 ファイルと入出力 実用的なプロクラムへの応用 10.10.1 10.10.2 10.10.3 10.10.4 10.10.5 付録 索引・ 人気のあるホームページランキング作成プログラム 352 プログラムの設計 関数の実装 360 プログラムの実行 プログラムの改善 354 368 371 ・ 326 ・ 329 ・ 332 ・・ 335 ・・ 338 ・・ 338 ・・ 341 ・・ 342 ・・ 377 ・・ 374 ・・ 352 ・・ 348 本書に掲載されているプログラムは、オーム社ホームページ ( http : 〃 www.ohmsha.co.jp/) からダウンロー ドすることができます。また、監修者の研究室 ( 神奈川大学情報システムエ学研究室 ) のホームページ (http://www.inf.ie.kanagawa-u.ac.jp/) にも、プログラミングやソフトウェアに関する情報が掲載されてい ますので、ぜひご覧ください。

奥付

■監修者 内田智史 ( うちださとし ) 昭和 57 年青山学院大学理工学部経営工学科卒業 昭和 59 年青山学院大学大学院修士課程修了 工学修士 昭和 62 年青山学院大学大学院博士後期課程単位取得済み退学 青山学院大学理工学部経営工学科助手 神奈川大学工学部経営工学科助手 平成 9 年神奈川大学工学部経営工学科専任講師 平成 11 年神奈川大学工学部経営工学科助教授 工学博士 ( 筑波大学 ) ・主な著書 「理工系のための c 言語プログラミング入門」科学技術出版 「アセンプラ入門 (CASLII)] 発行 : 電子開発学園出版局 / 発売 : scc 旨によるプログラミングー応用編ー」 ( 編著 ) オーム社 「コロロ 「 c 言語によるプログラミングースーパーリファレンス編ー』 ( 編著 ) オーム社 所 究 . 研 画 ム テ ス シ 一丁一丁 史社 智会発発 田式 内株 1 ー亠、ー亠 第第 版版 1 よワ」 グ第第 ン 日日 ラ 0 ワ朝 1 グ版 ロ 2 月月 -1 -1 プ第 -1 -1 よ一年年 に編 語礎成成 言基 O 一平平 2 側 1 内田智史 監修者 編者 株式会社システム計画研究所 オーム社開発局 企画編集 佐 藤政次 発行者 株式会社オ ム社 発行所 郵便番号 101 - 8460 東京都千代田区神田錦町 3 ー 1 振替 00160 ー 8 - 2 0018 電話 03 ( 3233 ) 0641 ( 代表 ) h t t p : / / w w w. 0 h m s h a. c 0. j p / 組版テクニカルラボ印刷・製本エヌ・ピー・エス 落丁・乱丁本はお取替えいたします ISBN 4 ー 274 ー 06440 ー 9 囮く日本複写権センター委託出版物〉 検印省略 Printed in J 叩 an