Cプログラミング

 Computer >> コンピューター >  >> プログラミング >> Cプログラミング
  1. C言語のユニオンへのポインタをわかりやすく解説!宣言方法からアクセス方法まで

    C言語におけるユニオン(union)とは、異なるデータ型の複数の変数が同じメモリ領域を共有する仕組みです。構造体(struct)と似ていますが、すべてのメンバーがメモリを占有する構造体とは異なり、ユニオンでは一度に1つのメンバーしか値を保持できません。この記事では、ユニオンへのポインタの使い方について、基本構文から実践的なサンプルコードまで詳しく解説します。ユニオンへのポインタの基本構文C言語でユニオンを定義する際の基本的な構文は以下のとおりです。union uniontag{ datatype member1; datatype member2; ---- -

  2. C言語の文字操作を徹底解説!宣言方法と入出力関数の使い方

    Cプログラミング言語において、文字(character)は英大文字(A〜Z)、英小文字(a〜z)、数字(0〜9)、空白(ホワイトスペース)、または特殊記号のいずれかとして扱われます。文字の宣言方法C言語で文字型変数を宣言する際は、char 型を使用します。文字定数はシングルクォーテーション( )で囲んで指定します。char a = A; /* 文字定数を使用した宣言 */このように宣言することで、変数 a に1文字分のデータを格納できます。文字入出力関数の種類C言語には、文字を入出力するための関数がいくつか用意されています。代表的なものは以下の3組です。scanf / printf: 書式指定

  3. 【C言語】文字列内の各文字の出現頻度を数えるプログラムの書き方

    この記事では、文字列内に含まれる各文字(アルファベット)の出現頻度を数えるC言語プログラムの作成方法を解説します。ASCIIコードの仕組みを利用したシンプルな手法なので、初心者の方にも理解しやすい内容です。アルゴリズム各文字の頻度をカウントするプログラムは、以下の手順で実装できます。ステップ1:最大サイズ(MAX)を定義する。 ステップ2:char型とint型の変数を宣言する。 ステップ3:コンソールから文字列を読み込む。 ステップ4:文字列の長さを求める。 ステップ5:各文字の頻度を0で初期化する。 ステップ6:各文字の出現回数の合計を求める。 for(i=0; i<length; i

  4. C言語で文字列内に最も多く出現する文字を検索するプログラム

    文字型データの配列は「文字列」と呼ばれます。C言語では、文字列はヌル文字(\0)で終わる文字配列として扱われます。 文字列の宣言 文字配列(文字列)を宣言する構文は以下のとおりです。 char stringname [size]; 例えば、char string[50]; と宣言すると、最大50文字まで格納できる文字列が定義されます。 文字列の初期化 文字列の初期化には、主に次の2つの方法があります。 1. 文字定数を使う方法 char string[10] = { H, e, l, l, o, \0 }; 2. 文字列リテラルを使う方法 char string[10] = Hello; アク

  5. C言語で2つの時刻の差を計算するプログラム

    本記事では、開始時刻と終了時刻を「時・分・秒」の形式で入力し、両者の差を計算するC言語のプログラムを解説します。 時刻の差を求めるロジック 開始時刻と終了時刻の差を求める際の基本的な考え方は以下の通りです。秒や分の引き算で桁が不足する場合は、上位の単位から1を借りて60を加えることで、各単位ごとに正しく差を計算できます。 while (stop.sec > start.sec){    --start.min;    start.sec += 60; } diff->sec = start.sec - stop.sec; while (sto

  6. 【C言語】三角形が正三角形・二等辺三角形・不等辺三角形のどれかを判定するプログラムの作り方

    三角形は3つの辺と3つの角で構成されます。3つの辺の長さに着目すると、三角形は次の3種類に分類できます。 正三角形(equilateral triangle):3つの辺がすべて等しい 二等辺三角形(isosceles triangle):2つの辺が等しい 不等辺三角形(scalene triangle):等しい辺がひとつもない 本記事では、ユーザーが入力した3辺の値をもとに、三角形が正三角形・二等辺三角形・不等辺三角形のいずれであるかを判定するC言語プログラムを紹介します。まずは処理の流れとなるアルゴリズムから確認していきましょう。 アルゴリズム Step 1: 三角形の3辺を表す変数を宣

  7. C言語で数値のビットを回転させるプログラムの書き方【左回転・右回転】

    指定された数値のビットを回転させるCプログラムを作成するには、あらかじめ以下のポイントを考慮しておく必要があります。 ビットを左から右、または右から左のいずれかの方向に回転させます。 左回転では、各ビットが左方向へ1ビットずつシフトされ、はみ出した最上位ビット(MSB)が最下位ビット(LSB)側へ移動します。 右回転では、各ビットが右方向へ1ビットずつシフトされ、はみ出した最下位ビット(LSB)が最上位ビット(MSB)側へ移動します。 対象となる数値を用意し、プログラムの仕様に応じて左回転・右回転のいずれかを実行します。 ユーザーは実行時に、回転させる回数とともに対象の数値を入力します。

  8. C言語で2進数の末尾・先頭のゼロの個数をカウントするプログラム

    まずは、2進数における「末尾のゼロ(トレーリングゼロ)」とは何かを理解しましょう。 末尾のゼロ(Trailing Zeros)とは 2進数において、最下位ビット(LSB)側から見て最初に現れる「1」より後ろに続くゼロのことを、末尾のゼロと呼びます。 例 10進数の104を例に考えてみます。 104を2進数に変換すると:(MSB)1101000(LSB) ここで、 MSBとは最上位ビット(Most Significant Bit)のことです。 LSBとは最下位ビット(Least Significant Bit)のことです。 LSB側から見て最初に「1」が立っているビットより後ろには、ゼロが3

  9. C言語でスパース行列(疎行列)を判定するプログラムの作成方法

    行列の要素の大部分がゼロである場合、その行列はスパース行列(疎行列)と呼ばれます。例:3×3行列1 1 0 0 0 2 0 0 0この行列では、9個の要素のうち6個がゼロであり、大多数がゼロであるため、スパース行列に該当します。問題与えられた行列がスパース行列であるかどうかを判定します。解決のアプローチ行列内のゼロの個数が (行数 × 列数) ÷ 2 より大きいかどうかを確認します。ゼロの個数が半分を超えていればスパース行列と判定し、そうでなければスパース行列ではないとします。プログラム以下は、与えられた行列がスパース行列かどうかを判定するC言語のプログラムです。#include<std

  10. C言語で2つの配列をマージ(結合)する方法をわかりやすく解説

    C言語では、2つの配列を入力として受け取り、それらをマージ(結合)して結果を3つ目の配列に格納することができます。本記事では、ソート済みの2つの配列を1つに統合する方法を、サンプルコードと実行結果とともに解説します。配列をマージする基本ロジック2つの配列をマージする際の基本的な考え方は、両方の配列を先頭から順に比較し、小さい方の要素を結果用の配列に格納していくというものです。これにより、マージ後の配列も自動的に昇順にソートされた状態になります。マージ処理のロジックは以下の通りです。j=0, k=0 for(i=0;i<o;i++) { // 2つの配列をマージ if(a[j]&l

  11. C言語で配列内の重複要素を削除するプログラムの書き方

    配列内に存在する同じ数値を削除し、一意な要素だけで構成される配列を作成する方法を紹介します。重複要素を削除するロジック配列内の重複要素を削除するための基本的な考え方は、外側のループで基準となる要素を選び、内側のループでその後ろにある要素と順番に比較します。同じ値が見つかったら、その位置以降の要素をひとつずつ左にシフトして上書きすることで、重複を取り除きます。具体的なロジックは以下の通りです。for(i=0; i<number; i++){    for(j = i+1; j < number; j++){   &

  12. C言語の列挙型(enum)とは?定義方法と使い方を実例付きで解説

    列挙型(enumerated data type)は、プログラマが独自のデータ型を作成し、そのデータ型を持つ変数が取りうる値を明確に定義するために使用される仕組みです。宣言にはenumというキーワードを使用します。列挙型を使うことで、曜日や月などの関連する定数群に名前を付けられ、コードの可読性と保守性が向上します。構文列挙型の基本的な構文は以下の通りです。enum タグ名{   識別子1, 識別子2,……,識別子n};記述例以下は、曜日を表す列挙型の定義例です。enum week{   mon, tue, wed, thu,

  13. C言語で2の補数を求めるプログラム|1の補数からの計算方法とサンプルコード

    コンピュータ内部では、負の整数を表現するために「2の補数」が広く使われています。本記事では、与えられた2進数に対して2の補数を求めるC言語のプログラムを、考え方(アルゴリズム)から実行結果までわかりやすく解説します。 2の補数とは 2の補数とは、ある2進数の各ビットを反転させた「1の補数」に1を加えた値のことです。減算を加算として処理できるため、多くのCPUが負の数の表現に採用している重要な概念です。 2の補数を求める2つの方法 与えられた2進数の2の補数は、次のいずれかの方法で計算できます。 方法1: まず与えられた2進数を1の補数に変換し、その結果に1を加算します。 方法2: 最下位ビッ

  14. C言語で数値が強数(ストロングナンバー)かどうかを判定するプログラムの書き方

    強数(ストロングナンバー)とは?強数(Strong Number)とは、各桁の数字の階乗をすべて足し合わせた合計が、元の数値そのものと一致する数のことです。例1:123 の場合123! = 1! + 2! + 3!= 1 + 2 + 6 = 9各桁の階乗の合計は9となり、元の数値123と一致しないため、123は強数ではありません。例2:145 の場合145! = 1! + 4! + 5!= 1 + 24 + 120= 145各桁の階乗の合計が145となり、元の数値と一致しているため、145は強数です。判定のアルゴリズム与えられた数値が強数かどうかを判定するには、以下の手順で処理を行います。数値

  15. C言語で文字列内の母音を大文字・小文字に変換する方法

    文字型データを並べた配列のことを「文字列」と呼びます。 文字列の宣言 C言語で文字列を扱うには、まずchar型の配列を宣言します。 char stringname [size]; 例えば char a[50]; と宣言すれば、最大50文字の文字列を格納できます。 文字列の初期化 文字列の初期化には、主に次の2つの方法があります。 1文字ずつ文字定数として代入する方法: char a[10] = { H, e, l, l, o, \0 }; 文字列定数でまとめて代入する方法: char a[10] = Hello; 文字列へのアクセス 文字列の入出力には制御文字列「%s」を使用します。「%s」は

  16. 【初心者向け】C言語で二次方程式の根(解)を求めるプログラムの作り方

    問題ソフトウェア開発の手法をC言語に適用し、二次方程式の根(解)を求めるプログラムを作成します。解決策二次方程式 ax2 + bx + c = 0 の根を求めます。二次方程式には必ず2つの根が存在します。分析入力:係数 a、b、c の値出力:根 r1、r2 の値手順(解の公式)二次方程式の根は、以下の「解の公式」によって求めることができます。$r_{1}=\frac{-b+\sqrt{b^2-4ac}}{2a}$$r_{2}=\frac{-b-\sqrt{b^2-4ac}}{2a}$ここで、b2 − 4ac を判別式と呼びます。判別式の値によって、根の性質が次のように変わります。判別式 >

  17. C言語の関数にはどんな種類がある?ライブラリ関数とユーザー定義関数の違いを解説

    C言語における関数は、その定義方法によって大きく以下の2種類に分類されます。 事前定義関数(ライブラリ関数) ユーザー定義関数 事前定義関数(ライブラリ関数)とは システムが提供するライブラリ内で、すでに定義済みの関数です。 プログラマーはライブラリ内の既存コードを再利用できるため、エラーの少ない効率的なコードを書くことができます。 利用する際は、あらかじめ関数の構文(プロトタイプ)を把握しておく必要があります。 たとえば、sqrt() 関数は math.h ライブラリに含まれており、y = sqrt(x) の形式で使用します。ここで x は正の数である必要があります。 x の値が

  18. C言語の条件分岐を完全解説!フローチャートとサンプルプログラムで学ぶ意思決定処理

    C言語における「意思決定(条件分岐)」とは、条件が真(True)か偽(False)かを判定し、その結果に応じて実行する処理を切り替える仕組みです。プログラムに柔軟な制御を持たせるために欠かせない概念であり、以下のような分岐文があります。単純if文(simple – if statement)if–else文ネストしたif–else文else–ifラダーswitch文本記事では、それぞれの構文・フローチャート・サンプルプログラムと実行結果を順番に解説していきます。1. 単純if文(simple – if statement)「if」キーワードは、論理条件が真である場合に、一連のステートメントを実

  19. C言語の関数の分類とは?引数と戻り値による4つのカテゴリを解説

    C言語における関数は、引数(ひきすう)の有無と戻り値(返り値)の有無という2つの観点から、以下の4つのカテゴリに分類できます。引数なし・戻り値なしの関数引数なし・戻り値ありの関数引数あり・戻り値なしの関数引数あり・戻り値ありの関数それぞれのカテゴリについて、サンプルコードと実行結果を交えながら詳しく見ていきましょう。1. 引数なし・戻り値なしの関数このタイプの関数は、呼び出し元からデータを受け取らず、計算結果も返しません。関数内で入力・処理・表示をすべて完結させるため、単純な処理に向いています。サンプルコード#include<stdio.h>main() {  

  20. C言語のスコープルール徹底解説!グローバル変数とローカル変数の違いとは

    C言語では、変数がどこで宣言されたかによって、その変数を参照できる範囲(スコープ)が決まります。スコープの理解は、バグの防止や読みやすいコードを書くために非常に重要です。本記事では、グローバルスコープとローカルスコープの基本ルールを、実行例とともにわかりやすく解説します。 グローバルスコープ(大域スコープ)とは グローバルスコープとは、関数やブロックの外側で宣言された変数が適用されるスコープのことです。グローバル変数は、プログラムの先頭からプログラム終了まで、すべての関数から参照・操作することができます。 サンプルコード #include <stdio.h> int c = 30

Total 1445 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:58/73  20-コンピューター/Page Goto:1 52 53 54 55 56 57 58 59 60 61 62 63 64