-
【C言語】3×3行列の行・列・対角線の合計を計算するプログラムの作成方法
問題 C言語を使用して、実行時に任意の9つの数値を入力し、それらを行方向・列方向・対角線方向それぞれについて合計を求めて表示するプログラムを作成します。 アルゴリズム Step 1: 9つの変数を宣言する Step 2: 実行時に9つの数値を入力する Step 3: 入力した数値を3×3行列の形式で格納する // x y z p q r &nb
-
C言語でモジュロ(剰余)と除算を区別する方法
C言語には、除算に関連する2つの算術演算子が用意されています。それぞれの役割は以下のとおりです。 剰余演算子(モジュロ):「%」で表され、整数除算の余りを返します。 除算演算子:「/」で表され、除算の商を返します。 プログラム1:基本的な使い方 #include<stdio.h> int main(){ int a, b, c; printf(enter a,b,c values:); scanf(%d%d%d,&a,&b,&c); printf(a/b=%d a%%b=%d\n, a/b, a%b); print
-
C言語の除算演算子とモジュロ演算子で数値を逆順に出力する方法
問題 Cプログラミングにおいて、入力された2桁の数値を、除算演算子とモジュロ(剰余)演算子を使って逆順に表示するにはどうすればよいでしょうか? 解決方法 これまでの記事では、文字列関数を使用する場合と使用しない場合の、文字列を反転する方法を扱ってきました。今回は、あらかじめ用意された関数に頼らずに、2桁の数値を反転させる方法を紹介します。 演算子を活用して数値を反転させる際の基本的なロジックは以下の通りです。 int firstno=number%10; // 余り(一の位)を格納 int secondno=number/10; // 商(十の位)を格納 まず一の位の数値を表示し、続けて十
-
C言語の反復処理(whileループ)で数値を逆順に出力する方法
問題C言語において、反復処理(whileループ)を使って、入力された数値を逆順に出力するにはどうすればよいのでしょうか?本記事では、その具体的な実装方法を解説します。解決策これまでの記事では、文字列関数を使用する場合と使用しない場合の、文字列を反転する方法を見てきました。今回は、あらかじめ用意されたライブラリ関数に頼らず、数値を反転して出力する方法を紹介します。アルゴリズム入力 − プログラムの実行時に数値を入力します。手順1: 変数 number と reverse を宣言する 手順2: reverse を 0 で初期化する 手順3: number > 0 の間、次の処理を繰り返す
-
C言語でアームストロング数を判定する方法
問題 C言語を使って、入力された数値がアームストロング数(Armstrong number)であるかどうかを判定するには、どのようにプログラムを書けばよいのでしょうか? 解決策 アームストロング数とは、各桁の数字を桁数乗した値の総和が、元の数値と等しくなる数のことです。3桁の数値であれば、「各桁の数字の3乗の合計」が元の数値に一致します。 構文 pqrs……=pow(p,n)+pow(q,n)+pow(r,n)+……. 例えば、153、371、1634などはアームストロング数として知られています。 153=1*1*1 + 5*5*5
-
C言語でフロイドの三角形(整数)を出力する方法をわかりやすく解説
フロイドの三角形(Floyds Triangle)とは、左上隅から1で始まる連続した整数を、直角三角形の形に並べたものです。プログラミング学習における二重ループの練習問題として非常に人気があり、C言語の基礎を固めるのに最適な題材です。フロイドの三角形とはフロイドの三角形は、次のように1から順番に数字を並べていきます。1 2 3 4 5 6 7 8 9 10第1行目には1個、第2行目には2個というように、行番号と同じ数だけ連続する整数が配置されるのが特徴です。例1:基本的なフロイドの三角形を出力する以下のプログラムでは、ユーザーに行数を入力してもらい、外側のループで行を制御し、内側のループで各行
-
C言語でパスカルの三角形の形に整数を出力する方法
パスカルの三角形とは、整数を三角形の形に配置して表現したものです。その中でも有名なのが二項定理との関連で、組み合わせや階乗の計算を利用して三角形を構成することができます。 パスカルの三角形の構成方法 三角形の外側にある値はすべてゼロ(0)として扱われます。最初の行は「0 1 0」ですが、パスカルの三角形では1だけが表示され、0は見えないものとします。2行目は「0+1」と「1+0」を足し合わせて求められ、その結果は両側をゼロに挟まれた形になります。この処理を、必要な段数に達するまで繰り返していきます。 プログラミングの観点では、パスカルの三角形は「前の行の隣接する要素を足し合わせて構成される配
-
C言語で2つの複素数を加算するプログラムを作成する方法
問題実行時にユーザーが入力した2つの複素数を、C言語のプログラムを使って加算するにはどうすればよいのでしょうか。 解決策複素数とは、実部と虚部を組み合わせた数のことです。一般的に「a+ib」という形式で表されます。ここで、aが実部、bが虚部、iは虚数単位(i² = -1)を表します。 2つの複素数を加算する場合、実部同士と虚部同士をそれぞれ足し合わせます。つまり、(a+ib) + (c+id) = (a+c) + i(b+d) という計算になります。 プログラム例として、(4+2i) と (5+3i) という2つの複素数を考えてみましょう。この2つの複素数を加算すると、結果は 9+5i となり
-
C言語で行列の転置を計算する方法!初心者向けサンプルコード2選
行列の転置とは?行列の転置(てんち)とは、元の行列の行と列を入れ替えた新しい行列のことです。たとえば、行列Aと行列Bがあったとき、Bの各行がAの対応する列と一致していれば、BはAの転置行列であるといえます。数学では A の転置を A^T のように表記します。m×n の行列を転置すると、n×m の行列になります。C言語では、m(i,j) の位置にある要素を m(j,i) へ移すことで転置を実現できます。その基本ロジックは以下の通りです。for (i = 0; i < m; i++) for (j = 0; j < n; j++) transpose[j][i]
-
C言語でダイヤモンド(ひし形)状の星パターンを出力する方法
C言語で星(アスタリスク「*」)を使ったダイヤモンド(ひし形)パターンをコンソールに表示するには、ネストしたforループ(二重ループ)を使用します。ダイヤモンドパターンを作成するときのポイントは、図形を上半分と下半分の2つの部分に分けて考えることです。それぞれの部分で、先頭に出力するスペースの数と星の数を制御することで、きれいな菱形を作り出せます。ダイヤモンドの上半分を出力するロジック上半分の出力に使うロジックは以下の通りです。// ダイヤモンドの上半分の出力ロジック: for (j = 1; j <= rows; j++){ for (i
-
if文とelse if文を使って24時間制を12時間制に変換するCプログラムの作成方法
問題C言語を使用して、24時間表記(例:22:37)で入力された時刻を、AM/PMが付いた12時間表記(例:10:37 PM)に変換するには、どのようにプログラムを作成すればよいのでしょうか?解決策プログラムの実行時にユーザーから時刻の値を入力として受け取り、条件分岐(if文とelse if文)を用いて24時間表記から12時間表記へ変換します。ポイントは、時(hour)の値に応じて以下のように場合分けすることです。時が「0」の場合 → 午前0時なので「12:xx AM」と表示する時が「1〜11」の場合 → そのまま「x:xx AM」と表示する時が「12」の場合 → 正午なのでそのまま「12:x
-
C言語プログラムで数列の最大値と最小値を求める方法
問題 コンソールからユーザーが入力した4つの整数の中から、最も大きい数(最大値)と最も小さい数(最小値)を見つけます。 解決方法 最大値と最小値を求めるには、if文による条件分岐を使用します。まず1つ目の入力値を仮の最大値・最小値として設定し、残りの数値と順番に比較していきます。比較の基本ロジックは以下の通りです。 if(minno>q) // 1番目と2番目の数を比較 minno=q; else if(maxno<q) maxno=q; if(minno>r) // 1番目と3番目の数を比較
-
【C言語】switch文を使って数字を英語の単語形式に変換する方法
問題 C言語を使用して、入力された1桁または2桁の数字を英語の単語形式に変換することはできるのでしょうか? 解決策 switch文(switch case)を活用すれば、2桁の数字を英語の単語形式へ簡単に変換できます。さらに、この手法は2桁に限らず、任意の数値への変換にも応用が可能です。 本記事では、1桁および2桁の数字を英語の単語形式に変換するC言語プログラムを紹介します。 プログラムの処理の流れ まず、入力された数値が0〜99の範囲内にあるかどうかをif文で判定します。範囲外の数値が入力された場合は「Invalid number」と表示して処理を終了します。 10〜19の数値は「elev
-
C言語のwhileループで2つの数値の最大公約数(GCD)を求める方法
問題C言語を使用して、任意の2つの整数の最大公約数(GCD:Greatest Common Divisor)を求めるプログラムを作成します。解決策まず、ユーザーにコンソールから任意の2つの数値を入力してもらいます。そして、入力された2つの数値に対して最大公約数を計算します。2つの数値のGCD(最大公約数)とは、その2つの数値をどちらも余りなしで割り切ることができる最大の整数のことです。2つの数値のGCDを求めるために使用するロジックは以下の通りです。while(b!=0) // a/b の除算では b が 0 であってはならないため、b=0 かどうかをチェック { rem = a %
-
C言語の定数の種類とは?基本定数と二次定数の違いを解説
定数(constant)とは、プログラムの実行中に値を変更できない、固定された値のことを指します。C言語では、数値・文字・文字列のいずれも定数として扱われ、任意のデータ型を持つことができます。なお、定数は「リテラル(literal)」とも呼ばれます。定数の2つの種類C言語における定数は、大きく以下の2種類に分類されます。基本定数(Primary Constants)整数(integer)、浮動小数点数(float)、文字(character)は「基本定数」と呼ばれます。最も基本的なデータ型そのものを表す定数です。二次定数(Secondary Constants)配列(array)、構造体(st
-
whileループを使って分数を約分(既約分数)するCプログラムの作成方法
分数を約分するとは? 分数を約分して既約分数にするとは、分子と分母の両方を割り切れる数が「1」以外に存在しない状態にすることを指します。 例えば、24/4という分数の最も簡単な形は「6」であり、12/16という分数であれば「3/4」が既約分数となります。 それでは、whileループを使用して分数を約分するCプログラムを作成してみましょう。 例1:ユークリッドの互除法を使う方法 このプログラムでは、ユークリッドの互除法(剰余演算を繰り返して最大公約数を求める古典的手法)を用いています。まず分子と分母の値を保存し、whileループの中で余りを計算しながら最大公約数(GCD)を求めます。最後に、その
-
C言語のビット演算子(XOR)を使って2つの数値を交換する方法
C言語では、一時変数を使用せずに、ビット演算子(XOR)だけで2つの数値を交換することができます。この記事では、その仕組みと具体的な実装方法を解説します。 問題 Cプログラミングにおいて、ビット演算子を使って2つの数値を交換するにはどうすればよいのでしょうか。 解決策 コンパイラは、まず与えられた10進数を2進数に変換します。その後、ビットごとのXOR演算を実行することで、メモリ上の別の場所へ数値を交換します。この方法の最大の特徴は、第3の変数(一時変数)が不要という点です。 アルゴリズム 処理の手順は以下の通りです。 START Step 1: 2つの変数 a と b を宣言する Step
-
C言語で配列の任意の位置に要素を挿入する方法
C言語では、配列の好きな位置に要素を挿入できます。つまり、先頭・中間・末尾など、配列内のどの場所にも自由に挿入することが可能です。ただし、要素を挿入した後に各要素の位置(インデックス)は後ろへずれますが、これは配列そのもののサイズが大きくなることを意味するわけではない点に注意しましょう。あらかじめ確保しておいた領域の範囲内で、既存の要素を後ろに移動させて空きを作り、そこに新しい値を書き込むという仕組みです。要素挿入の基本的なロジック配列のサイズ(要素数)を入力する要素を挿入したい位置を入力するその位置に挿入する値を入力する実際の挿入処理は、以下のように後ろから順に要素を1つずつ右へシフトさせる
-
C言語のforループで1からnまでの偶数の平方を生成する方法
偶数の平方数とは、2、4、6、8…といった偶数を2乗した数値のことです。具体的には以下のような数列になります。22 = 4、42 = 16、62 = 36、82 = 64、102 = 100 …本記事では、C言語のforループを使って、1からnまでの範囲に含まれる偶数の平方数を出力する方法を解説します。アルゴリズムSTART Step 1: 変数aとnを宣言する Step 2: 実行時に数値nを読み込む Step 3: forループを使って平方数を出力する for(a=2; a*a<=n; a+=2) 条件が満たされている間ループを継続し、 a*
-
C言語のforループを使って、ユーザーが指定した1か月分のカレンダーを表示する方法
はじめにC言語では、forループを組み合わせることで、「その月の日数」と「初日の曜日」をもとに、1か月分のカレンダーを簡単に表示できます。この記事では、その基本的なロジックとサンプルプログラムを解説します。カレンダー表示のロジック1か月分のカレンダーを表示するための基本的なロジックは以下の通りです。for(i=1;i<first;i++) printf( );for(i=1;i<=noofdays;i++){ printf(%3d,i); if(