-
C言語のprintf変換指定子(変換文字)の種類と使い方を徹底解説
printf関数の基本的な使い方printfは、文字列を画面に出力するためのC言語の標準関数です。最もシンプルな使い方は、埋め込む値のない単純な文字列をそのまま表示することです。printf (An ordinary string..); printf (Testing 1,2,3...);次に基本的な例として、整数を1つ出力するケースを見てみましょう。int number = 48; printf (%d,number);文字列と変換指定子(%で始まる記述)は、以下のように組み合わせることができます。int number = 48; printf (Some number = %d,numb
-
C言語における文字の読み書きとは?getche()・putchar()の基本を解説
C言語における文字入出力の基本C言語には、コンソール上で1文字単位の入出力を行うためのシンプルな関数が用意されています。代表的なものが、キーボードから1文字を読み取る getche() と、画面に1文字を出力する putchar() です。getche() は、キーが押されるまで待機し、押されたキーの値(文字コード)を返します。押されたキーは自動的に画面へエコー表示されます。putchar() は、引数として渡された文字を、現在のカーソル位置に画面へ出力します。両者のプロトタイプ宣言は以下のとおりです。int getche(void); int putchar(int c);これらの関数を使用
-
ネストされたforループで1から9までの数の4乗までを出力するCプログラム
ネストされたループとはネストされたループ(入れ子構造のループ)とは、あるループの中に別のループが配置された構造のことを指します。外側のループが1回実行されるたびに、内側のループはその反復範囲全体を実行します。ネストされたforループの基本構造は以下の通りです。for (初期化; 条件式; 更新処理){ for (初期化; 条件式; 更新処理){ 文; } 文; }プログラム例以下は、ネストされたforループを使用して、1から9までの各数値の1乗から4乗までを表形式で出力するCプログラムです。#include <stdio.h> void ma
-
C言語のexit()関数とは?使い方と終了コードの意味を解説
exit()関数とはexit()関数は、C言語の標準ライブラリ関数の一つで、プログラム全体を即座に終了させるために使用されます。switch文やdo-while文などのループ処理から抜け出す目的で使われることもありますが、その実態は「break文」とは異なり、プログラムの実行をその場で打ち切り、制御をオペレーティングシステム(OS)へ返すものです。exit()関数の一般的な形式は以下のとおりです。void exit(int code);引数 code には終了ステータス(終了コード)を指定します。この値はOSを介して呼び出し元のプロセスに返されます。一般的な慣例として、0はプログラムの正常終了
-
【C言語】forループの反復で使える4つのバリエーションを徹底解説
for文の基本構造C言語におけるfor文の一般的な形式は以下の通りです。for (初期化; 条件; 操作) 文;初期化:ループ制御変数を設定するための代入文です。条件:ループが終了するタイミングを決める関係式です。操作:ループが1回繰り返されるごとに、ループ変数がどのように変化するかを定義します。なお、forループでは条件判定がループの先頭で行われる点に注意が必要です。そのため、最初から条件が偽である場合は、ループ内のコードが一度も実行されないこともあります。例えば、次のコードを見てみましょう。x = 10;for (y = 10; y != x; ++y) printf( %d,
-
C言語で再帰関数を使ってxのn乗を計算するプログラム
本記事では、C言語の再帰関数を利用して、実行時にユーザーが入力した値をもとに x の n 乗(xn)を求める方法を解説します。 問題実行時にユーザーから入力される x と n を受け取り、xn の値を計算するプログラムを作成します。 解決策C言語で再帰関数を使って x の n 乗を求める方法は以下の通りです。再帰呼び出しを活用することで、コードを簡潔にまとめられます。 xn を求めるためのロジックは次のようになります。 //呼び出し元の関数: Xpow=power(x,n); //呼び出される関数: if (n==1) return(x); else if ( n%2 == 0)
-
C言語で配列内の2番目に大きい数と2番目に小さい数を見つける方法
この記事では、配列の要素を入力し、入れ替え(スワップ)手法を使って数値を降順に並べ替えたうえで、インデックス位置を利用して配列内の2番目に大きい要素と2番目に小さい要素を表示するCプログラムを紹介します。 配列とは、共通の性質を持つ複数の要素を一つの名前のもとにまとめて格納できるデータ構造です。同じ型のデータを大量に扱う場合に非常に便利です。 C言語における配列の基本操作 C言語で配列に対して行える主な操作は以下のとおりです。 挿入(Insert):配列に新しい要素を追加する 削除(Delete):配列から既存の要素を取り除く 検索(Search):配列内から目的の要素を探し出す アルゴリ
-
switch文を使って図形の面積を求めるCプログラム【円・長方形・三角形・正方形】
問題switch文(switch-case)を使用して、長方形・正方形・三角形・円の面積を求めるCプログラムを作成します。実行時にユーザーが図形のコードを選択し、必要な寸法(底辺・高さ・辺の長さ・半径・幅・縦の長さなど)を入力すると、それぞれの図形の面積が計算されて表示される仕組みです。解決策switch文を使って4種類の図形の面積を求める方法は、以下の手順で実現できます。面積の計算式各図形の面積は、次の公式を使って求めます。長方形の面積 = 幅(breadth)× 長さ(length)正方形の面積 = 辺(side)× 辺(side)円の面積 = 3.142 × 半径 × 半径三角形の面積
-
C言語で1つの配列の前半を昇順・後半を降順にソートするプログラム
問題概要要素数 N の1次元配列を受け取り、それを2つに分割するプログラムを作成します。その後、前半部分は昇順に、後半部分は降順にそれぞれソートして出力します。解決の考え方1つの配列に対して2つの異なる操作を行うには、配列を中央で分けた位置を基準に、ループの範囲を変えて処理します。まず b = n / 2 で境界位置を求め、インデックス 0〜b-1 を前半、b〜n-1 を後半として扱います。前半を昇順にソートするロジック隣接する要素同士を比較し、大きい値を後ろへ入れ替える単純な選択ソート(バブルソート)を使います。for (i = 0; i < b; ++i) { for (j
-
【C言語】行列の主対角要素と副対角要素を入れ替えるプログラム
問題概要 本記事では、行列の主対角要素(左上から右下へ向かう対角線上の要素)と副対角要素(右上から左下へ向かう対角線上の要素)を入れ替えるC言語プログラムを紹介します。行列のサイズは実行時に入力として受け取ります。 入力された行数 m と列数 n が一致しない場合には「正方行列ではありません」というメッセージを表示します。主対角要素と副対角要素の入れ替えが可能なのは、行数と列数が等しい正方行列に限られるためです。 解決策 行列の対角要素を入れ替えるCプログラムの実装手順は以下の通りです。 対角要素を入れ替えるための基本ロジックは次のようになります。 for (i=0;i<m;++i){
-
C言語で行列の行を昇順に、列を降順にソートする方法を解説
問題概要 行列のすべての行を昇順に、すべての列を降順に並べ替えるコードを書きなさい。行列のサイズと要素は実行時にユーザーから入力として受け取るものとします。 解法 ここでは、C言語を使って行列の各行を昇順に、各列を降順に並べ替える方法を説明します。ポイントは、行のソートと列のソートでループの回し方と比較条件を切り替えることです。 行を昇順にソートするロジック 各行に対して隣接要素同士を比較し、前の要素が後ろの要素より大きければ交換する、という選択ソートの考え方を使います。 for (i=0;i<m;++i){ for (j=0;j<n;++j){ fo
-
2つの行列が等しいかどうかを判定するC言語プログラム
このプログラムでは、ユーザーが2つの行列の次数(行数と列数)および各要素を入力し、入力された2つの行列を比較します。2つの行列のサイズ(行数・列数)とすべての要素が一致している場合、「2つの行列は等しい」と表示されます。サイズは同じでも要素が1つでも異なる場合には、「行列は比較できるが、等しくはない」と表示されます。サイズ自体が一致しない場合には、「2つの行列は比較できない」と表示されます。プログラム以下は、2つの行列が等しいかどうかを比較するCプログラムです。#include <stdio.h> #include <conio.h> main(){ &n
-
C言語の構造体を使って名前をアルファベット順にソートするプログラムの解説
構造体(Structure)とは、異なるデータ型の変数をひとつの名前のもとにまとめてグループ化したものです。C言語では、関連性のある複数のデータをひとまとめに扱うために構造体がよく使われます。構造体の主な特徴C言語における構造体には、以下のような特徴があります。代入演算子を使うことで、異なるデータ型を持つすべての構造体メンバーの内容を、同じ型の別の構造体変数へ一括してコピーできます。複雑なデータを扱う場合には、構造体の中にさらに構造体を定義することができます。これを「ネストされた構造体(入れ子構造)」と呼びます。関数への引数として、構造体全体・個々のメンバー・構造体のアドレスのいずれも渡すこと
-
C言語の構造体を使って在庫管理システムを作成する方法
構造体(Structure)とは、異なるデータ型の変数をひとつの名前のもとにまとめたデータ構造のことです。C言語では、商品名・価格・数量・製造日など、性質の異なる複数の情報をひとまとめに扱いたい場合に構造体が非常に役立ちます。 構造体の主な特徴 C言語における構造体には、以下のような特徴があります。 代入演算子(=)を使うことで、ある構造体変数の全メンバーの内容を、同じ型の別の構造体変数へ一括してコピーできます。 複雑なデータを扱う場合は、構造体の中に別の構造体を定義することができます。これをネストされた構造体(入れ子構造)と呼びます。 関数への引数として、構造体全体・構造体の個々のメンバー
-
C言語における配列と構造体の違いを徹底解説!特徴と使い分けのポイント
C言語プログラミングにおいて、配列(array)と構造体(structure)はどちらも複数のデータをまとめて扱うための重要な機能です。しかし、両者にはデータ型の扱いやメモリ配置、アクセス方法などに大きな違いがあります。本記事では、配列と構造体の主な相違点を表形式でわかりやすく解説します。 配列と構造体の主な違い一覧 配列(Arrays)構造体(Structures) 同じデータ型のデータ項目を集めた単一の実体である。異なるデータ型のデータ項目を集めた単一の実体である。 配列内の個々の要素は「要素(element)」と呼ばれる。構造体内の個々の項目は「メンバー(member)」と呼ばれ
-
C言語の条件付きコンパイルとは?#if・#ifdefなどのディレクティブを解説
C言語には、プログラムコードの一部を選択的にコンパイル(条件付きコンパイル)するためのプリプロセッサディレクティブが複数用意されています。主なものは以下のとおりです。#if#else#elif#endif#if の基本形式#if の一般的な書式は次のとおりです。#if 定数式 文の並び#endif定数式が真(0以外)の場合のみ、#endif までのコードがコンパイルされます。#else は、C言語のキーワード else とほぼ同じ働きをし、条件が偽の場合にコンパイルされるコードを指定できます。#elif は「else if」を意味し、複数の条件を順に評価する if〜else if のよう
-
C言語のメモリ操作とは?主要関数(memcpy・memsetなど)の使い方を解説
C言語におけるメモリ操作とはC言語には、メモリ領域を直接扱うための標準ライブラリ関数群が用意されています。これらの基本的なメモリ操作関数は #include <memory.h> に含まれており、厳密には文字列関数ではありませんが、そのプロトタイプは #include <string.h> にも宣言されています。主なメモリ操作関数一覧void *memchr(const void *s, int c, size_t n);バッファ内から指定した文字を検索します。int memcmp(const void *s1, const void *s2, size_t n);2つ
-
C言語の文字列検索関数とは?主な関数の種類と使い方を解説
C言語の主な文字列検索関数 C言語の標準ライブラリ(<string.h>)には、文字列の中から特定の文字や文字グループを探し出すための検索関数が複数用意されています。代表的な文字列検索関数は以下の通りです。 char *strchr(const char *string, int c);文字列内で文字cが最初に現れる位置を検索します。 char *strrchr(const char *string, int c);文字列内で文字cが最後に現れる位置を検索します。 char *strpbrk(const char *s1, const char *s2);s2に含まれるいずれか
-
【C言語入門】int main()とint main(void)の違いを徹底解説
int main と int main(void) の基本的な意味 int main は、プログラムの実行終了時に整数値(通常は「0」)を返すことを表します。「0」はプログラムが正常に完了したことを示す戻り値です。 int main の基本構文は以下の通りです。 int main(){ --- --- return 0; } int main(void) は、関数が引数を一切受け取らないことを明示的に表します。もし括弧内に void を記述しない場合
-
C言語のプログラム開発サイクルとは?6つのフェーズをわかりやすく解説
プログラミング言語を使ってプログラムを開発する際には、必ず一連の手順に従う必要があります。これらの手順は「プログラム開発におけるフェーズ(段階)」と呼ばれます。プログラム開発ライフサイクルとは、任意のプログラミング言語でプログラムを開発するために用いられる、体系的な手順やフェーズの集まりのことです。本記事では、C言語をはじめとするプログラム開発の流れを、6つのフェーズに分けて詳しく解説します。プログラム開発の6つのフェーズプログラム開発ライフサイクルには、以下の6つのフェーズが含まれています。問題の定義問題の分析アルゴリズムの開発コーディングとドキュメンテーションテストとデバッグ保守(メンテナ