-
C言語で簡単な電卓プログラムを作成する方法|switch文を使った実装手順を徹底解説
C言語を使えば、足し算・引き算・掛け算・割り算といった四則演算に対応したシンプルな電卓プログラムを、短いコードで実装できます。本記事では、switch文(switch case)を活用した電卓プログラムの基本アルゴリズム、実際に動作するサンプルコード、実行結果までを初心者向けにわかりやすく解説します。 電卓プログラムのアルゴリズム まずは、プログラム全体の流れを以下の手順で確認しておきましょう。 ステップ1:変数を宣言する ステップ2:実行時に演算子(+、-、*、/ のいずれか)を入力する ステップ3:実行時に2つの数値(num1、num2)を入力する ステップ4:switch文で演算子を判
-
【C言語入門】forループを使って掛け算の九九(掛け算表)を表示する方法
forループは、指定した回数だけ処理を繰り返したい場合に、効率的にループを記述できる繰り返し制御構造です。本記事では、C言語でforループを使用して、任意の数値の掛け算表(九九)を表示する方法を解説します。アルゴリズムC言語でforループを使って掛け算表を表示するための基本的な手順は以下のとおりです。ステップ1: 実行時に、掛け算表を表示する数値を入力する。 ステップ2: キーボードからその数値を読み込む。 ステップ3: forループを使って「num × i」の計算を10回繰り返す。 // for(i=1; i<=10; i++) ステップ4: iが1から10まで変化し
-
【C言語】うるう年を判定する方法をわかりやすく解説
うるう年とは、1年が366日となる年のことです。通常の年(平年)は365日ですが、約4年に1度、2月29日が加わる「うるう年」が訪れます。 うるう年の判定条件 ユーザーがコンソールから入力した年がうるう年かどうかを判定するには、次の条件式を使用します。 if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) この条件式の意味は以下の通りです。 400で割り切れる年 → うるう年 100で割り切れず、4で割り切れる年 → うるう年 上記以外の年 → 平年 この条件が満たされれば、入力された年はうるう年であると判断できま
-
C言語のmalloc関数とは?動的メモリ確保の基本と使い方を解説
malloc()関数とはmalloc()関数は「memory allocation(メモリ割り当て)」の略称で、C言語においてメモリブロックを動的に確保するための標準ライブラリ関数です。この関数は、指定されたサイズのメモリ領域を確保し、その先頭アドレスを指すポインタを返します。メモリ確保に失敗した場合はNULLが返されます。注意点として、malloc()で確保されたメモリ領域は初期化されていないため、ゴミ値(不定な値)が含まれています。必要に応じてmemset()関数などで初期化してから使用しましょう。また、戻り値のポインタはvoid型(void*)であるため、実際に使用する際は目的のデータ型
-
C言語における構造体の宣言方法を徹底解説!基本構文から変数定義の3パターンまで
構造体(structure)とは、int型やchar型、float型など異なるデータ型の変数を、ひとつの名前のもとにまとめたデータの集合体です。共通の名前を持つ異種混合(ヘテロジニアス)なデータ項目をグループ化できるため、実世界のオブジェクト(本、社員、学生など)をプログラム上で自然に表現するのに適しています。構造体の主な特徴代入演算子(=)を使うことで、異なるデータ型で構成される構造体メンバーの内容すべてを、同じ型の別の構造体変数へ一括コピーできます。複雑なデータを扱う際に、構造体の中にさらに別の構造体を定義できます。これを「ネストした構造体(入れ子構造)」と呼びます。関数への引数として、構
-
C言語で文字列内の母音と子音の数を数える方法をわかりやすく解説
問題 C言語で、入力された文字列の中に含まれる母音と子音の数を数えるプログラムの書き方を紹介します。 解決策 母音を判定するための基本ロジックは、次のような条件式です。 if(str[i] == A || str[i] == E || str[i] == I || str[i] == O || str[i] == U || str[i] == a || str[i] == e || str[i] == i || str[i] == o || str[i] == u) この条件が真であれば母音のカウントを1つ増やし、そうでなければ子音のカウントを1つ増やします。 サンプルプログラム 以下は、文字
-
C言語の多次元配列とは?宣言方法と行・列の合計を求めるサンプルコード
C言語では、3次元以上の配列を扱うことができます。これを多次元配列と呼びます。次元数の上限の正確な値は、使用するコンパイラによって決定されます。多次元配列の宣言方法多次元配列の宣言には、次の構文を使用します。データ型 配列名 [サイズ1] [サイズ2] ・・・ [サイズn];たとえば、3次元配列の場合は次のように宣言します。int a[3][3][3];この場合の要素数は、3 × 3 × 3 の 27個 となります。サンプルプログラム:行・列ごとの合計を求める以下は、実行時にキーボードから入力した値をもとに、5 × 5 の二次元配列について「行ごとの合計」と「列ごとの合計」を計算するCプログラ
-
C言語でフィボナッチ数列を求めるプログラムの作り方
フィボナッチ数列とは、「直前の2つの数を足し合わせる」という規則によって生成される数列のことです。フィボナッチ数列は、f0 と f1 という2つの初期値から始まります。この初期値には「0, 1」または「1, 1」のいずれかの組み合わせを用いるのが一般的です。フィボナッチ数列は、次の漸化式で表される条件を満たします。fn = fn-1 + fn-2アルゴリズムフィボナッチ数列を求めるための基本的なアルゴリズムは以下の通りです。START(開始) 手順1:整数変数 a, b, c を実行時に読み込む 手順2:a = 0、b = 1 として初期化する 手順3:c = a + b を計算する 手順4:
-
C言語のシフト演算とは?左シフト・右シフト・補数の基本をわかりやすく解説
問題 C言語を使用して、ある数値に対する左シフト・右シフト・補数(ビット反転)を求める簡単なプログラムを作成するには、どのようにすればよいのでしょうか。 解決方法 左シフト(<<) 変数の値を1ビットだけ左へシフトすると、その値は2倍になります。「a × 2」を計算したのと同じ結果です。 例:a = 10 の場合、a << 1 = 20 右シフト(>>) 変数の値を1ビットだけ右へシフトすると、その値は元の半分になります。「a ÷ 2」の整数除算と同じ結果です。 例:a = 10 の場合、a >> 1 = 5 サンプルプログラム 以下は、シ
-
C言語ですべてのデータ型の範囲を表形式で表示するプログラムの作成方法
C言語で扱えるデータ型には、int(整数型)、short int、signed char、unsigned char、float、double など、さまざまな種類があります。それぞれの型が保持できる値の範囲(最小値・最大値)を正しく把握しておくことは、バグのない安全なプログラムを書くうえで非常に重要です。 データ型とは データ型とは、変数に格納できる値の集合とその種類を定義するものです。用途に応じた適切なデータ型を選択することで、メモリを効率的に利用しながら正確な処理を行うことができます。 C言語のデータ型は、大きく次の2つに分類されます。 基本データ型(プリミティブ型) 派生データ型(配
-
C言語の「else ifラダー」条件文の使い方を徹底解説!基本構文から実行例まで
else ifラダー(階段状条件分岐)とは?「else ifラダー」とは、複数の条件の中から該当するものを選んで処理を実行する、いわゆる多方向分岐を記述する際に最も一般的に使われる方法です。条件式を上から順番に評価していき、最初に真(true)となった条件に対応する処理だけが実行され、残りの分岐はすべてスキップされます。基本構文else ifラダーの基本的な書き方は以下の通りです。if (condition1) stmt1; else if (condition2) stmt2; - - - - - - - - - - else if (conditio
-
C言語のsqueeze関数とは?2つの文字列から共通する文字を削除する方法
squeeze(s1,s2) または squeeze(char[], char[]) は、ユーザー定義関数の一つです。2つの文字列を比較し、両方に共通して含まれる文字(重複する文字)を削除するために使用されます。 問題 C言語において、squeeze関数を使って2つの文字列に共通する文字を削除するには、どのようにコードを書けばよいのでしょうか? 解決策 このプログラムでは、ユーザーがコンソールから2つの文字列を入力します。そして、1つ目の文字列から「2つ目の文字列にも含まれている文字」を取り除き、その結果を画面に表示します。 処理の流れ キーボードから2つの文字列(string1、stri
-
【C言語】入力した2つの数が過剰数(友好的なペア)かどうかを判定するプログラム
本記事では、ユーザーがコンソールから入力した2つの数値が「過剰数(友好的なペア)」に該当するかどうかを判定するCプログラムを紹介します。判定条件とは?ある数の約数(その数自身を除く)をすべて足し合わせた合計が、元の数と等しいとき、その数は特別な性質を持つ数とみなされます。具体的には、次のように定義できます。数1のすべての約数の合計 = 数1数2のすべての約数の合計 = 数2上記の両方が成り立つ場合、この2つの数は「過剰数のペア(友好的なペア)」であると判定されます。ちなみに、約数の合計が自分自身と一致する数は数学的には完全数として知られており、代表的な例が 6(= 1+2+3)や 28(= 1
-
C言語で文字列内の大文字と小文字を反転(トグル変換)させるプログラムの書き方
はじめに大文字を小文字へ、小文字を大文字へと変換する処理は、一般的に「トグル(toggle)」と呼ばれます。各文字をトグルするとは、与えられた文字列の中で、小文字を大文字の形に、大文字を小文字の形にそれぞれ変換することを意味します。たとえば「TutoRial」であれば「tUTOrIAL」となります。プログラム1:ASCIIコードの差分を使う方法以下は、大文字を小文字に、小文字を大文字に変換するCプログラムです。ASCIIコードでは同じ英字の大文字と小文字のコード値が32だけ異なるため、この差分を利用して変換を行っています。= a && string[i] = A && string[i] <=
-
C言語で配列内の重複する数値を削除するプログラムの作成方法
ユーザーが重複した要素を含む数値を配列に入力できるようにします。ここでは、配列内の重複した数値(要素)を削除し、重複のない一意な要素だけで構成された配列を作成するC言語のコードを紹介します。例以下に具体例を示します。ユーザーの入力:12, 30, 12, 45, 67, 30出力:12, 30, 45, 67(重複を削除した後)アルゴリズムの考え方このプログラムでは、二重ループを使用して配列内のすべての要素同士を比較します。外側のループで基準となる要素を選び、内側のループでそれ以降の要素と照合します。同じ値が見つかった場合、その要素を削除するために後続の要素を1つずつ前に詰め、配列の有効サイズ
-
C言語の動的メモリ割り当て(malloc)を使ってn個の数値の合計を計算するサンプルプログラム
問題C言語において、動的メモリ割り当て関数を使用して、ユーザーが入力したn個の数値を表示し、その合計を計算するにはどうすればよいのでしょうか。解決策以下に示すのは、動的メモリ割り当て関数を使用して、ユーザーが入力したn個の要素を表示し、その合計を計算するC言語のサンプルプログラムです。このプログラムでは、必要な分だけメモリを確保することで、メモリの無駄遣いを最小限に抑える工夫も行っています。動的メモリ割り当てでは、stdlib.hヘッダーファイルに含まれるmalloc()関数を使用します。実行時に必要なサイズのメモリを確保できるため、配列のようにあらかじめ最大サイズを決めておく必要がなく、効率
-
C言語のポインタとは?基本概念をサンプルコード付きで解説
ポインタとは? ポインタ(pointer)とは、別の変数のメモリアドレスを格納するための変数です。C言語ではポインタを使うことでメモリを直接操作でき、効率的なデータ処理や関数間でのデータ受け渡しが可能になります。 ポインタの基本構文は以下のとおりです。 pointer = &variable; 「&」はアドレス演算子と呼ばれ、変数の先頭アドレスを取得します。また、「*」は間接参照演算子(デリファレンス)であり、ポインタが指し示すアドレスに格納された値を取り出します。 C言語によるポインタのサンプルプログラム 次のプログラムでは、int型ポインタとchar型ポインタのそれぞれに
-
C言語の構造体変数へのアクセス方法を基礎から解説!サンプルコード付き
構造体(structure)とは構造体とは、ユーザーが独自に定義できるデータ型(ユーザー定義型)の一つで、異なるデータ型のデータをひとまとめにして格納するために使われます。構造体は配列とよく似ています。両者の違いは、配列が同じデータ型の要素のみを格納するのに対し、構造体は異なるデータ型を組み合わせて格納できるという点です。構造体を宣言する際には、キーワード struct を使用します。また、構造体内で定義された変数のことを構造体のメンバー(member)と呼びます。構造体の基本的な宣言方法構造体は次のように宣言します。struct 構造体名{ //
-
C言語でテキストを1行に1単語ずつ表示する方法
C言語では、ファイル操作と fscanf 関数を組み合わせることで、テキストファイル内の文字列を「1行に1単語」の形式で出力できます。この記事では、その基本的な手順とサンプルプログラムをわかりやすく解説します。 処理の流れ まず、ファイルを書き込みモードで開き、ユーザーが入力したテキストを書き込みます。Windows環境では Ctrl + Z を押すことで EOF(End Of File、ファイル終端)が送られ、入力が終了します。 次に、同じファイルを読み込みモードでもう一度開きます。そして、fscanf を使ってファイルから単語を1つずつ読み取り、改行を付けて画面に表示します。 実装のポイン
-
C言語入門:モノリシックプログラミングとモジュラープログラミングの違いを徹底解説
本記事では、C言語におけるモノリシックプログラミングとモジュラープログラミングの違いを、それぞれのメリット・デメリットとともに詳しく解説します。 モノリシックプログラミングとは プログラム全体を1つの関数、すなわちmain関数だけですべて記述する方式を「モノリシック(一枚岩)型プログラミング」と呼びます。しかし、すべてのロジックを単一の関数に詰め込むのは、良いプログラミングスタイルとは言えません。 デメリット モノリシックプログラミングには、以下のような欠点があります。 プログラムが非常に大きく、複雑になりやすい。 デバッグ、テスト、保守が非常に困難になる。 モジュラープログラミングとは