Cプログラミング実験レポート
名前:Zeng Fubo
実験場所:ホーム
実験時間:2020.4.9
実験項目:5.3.1演習2.シーケンスの最初のn個の項目の合計を求めます; 5.3.2演習2.水仙の数; 5.3.4 10進数の変換; 5.3.5演習1.百頭の馬馬問題:5.3.5演習2 。算術シーケンスを見つける; 5.3.5演習3.食糧配給問題;
1.実験の目的と要件
1. while、doのメソッドの習熟度whileとforステートメントはループを実現します。
2. 3種類のループステートメントの違いと変換、それぞれの適応性、およびループネストの使用について理解します。
3. break、.continueステートメントをループステートメントで使用してプログラムフローを変更する方法を習得します。
4.プログラミングのループでさまざまなアルゴリズムを習得します。
2.実験演習
5.3.1演習2. シーケンスの最初のn項の合計を見つける
1.問題の簡単な説明:シーケンス1、-3!、5!、-7!、...、(-1)n-1(2n-1)を見つけるプログラムを作成することにより、最初のn項目の合計 nの値はキーボードで入力します。
2.実験コード:
#include <stdio.h> #include <conio.h> main() { int n、i、j、sign = 1 ; float fac、sum; printf(" nの値を入力してください:" ); scanf(" %d "、&n); 合計 = 0.0 ; for(i = 1 ; i <= 2 * n- 1 ; i = i + 2 ) { fac = 1.0 ; for(j = 1 ; j <= i; j ++ ) fac= fac * j; fac = fac * 記号; sum + = fac; sign = -sign; } printf(" sum =%。0f \ n " 、sum); }
3.問題分析:教科書の冒頭では、算術シーケンスの最初のn項の合計のみが書き込まれ、要因の考慮は行われませんでした。その後、教師の説明の下で、この実験プロジェクトを完了するために教科書プログラムが変更されました。
5.3.2演習2.水仙の数
1.問題の簡単な分析:すべての水仙を見つけます(水仙の数は3桁の自然数で、数字の数字の3乗和は数値自体に等しく、153は水仙の数です1 3 + 5 3 + 3 ^ 3 = 153)。
2.実験コード:
#include <stdio.h> main() { int x、y、z; int k = 100 ; while(k <= 999 ) { x = k / 100 ; y =(k / 10)%10 ; z = k%10 ; if(x * x * x + y * y * y + z * z * z == k) printf(" %d \ n " 、k); k ++ ; } }
3.問題分析:プログラムはキーボード入力を受け取る必要はありません。水仙の数は3桁の自然数で、100〜999の範囲内である必要があります。各数の立方体は数自体と等しい必要があるため、数の各桁を要求する必要があります。数字
5.3.4 10進変換
1.問題の簡単な説明:4文字の数値を入力し、それらを10進整数に変換して表示します。
2.実験コード:
#include <stdio.h> main() { char c; int k、data; データ = 0 ; for(k = 0 ; k < 4 ; k ++ ) { while(1 ) { c = getchar(); if(c> = ' 0 ' && c <= ' 9 ' ) ブレーク; } 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 ' ); } printf(" Data =%d " 、data); }
3.問題分析:なし
5.3.5演習1.問題
1.問題の簡単な説明:100頭の馬と100頭のラクダの貨物があります。1頭の大きな馬は3頭のラクダを運ぶことができ、1頭の馬は2頭のラクダを運ぶことができ、2頭のポニーは1頭のラクダを運ぶことができます。あなたが必要とする呪いに可能な馬とポニーの組み合わせの数を調べてください。
2.実験コード:
#include <stdio.h> main() { int m、n、k; int sum = 0 ; printf(" 各种驮法下記:\ n " ); for(m = 1 ; m <= 100 ; m ++ ) { for(n = 1 ; n <= 100 -m; n ++ ) { k = 100 -m- n; if((k%2 == 0)&&(3 * m + 2 * n + 0.5 * k == 100 )) { printf(" Malaysia%3d horses; medium horse%3d horses; pony%3d horses。\ n " 、m、n、k); sum ++ ; } } } printf(" There are%d piggyback method。\ n " 、合計); }
3.問題分析:100 = k + m + nではなく、k = 100-mnと記述する必要があります。
5.3.5演習2.算術シーケンスを見つける
1.問題の簡単な説明:正の整数の算術差のシーケンスがあります。シーケンスの最初の4項の合計は26に等しく、最初の4項の積は880に等しいことがわかっています。差系列の最初の6項目の値と最初の6項目の合計を見つけます。
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 " 、sum); }
3.問題分析:bは総和、cは求積法です。合計と積を取得する方法を理解し、分岐選択のためにforステートメントにifステートメントをネストする必要があります。
5.3.5演習3.食品流通の問題
1.問題の簡単な説明; 30人の学生が一緒にスナックを購入し、合計50元です。そのうち、大学生は3元、中学生は2元、小学生は1元。大、中、小学校の生徒数の分布について、さまざまな組み合わせの数を調べます(特定のクラスの生徒の0の組み合わせは計算しないでください)。
2.実験コード:
#include <stdio.h> main() { int x、y、z、sum; 合計 = 0 ; for(x = 1 ; x <= 30 ; x ++ ) { for(y = 1 ; y < 30 ; y ++ ) { z = 30 -x- y; if((z!= 0)&&(3 * x + 2 * y + z == 50 )) { printf(" 大学生%3d \ t中学生%3d \ t小学生%3d \ n " 、x、y、z) ; 合計 = sum + 1 ; } else continue ; } } printf(" %d個の異なる組み合わせがあります。\ n " 、sum); }
3.問題分析:プログラムを作成および変更する際の主な問題は、xとyの関係が以前に理解されていないため、結果が無数になるということです。
3、9、9九九九
2.実験コード:
#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を返し ます。 }
3.問題分析:当初、九九の九九のコードについて何の手掛かりもありませんでした。どこから始めればよいかわかりませんでした。インターネットで関連するコードを検索する必要がありました。この比較的単純な補完を選択しました。C言語に関する知識はまだあまりよく知られていません。問題を解決するために学習した知識を効果的に選択することは不可能であり、基盤は弱いです。
第四に、実験のまとめ
この実験の結果、条件判断など足りないところがわかりました。同時に、一部の記号の使い方に誤りがありました。