目次
❤ ブロガー CSDN: Ah Su は学びたい
▶コラム分類:C言語◀
C言語の学習は、将来他の言語を学習するための強固な基盤を築くことであり、Cはすべてを生み出します!
C言語の旅を始めましょう!✈
序文:
知識を学んだ後、脳を知って手をそのままにしておくのではなく、実際にコードを習得したことを確認するために、手でコードを入力する必要があります。
1. 練習問題
1.1 1 から 100 までの奇数を出力する
最初の方法:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 100; i+=2)
{
printf("%d ", i);
}
return 0;
}
印刷時に偶数を積極的に避け、印刷されたものはすべて奇数です.
2 番目の方法:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 100; i++)
{
if(i%2 != 0)
{
printf("%d ", i);
}
}
return 0;
}
2で割り切れるか判断して、2で割り切れなければ奇数ということで、if文を入力して出力します。
1.2 n の階乗を計算する
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int ret = 1;
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
ret *= i;
}
return 0;
}
計算する階乗を表すために n を使用すると、i は 1 から n まで増加するループ変数です。すべての i を ret 変数に乗算します。*= は累積効果があり、ret は 1 に初期化されます。これは乗算のプロセスには影響しません。
1.3 n階乗に達する最初のm階乗の合計を計算する
どういう意味ですか?例: 最初の 4 つの階乗を 5! に追加します。つまり、1!+2!+3!+4 ! の合計を求めます。
最初:
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int j = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for(i = 1; i < n; i++)
{
ret = 1;
for(j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
return 0;
}
n を使用して到着の階乗を決定します。 i < n は、 n に到達する前にいくつの数値があるかを意味します。i ループ内の j ループは、 i の値に基づいて階乗を計算します。例: i が 1 に等しい場合、j の巡回は 1 の階乗を見つけ、それを合計に追加します。次に i は 2 になり、j の巡回は 2 の階乗を見つけ、それが合計に追加されます。つまり、1 から n-1 までの階乗がすべて sum に追加されます。
注:条件を満たすたびに、ret を 1 に再割り当てします。これは、0 に再割り当てされていない場合、ret は前の数の階乗を表し、1 に再割り当てされていない場合は累積乗算に影響するためです。
たとえば、一度 i が 3 でループに入ると、最後は 2 の階乗を合計に追加することでした。は 2 の階乗です。次に 3 の階乗が見つかった場合、ret の 2 が影響します。それだけです: 2 * 1 * 2 * 3。したがって、 1 * 1 * 2 * 3 である 1 として割り当てる必要があります。
2 番目のタイプ:
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for (i = 1; i < n; i++)
{
ret *= i;
sum += ret;
}
printf("%d", sum);
return 0;
}
factorial を計算するときに、以前の方法が部分的に繰り返されていることを明確に感じることができます。たとえば、2 の階乗を見つけるには、ret は次のようになります: 1 * 1 * 2; 3 の階乗を見つけるには、ret は次のようになります: 1 * 1 * 2 * 3; 私たちは機知に富んだ頭脳を使用します、ding~
このようにして 3 の階乗を見つけることもできます、つまり、前の数の階乗に階乗を必要とする数を掛けます。= 2! *3; 突然開いた小屋です。
もちろん、最後に忘れてはならないのは、計算された階乗が大きすぎてはならないということです。これは、整数型の格納範囲を超えると切り捨てられ、計算された値が間違っているためです。
1.4 動的ストリング変更の効果を実証する
#include <stdio.h>
#include <string.h>
#include <Windons.h>
int main()
{
char arr1[] = "hello, welcom to C"
char arr2[] = "******************"
int left = 0;
int right = strlen(arr1) - 1;
while(left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s", arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
この問題をゆっくりと分析してみましょう. まず, 同じ長さの 2 つの配列を作成します. left は数値の左添字を意味し, right は右添字を意味します. strlen は文字列の長さを探しており、配列は添え字 0 から始まるため、右側の添え字は文字列の長さから 1 を引いたものです。次にループし、arr2 の左側の文字を arr1 の左側の文字に割り当て、arr2 の右側の文字を arr1 の右側の文字に割り当て、left++、添え字を右に移動させ、最初は h である文字 e の位置。権利の減額・減額も同じで、ブロガーは繰り返さない〜
Sleep 関数と system 関数がここに表示され、それらのヘッダー ファイルは <Windons.h> です。スリープとは、プログラムを停止して休ませることを意味し、その後ろの数字は停止するミリ秒数です。system はシステム コマンドを実行するためのもので、cls は画面をクリアするためのコマンドです。必ず "" 二重引用符を使用してください。
2.goto文
ハハ、私はそれを期待していませんでした。ここでちょっとした知識ポイント、goto ステートメントの使用について説明します。C 言語は、プログラムの実行フローが同じ関数内で自由にジャンプできるようにする goto ステートメントの使用に制限がないため、自由に悪用できるステートメントを提供します。もちろん、必要なときにだけ使うことを想定しており、無造作に使うとロジックがめちゃくちゃになる。
ラベルに移動します。
ラベル:
これがgoto文の使い方です。プログラムの実行フローを変更できることがわかります。通常、goto ステートメントは loop に置き換えることができます。これを例にとると、goto の代わりに while(1) を使用して、無限ループ (doge) を実現できます。もちろん、読者に無限ループのバグを書かせるわけではありませんよ~
それでは、goto の実際のアプリケーション シナリオについて話しましょう。次のコードを見てください。
深いループの入れ子では、ループの複数のレイヤーからジャンプしたい場合、複数のブレークを使用する必要があります。これは、エラーが発生しやすいだけでなく、眩惑的でもあります。このとき、 goto ステートメントを使用すると、この状況をうまく回避できます。これは goto の利点です。
さて、この記事は終わりです。主にいくつかの演習について説明し、goto ステートメントの知識を補足しました。次の記事では、学んだ知識を使用して、数字ゲームを推測するための小さなコードを完成させます。
おわりに:読んだ後、読者が何かを得られることを願っています!C を学ぶ途中で、C がもっともっと増えることを願っています!✔
この記事を理解していない、または記事の内容に誤りがあることに気付いた読者は、下のコメント欄にメッセージを残してブロガーに伝えてください〜、また、ブロガーに記事の改善のためのいくつかの提案を与えることもできます。どうもありがとうございます!最後の最後!
❤いいね、気をつけてください、あなたのいいねが私の更新の原動力です。一緒に進歩するために一生懸命働きましょう。