10基本的なアルゴリズムのC言語

10基本的なアルゴリズムのC言語

 

 

アルゴリズムは、優秀なプログラマーとして、プログラムやソフトウェアの魂であり、唯一のいくつかの基本的なアルゴリズムのは、包括的な把握している、それは設計プロセスと書き込みコードの過程に便利と思われます。この記事は、ほぼC言語のアルゴリズムは、古典的なフィボナッチ数列、単純な計算機を含む一連の第二、である、そのような素数チェックアルゴリズムとして、パリンドロームをチェックします。おそらく彼らは、設計することができますか面接はあなたの卒業に便利になります。

 

1、フィボナッチ数列を計算します

 

1,1,2,3,5,8,13,21:また、このような一連を参照、また、金色の列としても知られているフィボナッチ数列フィボナッチ数、として知られています。

 

C言語のコードは次のとおりです。

/ * nは、ユーザによって入力されたn番目の項までフィボナッチ数列を表示します。* /
の#include <stdio.hの>
int型のmain()
{
int型の数、nは、T1 = 0、T2 = 1、表示= 0。
printf(「用語の数を入力してください。」);
scanf関数( "%のD"、&N);
printf( "フィボナッチシリーズ:%のD +%のD +"、T1、T2)。/ * * /最初の二つの用語を表示する
2 =数えます。/ *最初の2項が既に表示されているため、カウント= 2。* /
(カウント<n)の一方
{
表示= T1 + T2。
T1 = T2。
T2 =ディスプレイ。
++数えます。
printf( "%のD +"表示)。
}
0を返します。
}
结果输出:

多くの用語を入力:10
フィボナッチシリーズ:+を1 1 + 0 + 2 + + 8 3 5 + + + 34は、21である13である+ +は
以下のソースコードを使用してもよいです。

/ *ユーザーが入力した一定数までのフィボナッチ数列を表示します。* /

の#include <stdio.hの>
int型のmain()
{
int型のT1 = 0、T2 = 1、表示= 0、NUM。
printf(「整数を入力してください。」);
scanf関数( "%のD"、&NUM)。
printf( "フィボナッチシリーズ:%のD +%のD +"、T1、T2)。/ * * /最初の2つの項を表示する
表示= T1 + T2。
(表示<NUM)一方
{
のprintf( "%のD +"表示)。
T1 = T2。
T2 =ディスプレイ。
表示= T1 + T2。
}
0を返します。
}
结果输出:

200:整数入力
フィボナッチシリーズ:0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 + 144 +


2、回文をチェック

 

出典:

数が回文かどうか* /であるか否かをチェックする/ * Cプログラム

の#include <stdio.hの>
int型のmain()
{
int型のn = 0、REM、一時逆。
printf(「整数を入力してください。」);
scanf関数( "%のD"、&N);
TEMP = N。
一方、(TEMP!= 0)
{
REM =一時10%。
* 10 +レムを逆転=逆。
TEMP / = 10。
}
/ *数、ユーザーが入力したと、それは逆の数だが等しいかどうかの確認。* /
(逆== N)の場合
のprintf( "%dはパリンドロームである。"、N)

のprintf( "%dは回文ではありません。"、n)は、
0を返します。
}
结果输出:

整数を入力します。12321
12321は回文です。


3、素数チェック

 

注:1が結合していないにも素数でもありません。

 

出典:

/ * Cプログラムでは、数が素数であるかどうかをチェックします。* /

の#include <stdio.hの>
int型のmain()
{
int型N、I、フラグ= 0。
printf(「正の整数を入力してください。」);
scanf関数( "%のD"、&N);
以下のための(I = 2; I <= N / 2; ++ I)
{
IF(N%I == 0)
{
フラグ= 1。
ブレーク;
}
}
もし(フラグ== 0)
のprintf( "%dは素数である。"、N)

のprintf( "%dは素数ではありません。"、N)。
0を返します。
}
结果输出:

正の整数を入力します:29
29は素数です。


図4に示すように、印刷ピラミッドと三角形

 

*使用して三角形の確立

*
* *
* * *
* * * *
* * * * *
出典:

する#include <stdio.hの>
int型のmain()
{
int型I、J、行;
;のprintf( "行数を入力してください")
; scanfの( "%のD"、および行)
。(I = 1; I <=行; Iは++)
{
(Jは= 1; J <= I; J ++)
{
のprintf( "*");
}
のprintf( "\ N-");
}
戻り0;
}
図に示す数値を用いて以下。半分のピラミッドを印刷します。

1
。1 2
1 2 3
1 2 3 4
1 2 4 3 5。
出典:

する#include <stdio.hの>
INT)(主
{
int型I、J、行。
printf(「行数を入力してください。」);
scanf関数( "%のD"、&行)。
(++ I; iは=行を<I = 1)のために
{
(; J <= I; ++ J J = 1)のための
{
のprintf( "%dの"、J)。
}
のprintf( "の\ n");
}
0を返します。
}
用*打印半金字塔

* * * * *
* * * *
* * *
* *
*
出典:

する#include <stdio.hの>
INT)(主
{
int型I、J、行。
printf(「行数を入力してください。」);
scanf関数( "%のD"、&行)。
- (I; I> = 1、I =行)のために
{
ため(J = 1; J <= I; ++ j)は
{
のprintf( "*")。
}
のprintf( "の\ n");
}
0を返します。
}
用*打印金字塔

*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
出典:

する#include <stdio.hの>
int型のmain()
{
iがINT、スペース、行、K = 0。
printf(「行数を入力してください。」);
scanf関数( "%のD"、&行)。
(++ I; iは=行を<I = 1)のために
{
ため(スペース= 1;空間<=行-I; ++空間)
{
のprintf(」「)。
}
ながら(K = 2 * I-1!)
{
のprintf( "*")。
++ K;
}
K = 0。
printf( "\ n")を。
}
0を返します。
}
用*打印倒金字塔

* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
出典:

する#include <stdio.hの>
int型のmain()
{
int型の行、I、J、空間。
printf(「行数を入力してください。」);
scanf関数( "%のD"、&行)。
- (I; I> = 1、I =行)のために
{
ため(スペース= 0;空間<行-I; ++空間)
のprintf(」「)。
(; J <= 2 * I-1 ++ J J = I)のため
のprintf( "*")。
(;; J <I-1 ++ J J = 0)のため
のprintf( "*");
printf( "\ n")を。
}
0を返します。
}


図5に示すように、単純な加算と減算、乗算、除算演算器

 

出典:

/ *ソースコードは、Cプログラミングでスイッチ... case文を使用して加算、減算、乗算、除算のためのシンプルな電卓を作成します。* /

#含まに<stdio.h>
int型のmain()
{
チャーO;
フロートNUM1、NUM2。
printf(「演算子+または入力-または*または除算:」)。
scanf関数( "%のC"、&O)。
printf(「2つのオペランドを入力してください。」);
scanf関数( "%F%F"、&NUM1、&NUM2)。
スイッチ(O){
ケース'+':
のprintf( "%1F +%.1f =%.1f"、NUM1、NUM2、NUM1 + NUM2)。
ブレーク;
ケース' - ':
のprintf( "%1F - %.1f =%.1f"、NUM1、NUM2、NUM1、NUM2)。
ブレーク;
ケース'*':
のprintf( "%1F *%.1f =%.1f"、NUM1、NUM2、NUM1の*のNUM2)。
ブレーク;
ケース'/':
printf( "%1F /%.1f =%.1f。"、NUM1、NUM2、NUM1 / NUM2)。
ブレーク;
デフォルト:
オペレータが他のある/ *場合より+、 - 、*または/、エラーメッセージが表示される* /
printfの( "!エラーは、オペレータが正しくありません");
ブレーク;
}
0を返します。
}
结果输出:

オペレータのいずれか+かを入力する-または*または分割: -
入力2つのオペランド:3.4
8.4
3.4 - 8.4 = -5.0


図6に示すように、チェックの数は2つの素数の和として表すことができると

 

出典:

する#include <stdio.hの>
INTプライム(int型N);
INTのmain()
{
int型N、I、フラグ= 0。
printf(「正の整数を入力してください。」);
scanf関数( "%のD"、&N);
(; iは= N / 2 <; ++ I I = 2)のための
{
IF(!プライム(I)= 0)
{
IF(!)のNi(プライム= 0)
{
のprintf( "%のD =%のD +% dは\ nを」、N、I、NI);
フラグ= 1。
}

}
}
(フラグ== 0)場合
のprintf( "%dは2つの素数の和として表現することはできません。"、N)。
0を返します。
}
INTプライム(int型n)を素数をチェックする/ *機能* /
{
int型I、フラグ= 1。
以下のための(I = 2; I <= N / 2; ++ I)
IF(N%I == 0)
フラグ= 0。
フラグを返します。

34:正の整数入力
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17


7、逆​​に文字列を再帰的に

 

出典:

文字列を使用せずにユーザーが入力した文を逆にする/ *例。* /

書式#include <stdio.hに>
無効リバース();
int型のmain()
{
のprintf( "文を入力してください。");
逆();
0を返します。
}
ボイドリバース()
{
チャーC。
scanf関数( "%のC"、&C);
もし(!C = '\ n'は)
{
リバース();
printf( "%のC"、C)。
}
}
结果输出。

文を入力します。margorpをemosewa
素晴らしいプログラム


図8は、バイナリと小数間の変換を達成するために

 

/ * Cプログラムのソースコードは、ユーザによって入力されたデータに応じてバイナリに2進数から10進数への又は小数のいずれかに変換します。* /

の#include <stdio.hに>
する#include <math.h>の
整数binary_decimal(INT N)。
INT decimal_binary(INT N)。
メインINT()
{
int型のn;
char型のC;
printf( "指示:\ nを");
printf( "1 \ nは2進数から10進数への変換にアルファベット'D'を入力します。。");
printf( "2進10進変換するアルファベット'b'を入力します\ nを。");
scanf関数( "%のC"、&C);
(C == 'D' || C == 'D')であれば
{
のprintf( "進数を入力してください")。
scanf関数( "%のD"、&N);
printf( "小数でバイナリ=%d個の%d"、N、binary_decimal(N))。
}
IF(C == 'B' || C == 'B')
{
printf(「進数を入力してください。」);
scanf関数( "%のD"、&N);
printf( "小数の%d =%バイナリでD"、N、decimal_binary(N))。
}
0を返します。
}

INT decimal_binary(INT N)/ *関数がバイナリに小数を変換する* /。
{
int型のREM、I = 1、バイナリ= 0。
一方、(N!= 0)
{
REM = N%2。
N / A = 2。
バイナリ+ = REM * I。
私は= 10 *;
}
バイナリ返します。
}

INT binary_decimal(INT N)/ *機能は小数点バイナリに変換する* /。
{
int型の小数= 0、I = 0、REM。
一方、(N!= 0)
{
REM = N%10。
N / A = 10。
小数+ = REM * POW(2、I)。
++私は、
}
小数返します。
}


出力結果:

 

図9に示すように、多次元アレイは、二つの行列の和を使用して実装しました

 

出典:

する#include <stdio.hの>
int型のmain(){
int型のR、C、[100] [100]、B [100] [100]、合計[100] [100]、I、J。
printf(「1から100までの行数を(入力)」)。
scanf関数( "%のD"、&R)。
printf(「1から100までの列の数(入力)」)。
scanf関数( "%のD"、&C);
printf( "第一マトリックスの\のnEnter要素:\ nを");

/ *ユーザが入力した第1のマトリックスの要素を格納します。* /

(; I <R、I = 0 ++ i)に対する
(; J <C ++ J、J = 0)のための
{
のprintf( "%D%Dエレメントを入力してください"、I + 1、J + 1);
scanf関数( "%のD"、および[I] [J])。
}

/ *ユーザが入力した第2の行列の格納要素。* /

printfの( "第二行列の要素を入力します:\ nを");
(I = 0; I <R。


printf( "%D%Dエレメントを入力してください"、私はJ + 1、1 +)。
scanf関数( "%d個"、&B [i]は[J])。
}

/ * * /二つの行列を追加する

ための式(I = 0; I <R; ++ i)が
ため(J = 0; J <C; ++ j)の
和[i] [j]は[I] [Jが= ] + B [i]は[J]。

/ *結果の和行列を表示します。* /

のprintf( "2つの行列の\ nSumは:\ n \ n");
(; I <R ++ I I = 0)のための
ための(j = 0; J <C; ++ j)は
{
のprintf( "%dの"、和[I] [J])。
IF(jは== C-1)
のprintf( "\ nをする\ n");
}

0を返します。
}


10、行列転置

 

出典:

する#include <stdio.hの>
int型のmain()
{
[10] [10]、トランス- [10] [10]、R、C、I、J INT。
printf(「行と行列の列を入力してください。」);
scanf関数( "%dの%のD"、&R&C)

/ * [] []配列にユーザが入力した行列の要素を格納します。* /
のprintf( "マトリックスの\のnEnter要素:の\ n");
(++ iは; I <R I = 0)のための
ための(j = 0; J <C; ++ j)は
{
のprintf( "%D%Dの要素を入力します"、I + 1、J + 1) ;
scanf関数( "%のD"、および[I] [J])。
}
/ * [] [] * /マトリックス表示
のprintf( "\ nEnteredマトリックス:\ n");
(; I <R ++ I I = 0)のための
ための(j = 0; J <C; ++ j)は
{
のprintf( "%dの"、[I] [J])。
もし(jは== C-1)
のprintf(」


/ * [] []行列の転置とアレイトランス[] []に格納見つけます。* /
(I = 0; I <R; ++ i)について
用(J = 0; J <C; ++ J)
{
トランス[j]は[I] [I] [j]を=。
}

/ *転置を表示する、すなわち、表示アレイトランス[] []。* /
printfの( "\行列のnTransposeます:\ n");
用(i = 0; iはCを<; ++ I)
のために(J = 0; J <R; ++ j)は
{
のprintf( "%dの"、トランス[I] [J])。
IF(J == R-1)
のprintf( "\ nをする\ n");
}
0を返します。
}

おすすめ

転載: www.cnblogs.com/dxg123/p/11458404.html