Cプログラミング実験レポート
名前:ヤンジン実験場所:自宅実験時間:2020.04.10
実験プロジェクト
1. forステートメントを使用してループを実装する
2. whileループステートメントを使用してループを実現する
3. do-whileステートメントを使用してループを実装する
4. whileステートメントとforステートメントを使用してループを実現する
5. forステートメントを使用してループをネストします
1.実験の目的と要件
1. while、do_while、forステートメントのメソッドを習熟し、ループを実現します。
2. 3種類のループステートメントの違いと変換、それぞれの適応性、およびループネストの使用について理解します。
3.プログラムフローを変更するために、ループステートメントでbreak、continueステートメントを使用する方法を習得します。
4.プログラミングのループでさまざまなアルゴリズムを習得します。
2.実験的な内容
1. forステートメントを使用してループを実装する
(1)問題の簡単な説明:シーケンス1、-3を見つけるプログラムを記述します。、5!、-7!…(-1)^(n-1)*(2n-1)最初のn項の合計。nの値はキーボードで入力します。
(2)実験コード:
#include <stdio.h>
main()
{
int n、i、j、sign = 1;
float fac、sum;
printf( "nの値を入力してください:");
scanf( "%d"、&n);
sum = 0.0;
for(i = 1; i <= n; i ++)
{
fac = 1.0;
for(j = 1; j <= 2 * i-1; j ++)
{
fac = fac * j;
}
sum = sum + fac * sign;
sign = -sign;
}
printf( "sun =%。0f \ n"、sum);
}
(3)問題分析:nはキーボードで入力した数、iはサイクルの総数を制御し、jは2n-1の結果を制御し、facとsumは階乗演算の出力を制御し、signは結果の符号を制御します。マイナス記号であることに気づかず、理解しにくいフローチャートを読んで考え始めました。
(4)フローチャート:
2. whileループステートメントを使用してループを実現する
(1)問題の簡単な説明:すべての水仙を見つけます(水仙の数は3桁の自然数で、数字の数字の3乗和は数値自体と同じです。たとえば、153は水仙の数1 * 1 + 5 * 5です。 + 3 * 3 = 153)
(2)実験コード:
#include <stdio.h>
main()
{
int x、y、z;
int k = 100;
while(100 <= k && k <= 999)
{x = k / 100;
y =(k / 10)%10;
z = k%10;
if(k == x * x * x + y * y * y + z * z * z)
printf( "%d \ n"、k);
k ++;
}
}
(3)問題分析:3桁の条件を決定し、C言語の論理で判断された書き方に注意するこの質問は、いくつかの質問の中で最も簡単です。
(4)フローチャート:
3. whileステートメントとforステートメントを使用してループを実装する
(1)問題の簡単な説明:4文字を入力し、4つの10進整数に変換して表示します。
(2)実験コード:
#include <stdio.h>
メイン()
{
char c;
int k、data;
data = 0;
for(k = 0; k <4; k ++)
{
while(1)
{
c = getchar();
if(c> = '0' && c <= '9')
break;
}
if(k == 0)data + =(c-'0 ')* 1000;
if(k == 1)data + =(c-'0 ')* 100;
if(k == 2)data + =(c-'0 ')* 10;
if(k == 3)data + =(c-'0 ')* 1;
}
printf( "Data =%d"、data);
}
(3)問題分析:forループを使用して文字を入力し、ifステートメントで判断し、ループからジャンプした後、10進整数に変換して4桁にします。
(4)フローチャート:
4. forステートメントを使用してループをネストします
あ
(1)問題の簡単な説明:100頭の馬がいます。100負荷を運ぶには、1馬は3負荷を運ぶことができ、1中馬は2負荷を運ぶことができ、2匹のポニーは1負荷を運ぶことができます。 。
(2)実験コード:
#include <stdio.h>
main()
{
int m、n、k;
int sum = 0;
printf( "Various pack methods are as following:\ n");
for(m = 1; m <= 100; m ++)
for(n = 1; n <= 100-m; n ++)
{
k = 100-mn;
if((k%2 == 0)&&(3 * m + 2 * n + 0.5 * k == 100))
{
printf( "Malaysia%3d horses; Middle Horse%3d horses; Pony%3d horses。\ n"、m、n、k);
sum ++;
}
}
printf( "A total of%d piggyback methods。\ n" 、合計);
}
(3)問題分析:数学的思考を使用して、大、中、小のポニーの関係を見つけ、最初にマレーシアと中国のポニーの変数を定義し、次にポニーを除外し、if判決文で判断し、論理的な記述に注意を払います
B
(1)問題の簡単な説明:正の整数の算術シーケンスの最初の6項の合計を見つけるプログラムを記述します。シーケンスの最初の4項の合計は26で、最初の4項の積は880です。
(2)実験コード:
#include <stdio.h>
main()
{
int a、b、c、d、i、sum = 0;
for(a = 1; a <= 26; a ++)
for(d = 1; d <= 26; d ++)
{
b = 4 * a + 6 * d;
c = a *(a + d)*(a + 2 * d)*(a + 3 * d);
if((b == 26)&&(c == 880))
{
printf ( "シーケンスの初期値はa =%d、差はd =%d \ n"、a、d);
printf( "\ nシーケンスの最初の6アイテムの値:");
for(i = 0; i <6; i ++)
{
printf( "%d"、a + i * d);
sum = sum +(a + i * d);
}
printf( "\ n");
}
}
printf( "\ n 6項目:%d \ n "、合計);
}
(3)問題分析:数式では質問を理解するのが難しい。長い間理解していなかった。最初の6項目は、最初の項目aと差dを尋ねることによってのみ取得でき、最終的に6項目が得られる。そして。
C
(1)問題の簡単な説明:30人の学生が一緒にスナックを購入し、合計50元を費やします。このうち、大学生1人あたり3元、中学生1人あたり2元、小学生1人あたり1元。大学生、中学生、小学生に尋ねます人数に対して異なるソリューションがいくつあるか(特定のクラスの学生の数が0であるソリューションを削除します)。
(2)実験コード:
#include <stdio.h>
メイン()
{
int x、y、z、sum;
sum = 0;
for(x = 1; x <30; x ++)
{
for(y = 1; y <30; y ++)
{
z = 30-xy;
if((z!= 0)&&(3 * x + 2 * y + z == 50))
{
printf( "大学生%3d \ t中学生%3d \ t小学生%3d \ n"、x、y、z );
sum = sum + 1;
}
}
}
printf( "%d個の異なる組み合わせがあります。\ n"、合計);
}
(3)問題分析:分類の問題でもあり、馬の問題に少し似ていますが、理解しやすく、すばやく実行できます。
5.ナインナイン九九九九
実験コード:
#include <stdio.h>
int main()
{
int i、j;
for(i = 1; i <= 9; i ++)
{
for(j = 1; j <= 9; j ++)
printf( "%d *%d =%2d \ t"、i、j、i * j) ;
printf( "\ n");
}
0を返します。
}
問題分析:リファレンスブックのさまざまな三角形。