パスカルの三角形のC言語の要件への6つの方法
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
三角形、その本質は、第二行から開始し、N個の係数のパワーが全ての左右を特徴とする三角形に配置されたのすべての数を拡張する(+ b)は二項ですこれは、1本のラインと隣接する二つの数字です。このトピックでは、一般的に演習をプログラミングに使用します。
以下の6つの異なる溶液が与えられています。
Aソリューション
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] [17] = {0}。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
(; I <N; I ++ I = 0)するため
[I] [0] = 1;フルセットの/ *最初のカラム* /
ための式(I = 1; iが<N; iが++)
用(J = 1; J <= iであり、j ++)
[i] [j]は[I-1] [J-1] + [I-1]〜[J] =; / *各数値は、2の数であり、上記* /
/ *出力パスカル三角形* /(; I <N I ++ I = 0)するため
{(J ++; J <= I J = 0)のための
printf( "%5dの"、[I] [J])。
printf( "\ n" は);
}
}
コメント:まず、最も可能性の高いソリューション、各パートの独立した機能、分かりやすいプログラムを考えるように一般的なソリューションを提供します。
ソリューション2
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] [17] = {1}。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
ための式(I = 1; iが<N; iが++)
{A [i]が[0] = 1;フルセットの/ *最初のカラム* /
用(J = 1; J <= iであり、j ++)
[i] [j]は[I-1] [J-1] + [I-1]〜[J] =; / *各数値は、2の数であり、上記* /
}
/ *出力パスカル三角形* /(; I <N I ++ I = 0)するため
{(J ++; J <= I J = 0)のための
printf( "%5dの"、[I] [J])。
printf( "\ n" は);
}
}
レビュー:二つの溶液徐は、最初の列は、二重ループ下に移動コマンドに設定されているに基づいて解決するには、1サイクルに低減されます。配列を初期化するために変更に注意してください。
ソリューション3
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] [17] = {0,1}。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
(; I <= N; I ++ I = 1の)のための
用(J = 1; J <= iであり、j ++)
[i] [j]は[I-1] [J-1] + [I-1]〜[J] =; / *各数値は、2の数であり、上記* /
ため(I 1 =、iが<= N; I ++)/ *出力パスカル三角形* /
{ため(J = 1; J <= I; J ++)のprintf( "%5dの"、[I] [J])。
printf( "\ n" は);
}
}
レビュー:メソッド3は、ソリューションに基づいており、2は、最初の列1は、注意配列の初期化の変化をコマンドを削除するように設定されています。
4人用
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] [17] = {0,1}。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
(; I <= N; I ++ I = 1の)のための
{(J ++; J <= I J = 1)のために
{A [i] [j]は[I-1] [J-1] + [I-1]〜[J] =; / *各数値は* /上記の2つの数の和であります
printf( "%5dの"、[I] [J]); / *出力パスカル三角形* /
}
printf( "\ n" は);
}
}
コメント:フォー溶液を3に基づいているため、計算し、二重ループで印刷マージ。
ファイブのソリューション
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] = {1}、B [17]。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
(; I <N; I ++ I = 0)するため
{B [0] = [0]。
用(J = 1; J <= iであり、j ++)
/ *各数値は、上記の2つの数の和である* /; B [j]は[J-1] + [J] =
用(J = 0; J <= iであり、j ++)
/ *出力パスカルの三角形* /
{A [j] = B [J]; / *計算された新しいラインAを割り当て、次の計算のための印刷* /
printf( "%5dの"、[J])。
}
printf( "\ n" は);
}
}
コメント:四つのためのソリューションは、より多くのスペースを取り、二次元配列に使用されています。溶液は2〜5の一次元アレイを使用します。
ソリューション6
書式#include <stdio.hに>
メイン()
{INT I、J、N = 0、[17] = {0,1}、L、R。
一方、(N <1 || N> 16)
{のprintf(「パスカルの三角形の行数を入力してください:」);
scanf関数( "%のD"、&N);
}
(; I <= N; I ++ I = 1の)のための
{L = 0。
用(J = 1; J <= iであり、j ++)
{R = A [J]。
[J] = L + R; / *各数値は、* /上記の2つの数の和であります
L = R。
printf( "%5dの"、[J]); / *出力パスカル三角形* /
}
printf( "\ n" は);
}
}
コメント:6つの解決策は、1次元配列および2つの一時変数を使用しています。