Cプログラミング

 Computer >> コンピューター >  >> プログラミング >> Cプログラミング
  1. C言語におけるスタックを使った後置記法(逆ポーランド記法)の式評価を解説

    スタック(Stack)は線形データ構造の一種で、データの挿入と削除が必ず一端(トップ)からのみ行われるという特徴を持ちます。この「後入れ先出し(LIFO: Last In First Out)」の性質により、式の評価や構文解析など、さまざまな場面で活用されています。 基本アルゴリズム Push(挿入)のアルゴリズム まず、スタックオーバーフローが発生していないかを確認します。 if (top == n-1) printf(stack over flow); オーバーフローしていない場合は、要素をスタックに挿入します。 top++ a[top] = item Pop(削除)のアルゴリズ

  2. C言語で学ぶリンクリスト(連結リスト)の基本概念と4つの種類

    はじめに:配列とポインタの違いを理解しようリンクリスト(連結リスト)を理解する前に、まずC言語における「配列の欠点」と「ポインタの利点」について確認しておきましょう。この2つの違いを知ることが、リンクリストがなぜ有効なデータ構造なのかを理解する鍵となります。配列の欠点静的なメモリ割り当て:配列はコンパイル時にサイズが決定されるため、実行中にサイズを変更できません。メモリの無駄:実際に必要なデータ量より大きい配列を確保すると、未使用の領域が無駄になります。メモリ不足のリスク:逆に、確保したサイズを超えるデータは格納できず、メモリが不足する可能性があります。ポインタの利点動的なメモリ割り当て:ma

  3. C言語で学ぶリンクリスト(連結リスト)への要素挿入の基本と実装方法

    リンクリスト(連結リスト)は、動的メモリ確保を利用するデータ構造です。そのため、要素の追加や削除に応じて、リストのサイズが柔軟に伸縮します。リンクリストは「ノード」と呼ばれる要素の集合体として定義され、各ノードはデータ部とリンク部(ポインタ)の2つの部分で構成されています。データ・リンク・リンクリスト全体の構造は、以下のように表現されます。リンクリストに対する主な操作C言語において、リンクリストに対して行える基本的な操作は主に次の3種類です。挿入(Insertion)削除(Deletion)走査(Traversing)挿入操作のポイントここでは、ノード2とノード3の間に新しいノード5を挿入する

  4. C言語の奇数ループ(オッドループ)とは?意味と使い方を解説

    C言語では、一連の処理を繰り返し実行するために制御文(ループ文)を使用します。主な繰り返し構造は以下の3種類です。forループwhileループdo-whileループforループやwhileループでは、条件式によって「ループを何回繰り返すか」が決まります。forループの例for (k = 1; k<=5; k++)この場合、変数kが5以下である限りループは繰り返され、kが5より大きくなった時点で制御がループの外へ抜けます。つまり、このforループの条件式は「ループが5回実行される」ことを指定しています。サンプルプログラム以下はforループを使用したC言語プログラムです。main( ){

  5. C言語のジャンプステートメントとは?break・continue・return・gotoの使い方を解説

    C言語では、プログラムの実行中にある文から別の文へ処理を移動する「ジャンプステートメント」が用意されています。主なジャンプステートメントには、break、continue、return、goto の4種類があります。この記事では、それぞれの動作と使い方を、サンプルコードと実行結果とともにわかりやすく解説します。 break文 break文は、ループを途中で終了したり、ブロックから抜け出すために使用されるキーワードです。 制御は、ループ(またはブロック)の直後にある次の文へ移ります。 for文、while文、do-while文、switch文と組み合わせて使用できます。 入れ子(ネスト)され

  6. 【C言語】strlen()関数を使って文中に繰り返し現れる文字の出現回数を数える方法

    問題ユーザーがコンソールから入力した1文字が、入力された文章の中で何回出現するかを数え、その結果をstrlen()関数を使用して画面に出力するプログラムを作成します。解決策文字の出現回数を数えるために使用するロジックは以下の通りです。実行時にユーザーに対して文章の入力を求めます。printf(Enter a sentence\n); gets(str);実行時にユーザーに対して出現回数を調べたい文字の入力を求めます。printf(Enter a character to check how many times it is repeating\n); scanf(%c,&c);文章の中

  7. C言語で数当てゲームを作ろう!ヒント付きナンバー推測プログラムの作成方法

    概要本記事では、C言語を使った「数当てゲーム」プログラムの作り方を解説します。プログラム内にはあらかじめ正解となる数値(この例では64)が設定されており、ユーザーはその数値を予測して入力します。入力するたびに「大きすぎる」「小さすぎる」といったヒントが表示され、正解にたどり着くまで繰り返し挑戦できる仕組みです。プログラムのロジック数当てゲームで使用する判定ロジックは以下の通りです。入力した数値が正解と一致した場合 → フラグを0にしてループを終了入力した数値が正解より小さい場合 → 「もっと大きな数です」と表示し、試行回数をカウント入力した数値が正解より大きい場合 → 「もっと小さな数です」と

  8. switch文を使って三角形・正方形・円・長方形・平行四辺形の面積を計算するC言語プログラム

    問題switch文(switch case)を使用して、三角形・正方形・円・長方形・平行四辺形の面積を計算するプログラムを作成します。解決策ユーザーが入力した選択番号に応じてswitch文が対応するcaseへ分岐し、それぞれの図形の面積を計算します。各図形の面積を求めるロジックは以下のとおりです。三角形の面積:3辺 a, b, c を入力し、ヘロンの公式を用いて求めます。三角形の3辺 a, b, c を入力します。s=(float)(a+b+c)/2; area=(float)(sqrt(s*(s-a)*(s-b)*(s-c)));正方形の面積:実行時に1辺の長さを入力して求めます。正方形の1

  9. 【C言語】ビット演算子を使って2倍・半分を計算する方法

    ビット演算子は、オペランドのビット単位(2進数の各桁)に対して直接操作を行う演算子です。シフト演算を活用すると、掛け算や割り算を高速に処理できるため、組み込み開発やパフォーマンスが求められる場面でよく使われます。C言語の主なビット演算子一覧演算子説明&ビットごとのAND(論理積)|ビットごとのOR(論理和)^ビットごとのXOR(排他的論理和)<<左シフト>>右シフト~1の補数(ビット反転)AND演算の真理値表ビットごとのANDaba & b000010100111OR演算の真理値表ビットごとのORaba | b000011101111XOR演算の真理値表

  10. 【C言語】変数のスコープとは?記憶クラスとローカル・グローバル変数を徹底解説

    記憶クラス(ストレージクラス)とは C言語における記憶クラスは、変数の「スコープ(有効範囲)」「寿命(生存期間)」「リンケージ(結合)」を決める重要な要素です。 変数を完全に定義するためには、単に「型」を指定するだけでなく、記憶クラスについても理解しておく必要があります。 変数名は、コンピュータのメモリ上の物理的な位置を識別するものであり、その場所には変数の値を格納するためのビット列が割り当てられています。 記憶クラスを指定することで、次の4つの要素が決まります。 変数がどこに格納されるか(メモリ上か、CPUのレジスタか) 明示的に初期化しなかった場合の初期値 変数のスコープ(プログラムの

  11. C言語の変数の寿命(ライフタイム)とは?記憶クラス4種類を徹底解説

    記憶クラス(Storage Class)とはC言語における記憶クラスは、変数の「スコープ(有効範囲)」「寿命(ライフタイム)」「リンケージ(結合)」を決定する重要な概念です。変数を完全に定義するには、データ型だけでなく記憶クラスも指定する必要があります。変数名はコンピュータのメモリ上の物理的な位置を識別するものであり、その位置には変数の値を格納するためのビット列が割り当てられています。記憶クラスを指定することで、以下の要素が決まります。変数がどこに格納されるか(メモリか、CPUのレジスタか)初期化しなかった場合のデフォルトの初期値は何か変数のスコープはどこまでか(どこからアクセスできるか)変数

  12. C言語における変数のバインディング(束縛)とは?記憶クラスとスコープの基本を解説

    C言語において、記憶クラス(storage class)は変数の「スコープ(有効範囲)」「生存期間」「バインディング(束縛)」を決定する重要な要素です。変数を完全に定義するためには、その型だけでなく、記憶クラスも併せて指定する必要があります。 変数名とは、コンピュータのメモリ上の物理的な位置を識別するものであり、そこには変数の値を格納するためのビット列が割り当てられています。 記憶クラスから分かること 記憶クラスを指定すると、以下の4つの情報が決まります。 変数がどこに格納されるか(メモリ上か、CPUレジスタか) 明示的に初期化しなかった場合の初期値は何になるか 変数のスコープ(どこからアク

  13. C言語における関数間通信の指針:値渡しと参照渡しの正しい使い分け

    C言語では、関数にデータを受け渡す方法として「値渡し(call by value)」と「参照渡し(call by reference)」の2種類があります。この2つを適切に使い分けることが、安全で効率的なプログラムを書くための重要なポイントです。値渡しと参照渡しの使い分けの指針呼び出された関数内で実引数の値を変更してはならない場合は、値渡しを使用します。呼び出された関数内で実引数の値を変更したい場合は、参照渡し(ポインタ渡し)を使用します。関数から複数の値を返したい場合は、参照渡しを使って間接的に値を返します。C言語の関数は原則として1つの戻り値しか返せませんが、ポインタを活用した参照渡しを使

  14. C言語で学ぶ連結リストの先頭(ヘッド)・末尾(テール)要素の削除ロジック

    連結リスト(リンクリスト)は動的メモリ割り当てを使用するデータ構造であり、要素の増減に応じてサイズが柔軟に変化します。連結リストは複数の「ノード」の集合体として表現されます。各ノードは次の2つの部分で構成されています。データ部(ele):実際に格納される値リンク部(next):次のノードを指すポインタ連結リストに対する主な操作連結リストに対して行われる操作は、主に以下の3種類です。挿入(Insertion)削除(Deletion)走査(Traversing)削除処理の基本手順連結リストからノードを削除する際は、一般的に次の手順に従います。削除対象のノードを特定する。ノードを解放してもリストが分

  15. C言語で文字列内の空白をすべて削除するプログラムの書き方と解説

    問題 実行時に入力された文字列から、whileループを使って各インデックスの文字が空白かどうかを判定しながら、空白をすべて取り除くプログラムを作成します。 解決策 以下の例を見てみましょう。 このプログラムは、与えられた文字列からすべての空白を削除します。入力文字列が Tutorials Point C Programming の場合、空白を除去した結果は TutorialsPointCProgramming となります。 C言語において、文字型の配列は「文字列」と呼ばれます。 文字列の宣言は以下のように記述します。 char stringname [size]; たとえば、char str

  16. 【C言語】文字列の概念を使って余分な空白を削除するプログラムの作り方

    問題概要実行時に入力された文字列から、余分な空白をすべて取り除くCプログラムを作成します。先頭の空白や連続して並ぶ複数の空白を検出し、各インデックスの文字を順番にチェックしながら、ループ処理によって削除していきます。 解決方法まず、以下の例で動作イメージを確認しましょう。このプログラムは、文中の先頭の空白および連続する空白を削除し、各単語の間には1つの空白だけを残します。たとえば、単語間に複数の空白が入った文章を入力しても、出力される文字列はきれいに整えられます。 文字列の基本C言語では、char型の配列を文字列として扱います。文字列の宣言は次の形式で行います。 char stringname

  17. C言語ですべてのASCII値を出力するプログラムの作成方法

    問題 文字型変数を整数型に初期化することなく、0から255までの各文字に対応するASCII(American Standard Code for Information Interchange)値を出力するプログラムを作成します。ポイントは、書式指定子を活用することだけです。 解決方法 ここでは、まず65から122までのASCII値(アルファベットA〜zの範囲)のみを出力するプログラムを作成します。 もし0から255までのすべてのASCII値を確認したい場合は、forループの条件を次のように変更するだけです。 for(i = 0; i < 255; i++) このように記述すれば、0か

  18. C言語で文字列の各文字のASCII値を出力するプログラム

    文字型データを要素として持つ配列のことを「文字列(string)」と呼びます。 文字列の宣言 文字列は以下の形式で宣言します。 char stringname[サイズ]; 例えば char string[50]; と記述すると、最大50文字まで格納できる文字列が定義されます。 文字列の初期化 1文字ずつの文字定数で初期化する方法 char string[10] = { H, e, l, l, o, \0 }; 文字列リテラルで初期化する方法 char string[10] = Hello; いずれの場合も、文字列の終端を示すヌル文字「\0」が必要になる点に注意してください。 文字列へのアクセス

  19. 【C言語】挿入ソートの仕組みと実装方法をわかりやすく解説

    ソート(整列)とは、データの要素を昇順または降順のいずれかの順序に並べ替える処理のことです。C言語ではさまざまなソートアルゴリズムを実装でき、それぞれ計算量や特性が異なるため、目的に応じた使い分けが重要になります。 C言語で使われる主なソートの種類 C言語でよく利用されるソート手法には、次の5つがあります。 バブルソート(交換ソート) 選択ソート 挿入ソート(線形ソート) クイックソート(分割交換ソート) マージソート(外部ソート) 挿入ソートとは 挿入ソートは、整列済みの部分に新しい要素を適切な位置へ「挿入」していくことで、配列全体を並べ替えるアルゴリズムです。トランプの手札を順番に整

  20. C言語のクイックソートを徹底解説!仕組み・手順・サンプルコード付き

    ソート(整列)とは、データの要素を昇順または降順に並べ替える処理のことです。本記事では、C言語で利用できる代表的なソート手法のひとつであるクイックソートについて、その基本的な考え方から具体的な実装方法までを詳しく解説します。 C言語で使われる主なソートの種類 C言語では、主に以下の5つのソート手法が知られています。 バブルソート(交換ソート) 選択ソート 挿入ソート(線形ソート) クイックソート(分割交換ソート) マージソート(外部ソート) クイックソートとは クイックソートは「分割統治法(divide and conquer)」に基づくアルゴリズムです。平均計算量が O(n log n)

Total 1445 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:66/73  20-コンピューター/Page Goto:1 60 61 62 63 64 65 66 67 68 69 70 71 72