目次
はじめに
はじめに
Visual C++ 2010 Expressのインストール
プログラムの作成
hello.c
コンパイルと実行
C言語プログラミングの学習環境
終了ステータスって?
整数値を3桁区切りで表示するプログラム
課題1 「整数値を3桁区切りで表示する」
ソースコードの雛形
h20a6.c
ソースコードの解説
配列の要素を反転する
課題2 「整数型の最大値と最小値を表示する」
h20a6_min.c
ソースコードの解説
課題3 「64ビットの整数値を表示する」
h20a6_x64.c
ソースコードの解説
他の言語のlong型
課題4 「整数値を4桁区切りの16進数で表示する」
h20a6_hex.c
ソースコードの解説
多倍長整数の加算を行うプログラム
課題1 「多倍長整数型を作る」
ソースコードの雛形
h21a9_set.c
ソースコードの解説
課題2 「多倍長整数の比較を行う」
h21a9_cmp.c
ソースコードの解説
課題3 「多倍長整数の加算を行う」
h21a9_add.c
ソースコードの解説
条件演算子を使用する
課題4 「多倍長整数の減算を行う」
h21a9_sub.c
ソースコードの解説
課題5 「多倍長整数型に符号を追加する」
h21a9_ssub.c
ソースコードの解説
課題6 「符号付き多倍長整数の加減算を行う」
h21a9_sign.c
h21a9_sign.c - part2
ソースコードの解説
数当てゲームを行うプログラム
課題1 「重複のない4桁の乱数を生成する」
ソースコードの雛形
h18a6_prev.c
ソースコードの解説
擬似乱数って?
課題2 「マスターマインドを作成する」
ソースコードの雛形
h18a6.c
ソースコードの解説
課題3 「平均推測回数を表示する」
h18a6_average.c
ソースコードの解説
課題4 「組合せを用いてマスターマインドを解くAIを作成する」
h18a6_ai.h
h18a6_ai.c
h18a6_ai_comb.c
ソースコードの解説
課題5 「順列を用いてマスターマインドを解くAIを作成する」
h18a6_ai_perm.c
ソースコードの解説
課題6 「順列のみを用いてマスターマインドを解くAIを作成する」
h18a6_ai_perm10.c
ソースコードの解説
ソースコードの分割
文字列のURLエンコードを行うプログラム
課題1 「URLエンコードを行う」
ソースコードの雛形
h16a6.c
ソースコードの解説
ポインタを扱うときの注意
課題2 「空白文字を+記号に置換する」
h16a6_space.c
ソースコードの解説
課題3 「URLデコードを行う」
h16a6_decode.c
ソースコードの解説
相対パスを絶対パスに変換するプログラム
課題1 「UNIX形式のパスを変換する」
ソースコードの雛形
h21h9.c
ソースコードの解説
課題2 「Windows形式のパスを変換する」
h21h9_win.c
ソースコードの解説
課題3 「両方の形式を変換する」
h21h9_both.c
ソースコードの解説
WindowsでもUNIXでもコンパイルできるソースコード
課題4 「ファイルの有無を確認する」
h21h9_exists.c
ソースコードの解説
標準ライブラリ関数の調べ方
単語幅でワードラップを行うプログラム
課題1 「単語幅でワードラップする」
ソースコードの雛形
h17h6.c
ソースコードの解説
課題2 「文字列をトークン分割する」
h17h6_token.c
ソースコードの解説
課題3 「改行文字に対応する」
h17h6_newline.c
ソースコードの解説
Windowsのフォントから文字幅を取得してみる
文字数でワードラップを行うプログラム
課題1 「文字数でワードラップする」
ソースコードの雛形
h22h9.c
ソースコードの解説
ファイル記述子って?
課題2 「タブ文字に対応する」
h22h9_tab.c
ソースコードの解説
課題3 「定義済みのキーワードを参照する」
ソースコードの雛形
h22h9_keyword1.c
ソースコードの解説
課題4 「キーワードを定義する」
h22h9_keyword2.c
ソースコードの解説
奥付
奥付

閉じる


多倍長整数の加算を行うプログラム

試し読みできます

課題1 「多倍長整数型を作る」

多倍長整数の加算
を行うプログラム

[出典] 平成21年度 秋期 午後試験 問9

課題1 「多倍長整数型を作る」

 C言語では整数型の変数に格納できる値に上限があります。 その上限を超える正の整数(正の多倍長整数)を処理するプログラムを作るため、次に示す構造体MPを定義しました。 多倍長整数はlong型に納まる範囲(9桁ごと)で区切り、下位9桁から順にメンバ変数data[]に格納します。
 手始めに構造体MPの値を表示する関数print()と、数字列を構造体MPに変換する関数set()を作成してください。

構造体MPの定義

試し読みできます

ソースコードの雛形

  1. #include <stdio.h>
  2. #include <string.h>


  3. /** 内部整数の最大桁数 (9桁) */
  4. #define NUM_DIGIT 9
  5. /** 内部整数の桁上がり (10^9) */
  6. #define NUM_DIGIT_TH_POWER_OF_TEN 1000000000
  7. /** 内部整数配列のサイズ (9*7=63桁) */
  8. #define ARRAY_MAX 7


  9. /**
  10. * @brief 多倍長整数型
  11. */
  12. typedef struct {
  13. int length; /**< 内部整数配列の長さ */
  14. long data[ARRAY_MAX]; /**< 内部整数配列 (9桁区切り) */
  15. } MP;


  16. void print(const MP *num);
  17. void set(MP *num, const char str[]);


  18. /**
  19. * @brief 多倍長整数値を出力する。
  20. *
  21. * @param [in] num 多倍長整数値
  22. * @return なし
  23. */
  24. void print(const MP *num)
  25. {
  26. /** @todo 実装してください。 */
  27. }


  28. /**
  29. * @brief 数字列から多倍長整数値に変換する。
  30. *
  31. * @param [out] num 変換された多倍長整数値
  32. * @param [in] str 数字列
  33. * @return なし
  34. */
  35. void set(MP *num, const char str[])
  36. {
  37. /** @todo 実装してください。 */
  38. }


  39. int main(int argc, char *argv[])
  40. {
  41. MP num;
  42. /* テストデータでset()、print()を実行する。 */
  43. set(&num, "46284059827463859201283844157134007652918723147641");
  44. print(&num);
  45. return 0;
  46. }

h21a9_set.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

課題2 「多倍長整数の比較を行う」

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_cmp.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

課題3 「多倍長整数の加算を行う」

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_add.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

条件演算子を使用する

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

課題4 「多倍長整数の減算を行う」

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_sub.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

課題5 「多倍長整数型に符号を追加する」

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_ssub.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

課題6 「符号付き多倍長整数の加減算を行う」

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_sign.c

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

h21a9_sign.c - part2

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)

ソースコードの解説

有料本のため、このページは読むことができません。

この本は有料です。閲覧するには購入する必要があります。
購入するにはしてください。
有料本の購入に関しては、こちらのマニュアルをご確認ください。
販売価格200円(税込)