プログラミング言語C
以降、K & Rと略記します。
#include <stdio.h> main() { int i, n; /* i: 添字(カウンタ)、n: 最終項の添字 */ int sum = 0; /* 部分和。初期値は零。 */ printf("1 から n までの整数の和をもとめます。\n"); printf("整数nを入力してください。"); scanf("%d", &n); /* キーボードから10進整数として、nを読み込む。 */ for (i = 1; i <= n; i++) { /* 始めにiを1と初期化する。 */ /* i <= nの条件のもとで 、以下のループをくりかえす。 */ /* 一周ごとに、iの値をひとつふやす。 */ sum = sum + i; /* sumにiを足して、 新たなsumの中味とする。*/ } printf("1から %d までの和 = %d\n", n, sum); /* n とsumをそれぞれ、%dの位置に10進整数として(画面へ)の出力する。 */ }実行結果は、
$ ./a.out 1 から n までの整数の和をもとめます。 整数nを入力してください。5 1から 5 までの和 = 15 $ ./a.out 1 から n までの整数の和をもとめます。 整数nを入力してください。100 1から 100 までの和 = 5050
(0) まず、プログラムは、主関数から始まる。 その後の流れは、つぎの (i)∼(iv) に依る。
(i) 基本的には上から下へ進む。
(ii) 選択や繰り返しに当った場合、より外側のブロック(先に遭遇したブロック)の指示に したがう。
(iii) つぎに、そのブロックの内でより外側のブロック(先に遭遇したブロック)の指示にしたがう。
(iv) 内側のブロックのコードが終われば、ひとつ外側のブロックに戻る。
例1
/* diag3.c */ /* 星印を端末に3角形に印字する。*/ /* 2重ループをつかう。まず、下方向(i-方向)の動きに外側のループを もちいる。そのiの各値にたいして、横方向(j-方向)の変数の ループを設定する。この2重ループのなかで、各行において、 対角線上に当たるまで、星印を印字する。 そこで、改行して、i-ループ1周分は終わり。iをひとつふやして、 つぎのi-ループに入る。これを、n回くりかえせばよい。*/ #include <stdio.h> int main() { int i, j, n; printf("Let us print asterisks in the shape of a triangle.\n"); printf("Enter n: "); scanf("%d", &n); for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); } return 0; }実行例
$ ./a.out We'll print a cluster of asterisks shaped in the form of a triangle. The asterisks are so arranged that they respond to an integer n you'll enter. Enter n: 8 * ** *** **** ***** ****** ******* ********例2
/* diag1.c */ /* 1からnまでの整数を端末に対角的に印字する。*/ /* 2重ループをつかう。まず、下方向(i-方向)の動きに外側のループを もちいる。そのiの各値にたいして、横方向(j-方向)の変数の ループを設定する。この2重ループのなかで、印字場所が対角線上にない場合は、 空白を印字して、横に一歩すすむ。対角線上(iとjが等しい)にあるときは、 そのi値を印字する。これで、j-ループ1周分は終わり。 i-ループにもどる。ここで、改行して、i-ループ1周分は終わり。iをひとつふやして、 つぎのi-ループに入る。これを、n回くりかえせばよい。*/ #include <stdio.h> int main() { int i, j, n; printf("Let us print 1 through n diagonally.\n"); printf("Enter n: "); scanf("%d", &n); for (i = 1; i <= n; i++) { /* i-方向(下方、「行」方向)に進む */ for (j = 1; j <= i; j++) { /* j-方向(右、「列」方向)に進む */ if (j == i) /* 対角線上にあるとき */ { printf("%d", j); /* j = iを印字する */ } else { /* 非対角なとき */ printf(" "); /* 「空白」を1文字印字する */ } } printf("\n"); /* つぎの行に移る */ } return 0; }実行例
$ ./a.out 1からnまでの整数を対角的に印字します。 nをあたえてください。:5 1 2 3 4 5例1を利用して解くこともできる。
課題1
上記のプログラムを参考にして、 星印を上三角に印字してください。
[matsu@localhost Cbox]$ ./a.out 星形(*)を上三角に印字します。 1行目の星の数はn個です。 nをあたえてください。:8 ******** ******* ****** ***** **** *** ** *課題2
自然数nをあたえて、 nの約数をすべて書き出し、その和σをもとめよ。 また、その総数も記せ。
・n = 5のとき、1, 5の2個。 σ = 6。 ・n = 6のとき、1, 2, 3, 6の4個。 σ= 12。
./a.out > hoge
./a.out >> hoge
C-x C-wとして、下方のミニバッファにファイル名「file1.txt」を書き込む。
C-x iとして、下方のミニバッファに挿入するファイル名を入力 します。
C-x C-s
File → 「Print Buffer」で印刷する。クラス、学籍番号、名前は自筆大きく分かりやすくで書き加えてください。