-
構造体の概念で理解するC言語のビットフィールド|定義方法と範囲の計算を徹底解説
ビットフィールドとはビットフィールドとは、変数が占めるメモリのサイズをビット単位で指定できるC言語の機能です。通常は構造体(struct)の中で定義されます。ビットフィールドの基本:1バイト=8ビット記述例struct info { int x : 2; };この例では、メンバxは2ビットを占有します。ビットフィールド使用時の注意点ビットフィールドの範囲外の値を代入することはできません(その場合の動作は保証されません)。sizeof演算子やアドレス演算子(&)をビットフィールドに適用できないため、scanf関数で値を入力することもできません。ビットフィールドに指定できるデータ型
-
C言語の配列とは?特性と基本操作をわかりやすく解説
配列(アレイ)とは、単一の変数名で管理される、同種のデータ項目の連続的な集合体です。例: int student[30];この場合、student が配列名となり、1つの変数名で30個分のデータ項目を格納できます。配列の主な特性配列には以下のような特徴があります。配列は常に連続したメモリ領域に格納されます。同じ型の複数の値を格納でき、それらを1つの名前で参照できます。ポインタは、配列名に割り当てられたメモリブロックの先頭位置を指します。配列のデータ型は整数(int)、文字(char)、浮動小数点数(float)などであり、宣言時にのみ初期化できます。配列内の特定の要素は、他の要素に影響を与える
-
C言語で完全数を判定するプログラムの作り方【サンプルコード付き】
完全数(Perfect Number)とは、その数の約数の総和が「元の数 × 2」と等しくなる自然数のことです。別の見方をすると、自分自身を除く約数の合計が元の数そのものと一致する数とも言えます。代表的な完全数の例をいくつか挙げてみましょう。6:約数は 1, 2, 3, 6 → 合計は 1+2+3+6 = 12 = 6×2 なので完全数28:約数は 1, 2, 4, 7, 14, 28 → 合計は 56 = 28×2 なので完全数この記事では、C言語を使って入力された整数が完全数であるかどうかを判定するプログラムを、アルゴリズムから順にわかりやすく解説します。アルゴリズム完全数を判定するための
-
【C言語】10個の要素を持つ配列を昇順にソートするプログラムの作り方
配列とは 配列とは、関連性のある複数のデータ項目を、たった一つの名前でまとめて管理できるデータ構造です。 例: int student[30]; この場合、studentが配列名となり、1つの変数名だけで30個分のデータ項目を格納することができます。 配列に対する主な操作 配列に対して行える基本的な操作は、以下の通りです。 探索(検索) − 配列内に特定の要素が存在するかどうかを調べる操作です。 ソート(整列) − 配列内の要素を昇順または降順に並べ替える操作です。 走査(トラバース) − 配列内のすべての要素を先頭から順番に処理する操作です。 挿入 − 配列に新しい要素を追加する操作です。
-
3×3の2次元配列で下三角要素のみを表示するC言語プログラム
はじめに実行時にキーボードから3×3行列(合計9個の要素)を2次元配列へ入力します。この入力値とforループを組み合わせることで、3×3行列の下三角部分のみを表示することが可能です。下三角要素を表示するロジック下三角要素を表示するための基本的な考え方は以下の通りです。行インデックス i が列インデックス j 以上( i >= j )である位置が、下三角に該当します。条件を満たす場合はその要素の値を表示し、満たさない場合は空白を出力して整形します。for(i=0;i<3;i++){ for(j=0;j<3;j++){ &n
-
C言語の文字列を使って母音・数字・スペース・子音をカウントするプログラム
文字の配列(または文字の集まり)は文字列と呼ばれます。C言語では、文字列はヌル文字 \0 で終わる char 型の配列として扱われます。文字列の宣言文字列は以下のように宣言します。char stringname [size];例えば、char a[50]; と宣言すると、最大50文字まで格納できる文字列が作成されます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1文字ずつ(単一文字定数)で初期化する場合:char a[10] = { H, e, l, l, o, \0 };文字列定数で初期化する場合:char a[10] = Hello;文字列定数で初期化した場合は、末尾の
-
C言語のマクロとは?#defineによる文字列置換の仕組みと使い方を徹底解説
C言語におけるマクロ置換(マクロ展開)とは、文字列を別の文字列に置き換える仕組みのことです。この機能は、#defineディレクティブを使うことで実現できます。マクロは、プログラムの実行前に処理されるのが大きな特徴です。コンパイルの前段階である「プリプロセス」の時点で、マクロ定義の第一部分が第二部分に置き換えられます。なお、置き換え対象となる第一部分には、関数形式のものとオブジェクト形式(定数など)の2種類があります。マクロの基本構文マクロを定義する構文は以下の通りです。#define 第一部分 第二部分この定義により、コード内に現れるすべての「第一部分」が「第二部分」に置き換えられます。サンプ
-
C言語における乱数生成とは?randomize()とsrand()関数の使い方を徹底解説
はじめに プログラム内で乱数を生成する際には、生成される数列を適切に制御することが重要です。そのために使用されるのが randomize() 関数と srand() 関数です。 乱数ジェネレータに対して開始値(初期値)を設定することを「シード設定(seeding)」と呼びます。シードが同じであれば毎回同じ乱数列が生成され、シードが異なれば実行ごとに異なる乱数列が得られます。 randomize() と srand() の違い randomize():PCのシステムクロック(時計)を利用して、ランダムなシードを自動的に生成します。 srand():乱数ジェネレータの開始値をプログラマが明示的に
-
C言語プログラムの構成を徹底解説!各セクションの役割と書き方
Cプログラムは、コードを記述する際にプログラマーが従うべき一連のプロトコル(決まりごと)によって定義されています。これらのルールを理解することで、読みやすく保守性の高いコードを書くことができます。Cプログラムを構成する7つのセクション完全なCプログラムは、以下のような複数のセクションに分けられます。ドキュメンテーションセクション − プログラムに関する情報(作者名、作成日や更新日など)を記述する部分です。「/* */」または「//」で囲まれた情報はコメント行と呼ばれ、コンパイラは実行時にこれらの行を無視します。リンクセクション − プログラムの実行に必要なヘッダファイルをインクルードする部分で
-
C言語で数値の最初と最後の桁の合計を求める方法
数値の最初と最後の桁の合計は、C言語を使って以下のアルゴリズムを実装することで簡単に求めることができます。この記事では、アルゴリズムの手順と実際のサンプルプログラム、さらに配列内の全要素の合計を求める方法についても解説します。アルゴリズムまず、数値の最初と最後の桁の合計を求めるための基本的なアルゴリズムを確認しましょう。 9 の間、以下を繰り返す no = no / 10 Step 5: sum = sum + no を計算する(最初の桁を加算) Step 6: sum を出力する STOP仕組みのポイントno % 10:10で割った余りを求めることで、数値の最後の桁を取得できます。n
-
C言語で2つの区間の間にある素数を表示するプログラム
この記事では、C言語を使って、ユーザーが入力した2つの数値(区間)の間に存在する素数をすべて表示する方法を解説します。 アルゴリズムの考え方 まず、実行時にコンソールから2つの数値を入力します。次に、素数かどうかを判定するためのフラグ変数を宣言し、forループの条件を使って各数値が素数であるかどうかをチェックします。 判定のロジックは以下のとおりです。 フラグが 0 の場合:その数値は素数であるため、画面に出力します。 フラグが 1 の場合:その数値は素数ではないため、内側のループを抜けて次の数値へ進みます。 具体的には、ある数 i について、2 から i/2 までの整数で順番に割り切れる
-
C言語のプリプロセッサディレクティブとは?3つの分類と使い方をわかりやすく解説
プリプロセッサ(preprocessor)とは、ソースコードがコンパイラに渡される前に処理を行うプログラムのことです。さまざまな命令文(ディレクティブ)の制御のもとで動作します。 プリプロセッサディレクティブは、ソースプログラムのmain関数より前に記述するのが一般的です。行の先頭(第1カラム)に記号「#」で始まり、文末にセミコロン(;)は不要という点に注意しましょう。 よく使われるプリプロセッサディレクティブには、以下のようなものがあります。 #define #undef #include #ifdef #endif #if #else など これらのプリプロセッサディレクティブは、その
-
ファイル操作を使って整数データを処理するCプログラム(奇数・偶数の振り分け方法)
このプログラムでは、1つのファイルに格納された整数データの中から奇数と偶数を振り分けます。具体的には、奇数をすべて「ODD」ファイルへ、偶数をすべて「EVEN」ファイルへ書き込んでいきます。 プログラムの流れ まず、DATAファイルを書き込みモードで開き、数値を書き込んだ後、ファイルを閉じます。 続いて、以下の3つのファイルを開きます。 DATAファイルを読み込みモードで開く ODDファイルを書き込みモードで開く EVENファイルを書き込みモードで開く その後、whileループを使ってDATAファイルから数値を1つずつ読み込み、偶数か奇数かを判定しながら、それぞれ対応するファイルへ書き込み
-
C言語のリンクセクションと定義セクションとは?プリプロセッサ指令の基本を解説
リンクセクションと定義セクションとは C言語のソースコード冒頭に記述されるリンクセクションと定義セクションは、あわせて「プリプロセッサ指令」と呼ばれます。これらは、システムライブラリ内の関数をプログラムに結び付ける(リンクする)よう、コンパイラに対して事前に指示を出す重要な役割を担っています。 たとえば、リンクセクションでは使用するヘッダーファイルを指定し、定義セクションではシンボル定数(記号定数)を定義します。 #include<stdio.h> また、定義セクションでは次のように定数を宣言できます。 #define PI 3.1415 プリプロセッサ指令の基本ルール プリプロ
-
C言語入門:変数とは?命名規則と宣言方法(ローカル・グローバル)を徹底解説
まずは「変数とは何か」を理解することから始めましょう。 変数(Variable)とは データの値を格納するために使われるメモリ上の場所に付けた名前のことです。 プログラムの実行中、異なるタイミングで異なる値を持つことができます。 変数名は、プログラム内での役割や性質が分かるように、プログラマが意味のある名前を自由に付けることができます。 例えば、sum(合計)、avg(平均)、total(総計)などが挙げられます。 変数の命名規則 変数に名前を付ける際には、以下のルールに従う必要があります。 必ず英字(アルファベット)またはアンダースコアで始める必要があります。 ANSI標準では変数名の
-
C言語の実行文(ステートメント)とは?入出力文と代入文の基本を解説
C言語で書かれたプログラムには、実際に処理を行う「実行文(実行可能なステートメント)」が含まれています。コンパイラは、これらの実行文を機械語へと翻訳する役割を担います。ユーザーがプログラムを実行すると、コンパイル済みの機械語命令が順番に処理され、プログラムが動作します。実行文の種類C言語における実行文は、主に以下の2種類に分けられます。入出力文(Input-Output Statements)代入文(Assignment Statements)入出力文入出力文は、データの受け渡しを担当する重要なステートメントです。値をメモリ上に格納することを「入力操作」と呼びます。計算処理の後、結果はメモリに
-
C言語における各式の種類を徹底解説!初心者向けにサンプルコード付きで紹介
式(Expression)とは、演算子とオペランド(被演算子)を組み合わせたものであり、評価すると必ず単一の値に帰着します。演算はデータ項目に対して行われ、このデータ項目を「オペランド」と呼びます。一方、演算子はデータに対して実行すべき操作を表す記号です。例えば、次のような式を考えてみましょう。z = 3 + 2 * 1→ z = 5C言語の主な式の種類一次式(Primary Expression):名前(変数)、定数、あるいは括弧で囲まれた式からなる最も基本的なオペランドです。例:c = a + (5 * b);後置式(Postfix Expression):演算子がオペランドの後ろに置かれ
-
C言語の関係演算子とは?6種類の演算子の使い方をサンプルコード付きで解説
関係演算子とは関係演算子(Relational Operators)は、2つの式や値を比較し、その大小関係や等価性を判定するために使用される演算子です。if文やwhile文などの条件分岐・繰り返し処理において、プログラムの流れを制御するための基礎となる非常に重要な要素です。C言語では、比較結果が成立する場合は「真」として整数の 1 を返し、成立しない場合は「偽」として 0 を返します。関係演算子の一覧C言語で使用できる関係演算子は以下の6種類です。ここでは、変数 a = 10、b = 20 の場合の評価結果を示します。演算子意味記述例a=10, b=20 の場合出力<より小さい(左辺が右
-
C言語入門:論理演算子と代入演算子の基本をわかりやすく解説
C言語には、条件式を組み合わせたり、変数に値を格納したりするためのさまざまな演算子が用意されています。本記事では、その中でも特に重要な「論理演算子」と「代入演算子」について、真理値表やサンプルプログラムを交えながら詳しく解説します。 論理演算子とは 論理演算子は、2つ以上の条件式を論理的に組み合わせ、その結果を「真(1)」または「偽(0)」として評価するための演算子です。if文やwhile文などの条件分岐・繰り返し処理で、複雑な条件を記述する際に欠かせません。 論理積(AND):&& 論理和(OR):|| 否定(NOT):! 論理積(&&)の真理値表 左右の
-
C言語の単純if文(simple if)をわかりやすく解説
はじめにC言語における「if」キーワードは、論理条件が真(true)と評価された場合にのみ、特定の一連のステートメントを実行するために使用される、最も基本的な条件分岐です。本記事では、単純if文(simple if)の構文、動作の仕組み、そして具体的なサンプルコードを通じてその基本を解説します。構文単純if文の構文は以下の通りです。if (condition) { Statement(s); }単純if文の動作ifブロック内のステートメントは、条件が真(true)の場合にのみ実行され、偽(false)の場合は一切実行されません。条件が真のときに実行したいステートメントが1つだけである場