プログラミング演習 バージョン1 担当教員:綴木 馴.

Slides:



Advertisements
Similar presentations
1 例題 ex3b ( 配列 ) 科学科プログラミング. 2 例題 : ex3b  以下の 3 つについて例題を進める ステップ 1 :配列 ステップ 2 :最小と最大 ステップ 3 :文字型の配列.
Advertisements

復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第7回 条件による繰り返し.
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プログラムの制御構造 選択・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
第二回 VB講座 電卓を作ろう.
第10回関数 Ⅱ (ローカル変数とスコープ).
プログラミング論 II 2008年10月30日 文字列
プログラミング序論 2. n人のインディアン.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
高度プログラミング演習 (03).
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
今までの練習問題の復習.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (05).
高度プログラミング演習 (05).
プログラムの制御構造 配列・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
疑似乱数, モンテカルロ法によるシミュレーション
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング序論演習.
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
精密工学科プログラミング基礎 第7回資料 (11/27実施)
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング基礎演習 第4回.
ループだよ!難しいよ! 第5章 while(ループ);.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
第4章 double 小数型の変数;.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
モバイルプログラミング第2回 C言語の基礎 (1).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
printf・scanf・変数・四則演算
知能情報工学演習I 第9回(後半第3回) 課題の回答
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

プログラミング演習 バージョン1 担当教員:綴木 馴

●プログラムの決まりについて学ぶ おすすめする参考書 ザ・C 戸川隼人 サイエンス社 ・本日の予定  1.授業の説明.  2.コンパイラーのインストール.

●プログラムの決まりについて学ぶ,P31  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main() { printf("hello,world\n"); }

●プログラムの決まり(コメント)  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main() { printf("hello,world\n"); } コメントは /*....*/ でくくる

●プログラムの決まり(コメント)  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main() { printf("hello,world\n"); } まずは決まり文句と思ってください

●プログラムの決まり(関数)  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main() { printf("hello,world\n"); } 出力させたい内容を 「"」 でくくる 関数は 必ず「;」で終わる 画面に出力する出力関数と呼ぶ \nは改行を 意味する

●プログラミングの決まり(行の概念は無い)  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main() { printf("hello,world\n"); }  /* The most ・・・・・ in C */  /* hello.c */ #include <stdio.h> main(){printf("hello,world\n");}

課題 P35,4.3, 4.4, 4.5

●今日のプログラム(入出力の関数)P36 #include <stdio.h> main() { int data; printf("Input an integer :"); scanf("%d",&data); printf("The interger is %d\n",data); }

#include <stdio.h> main() { int data; ●変数の取り扱い #include <stdio.h> main() { int data; printf("Input an integer :"); scanf("%d",&data); printf("The interger is %d\n",data); } 整数型  int 1,2,100,-4 など 文字型  char a,b,c など 実数型  float 1.2, 100, 34.1 など dataという整数型の変数を宣言する (変数を使えるようにする)

#include <stdio.h> main() { int data; ●出力関数の取り扱い &を忘れるな (今は決まり文句と思っておく) #include <stdio.h> main() { int data; printf("Input an integer :"); scanf("%d",&data); printf("The interger is %d\n",data); } キーボードから%dに入力された整数をdataに保存する 入力関数と呼ぶ 整数型   %d 文字型   %c 実数型   %f 10進数 %d 8進数 %o 16進数 %x

●出力関数の取り扱い #include <stdio.h> main() { int data; printf("Input an integer :"); scanf("%d",&data); printf("The interger is %d\n",data); } dataの値を画面に出力する

課題 P43 5.1,5.2,5.3

●第6章 簡単な計算p44 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 新しいポイント double %lf * (掛け算の記号つまり×)

●第6章 簡単な計算 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 新しいポイント double について

{ ●倍精度実数型 floatよりも 倍の精度 (例えば:小数点の桁数が多い) の値が使える #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 知識の追加 { 整数型  int 1,2,100,-4 など 文字型  char a,b,c など 実数型  float 1.2, 100, 34.1 など 今までの知識: 新しい知識: 倍精度実数型 double 1.2, 100, 34.1 など

●第6章 簡単な計算 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 新しいポイント double %lf について

●倍精度実数型変数への入力 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 知識の追加 整数型   %d 文字型   %c 実数型   %f 10進数 %d 8進数 %o 16進数 %x 今までの知識: 新しい知識:  倍精度実数型  %lf

#include <stdio.h> main() { double r, s; printf(“radius = "); ●倍精度実数型変数への入力 &を忘れるな (今は決まり文句と思っておく) #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 知識の追加 キーボードから%lfに入力された倍精度実数をrに保存する 新しい知識:  倍精度実数型  %lf

●四則演算 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } 知識の追加 * 掛け算 / 割り算 + 足し算 - 引き算 % わり算の余り

sは倍精度実数型で宣言されているが普通の実数型で出力されている ●今日の注意 #include <stdio.h> main() { double r, s; printf(“radius = "); scanf(“%lf",&r); s = 3.14 * r * r printf("The area is %f\n",s); } sは倍精度実数型で宣言されているが普通の実数型で出力されている

課題 P54 6.1, 6.2, 6.3

●今日の目的:条件分岐(if 文)P67 #include <stdio.h> #include <math.h> main(){ double a, b, c, d, rd, x1, x2; printf(" a= "); scanf("lf",&a); printf(" b= "); scanf("lf",&b); printf(" c= "); scanf("lf",&c); d = b * b - 4 * a * c; if(d >= 0) { rd = sqrt(d); x1 = (-b - rd) / (2 * a); x2 = (-b + rd) / (2 * a); printf("Solution_1 = %f\n", x1); printf("Solution_2 = %f\n", x2); } else printf("No real solution\n");

#include <math.h> ●今日の目的:条件分岐(if 文) #include <stdio.h> #include <math.h> main(){ double a, b, c, d, rd, x1, x2; printf(" a= "); scanf("lf",&a); printf(" b= "); scanf("lf",&b); printf(" c= "); scanf("lf",&c); d = b * b - 4 * a * c; if(d >= 0) { rd = sqrt(d); x1 = (-b - rd) / (2 * a); x2 = (-b + rd) / (2 * a); printf("Solution_1 = %f\n", x1); printf("Solution_2 = %f\n", x2); } else printf("No real solution\n"); 新しい箇所 #include <math.h> sqrt(d) if else

sqrtを使えるようにするための決まり文句 #include <stdio.h> #include <math.h> main(){ double a, b, c, d, rd, x1, x2; printf(" a= "); scanf("lf",&a); printf(" b= "); scanf("lf",&b); printf(" c= "); scanf("lf",&c); d = b * b - 4 * a * c; if(d >= 0) { rd = sqrt(d); x1 = (-b - rd) / (2 * a); x2 = (-b + rd) / (2 * a); printf("Solution_1 = %f\n", x1); printf("Solution_2 = %f\n", x2); } else printf("No real solution\n"); sqrtを使えるようにするための決まり文句 かっこ内()の ルート(√) を計算する

●今日の目的:条件分岐(if 文) 新しい箇所 if(条件) (条件)を満たすならば すぐ下の{ }内を実行 else #include <stdio.h> #include <math.h> main(){ double a, b, c, d, rd, x1, x2; printf(" a= "); scanf("lf",&a); printf(" b= "); scanf("lf",&b); printf(" c= "); scanf("lf",&c); d = b * b - 4 * a * c; if(d >= 0) { rd = sqrt(d); x1 = (-b - rd) / (2 * a); x2 = (-b + rd) / (2 * a); printf("Solution_1 = %f\n", x1); printf("Solution_2 = %f\n", x2); } else printf("No real solution\n"); 新しい箇所 if(条件) (条件)を満たすならば すぐ下の{ }内を実行 else (条件)を満たさないならば すぐ下の{ }内を実行 1行の時のみ{ }内を実行できる

●今日の目的:条件分岐(if 文) 新しい箇所 if(条件) 条件式の定義 a==b → a=bのとき a!=b → a≠bのとき #include <stdio.h> #include <math.h> main(){ double a, b, c, d, rd, x1, x2; printf(" a= "); scanf("lf",&a); printf(" b= "); scanf("lf",&b); printf(" c= "); scanf("lf",&c); d = b * b - 4 * a * c; if(d >= 0) { rd = sqrt(d); x1 = (-b - rd) / (2 * a); x2 = (-b + rd) / (2 * a); printf("Solution_1 = %f\n", x1); printf("Solution_2 = %f\n", x2); } else printf("No real solution\n"); 新しい箇所 if(条件) 条件式の定義 a==b → a=bのとき a!=b  → a≠bのとき a > b → a>b のとき a < b → a<bのとき a>=b → a≧bのとき a<=b → a≦bのとき

課題 P72 8.1, 8.2, 8.3

●今日の目的:繰り返し(while 文,P81) #include <stdio.h> #include <math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a= "); scanf("%lf, &a); new_x = a; i = 0; while(i < 100) old_x = new_x; new_x = (old_x + a / old_x) / 2; printf("x = %f\n", new_x); if(fabs(new_x - old_x)/old_x <EPS) break; i++; } 新しい箇所 #define while i++; break; fabs

●今日の目的:繰り返し(while 文,P81) #include <stdio.h> #include <math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a= "); scanf("%lf, &a); new_x = a; i = 0; while(i < 100) old_x = new_x; new_x = (old_x + a / old_x) / 2; printf("x = %f\n", new_x); if(fabs(new_x - old_x)/old_x <EPS) break; i++; } EPSを 10   と定義する -5

●今日の目的:繰り返し(while 文,P81) #include <stdio.h> #include <math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a= "); scanf("%lf, &a); new_x = a; i = 0; while(i < 100) old_x = new_x; new_x = (old_x + a / old_x) / 2; printf("x = %f\n", new_x); if(fabs(new_x - old_x)/old_x <EPS) break; i++; } while(条件) (条件)が成立している場合は { }内を繰り返す

●今日の目的:繰り返し(while 文,P81) #include <stdio.h> #include <math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a= "); scanf("%lf, &a); new_x = a; i = 0; while(i < 100) old_x = new_x; new_x = (old_x + a / old_x) / 2; printf("x = %f\n", new_x); if(fabs(new_x - old_x)/old_x <EPS) break; i++; } fabsが使えるようにする while文 から抜け出す. ( )内の絶対値をとる

●今日の目的:繰り返し(while 文,P81) #include <stdio.h> #include <math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a= "); scanf("%lf, &a); new_x = a; i = 0; while(i < 100) old_x = new_x; new_x = (old_x + a / old_x) / 2; printf("x = %f\n", new_x); if(fabs(new_x - old_x)/old_x <EPS) break; i++; } i++; iに1を足す i=i+1; または ++i; と書いても良い

●今日の目的:繰り返し2(while 文,P82) #include <stdio.h> main() { double ave, sum=0; int data, num=0; printf("data = "); while(1) scanf("%d", &data); if(data= = 12345)break; sum += data; num++; printf("data = ") ; } if(num = = 0) printf("can't calculate the average\n"); else ave = sum / num; printf("the average of %d data is %f\n”, num , ave); 新しい箇所 +=

課題 P84 9.1, 9.2, 9.3

sum += data; は sum = sum +data; と同じ. ●今日の目的:繰り返し2(while 文,P82) #include <stdio.h> main() { double ave, sum=0; int data, num=0; printf("data = "); while(1) scanf("%d", &data); if(data= = 12345)break; sum += data; num++; printf("data = ") ; } if(num = = 0) printf("can't calculate the average\n"); else ave = sum / num; printf("the average of %d data is %f\n”, num , ave); 新しい箇所 += sum += data; は sum = sum +data; と同じ.

●課題 P84, 9.4, 9.5, 9.6

●今日の目的:繰り返し(do, while 文,P97) #include <stdio.h> #include <time.h> main() { int d, x; unsigned seed; printf("Input an integer to seed ="); scanf("%d", &seed); srand(seed); x = rand(); x %= 100; printf("data = ";) do printf("Hit my number(0-99)"); scanf("%d", &d); if(x > d) printf("greater than %d \n", d); else if(x < d) printf(“less than %d \n", d); } while(x != d); printf("Congratulations !\n"); 新しい箇所 unsigned srand() rand() do, while

●今日の目的:繰り返し(do, while 文,P97) #include <stdio.h> #include <time.h> main() { int d, x; unsigned seed; printf("Input an integer to seed ="); scanf("%d", &seed); srand(seed); x = rand(); x %= 100; do{ printf("Hit my number(0-99)"); scanf("%d", &d); if(x > d) printf("greater than %d \n", d); else if(x < d) printf(“less than %d \n", d); } while(x != d); printf("Congratulations !\n"); unsigned 符号なしの 正数つまり 正の整数のみ の場合に使用

●今日の目的:繰り返し(do, while 文,P97) #include <stdio.h> #include <time.h> main() { int d, x; unsigned seed; printf("Input an integer to seed ="); scanf("%d", &seed); srand(seed); x = rand(); x %= 100; do{ printf("Hit my number(0-99)"); scanf("%d", &d); if(x > d) printf("greater than %d \n", d); else if(x < d) printf(“less than %d \n", d); } while(x != d); printf("Congratulations !\n"); srand() 乱数の種を 与える rand() 乱数を発生 させる

●今日の目的:繰り返し(do, while 文,P97) #include <stdio.h> #include <time.h> main() { int d, x; unsigned seed; printf("Input an integer to seed ="); scanf("%d", &seed); srand(seed); x = rand(); x %= 100; do{ printf("Hit my number(0-99)"); scanf("%d", &d); if(x > d) printf("greater than %d \n", d); else if(x < d) printf(“less than %d \n", d); } while(x != d); printf("Congratulations !\n"); do, while while(条件) 条件を 満たしている間 { }内を繰り返す.

●課題 P98,10.2,10.3,10.4

● for 文(P89) 新しいポイント #include <stdio.h> #include<math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a ="); scanf("%lf", &a); new_x = a; for(i = 0; i < 100; i++) old_x = new_x ; new_x = (old_x + a / old_x) / 2; printf("x = %f\n, new_x); if(fabs(new_x - old_x)/old_x < EPS) break; } for(初期設定; 反復条件; 変更処理)

● for 文( P89 ) 新しいポイント #include <stdio.h> #include<math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a ="); scanf("%lf", &a); new_x = a; for(i = 0; i < 100; i++) old_x = new_x ; new_x = (old_x + a / old_x) / 2; printf("x = %f\n, new_x); if(fabs(new_x - old_x)/old_x < EPS) break; } for(初期設定; 反復条件; 変更処理)

● for 文( P89 ) 新しいポイント i=0と初期設定する #include <stdio.h> #include<math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a ="); scanf("%lf", &a); new_x = a; for(i = 0; i < 100; i++) old_x = new_x ; new_x = (old_x + a / old_x) / 2; printf("x = %f\n, new_x); if(fabs(new_x - old_x)/old_x < EPS) break; } for(初期設定; 反復条件; 変更処理) i=0と初期設定する

● for 文( P89 ) 新しいポイント iが100より 小さい間{ }内を繰り返す #include <stdio.h> #include<math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a ="); scanf("%lf", &a); new_x = a; for(i = 0; i < 100; i++) old_x = new_x ; new_x = (old_x + a / old_x) / 2; printf("x = %f\n, new_x); if(fabs(new_x - old_x)/old_x < EPS) break; } for(初期設定; 反復条件; 変更処理) iが100より 小さい間{ }内を繰り返す

● for 文( P89 ) 新しいポイント iに1を加える #include <stdio.h> #include<math.h> #define EPS 1e-5 main() { double a, old_x, new_x; int i; printf(" a ="); scanf("%lf", &a); new_x = a; for(i = 0; i < 100; i++) old_x = new_x ; new_x = (old_x + a / old_x) / 2; printf("x = %f\n, new_x); if(fabs(new_x - old_x)/old_x < EPS) break; } for(初期設定; 反復条件; 変更処理) iに1を加える

●課題 1.1から1000までの和をfor文を使って求めよ. 2.P98,10.1(cf p82),10.5

#include <stdio.h> main() { char a[100]; int i = 0; ● 文字型の配列(文字列) #include <stdio.h> main() { char a[100]; int i = 0; print("何か文字列を入力して下さい."); scanf("%s", a); while(a[i] != 0){ printf("a[%d] = %c\n", i, a[i]); i++; } 新しいポイント a[100] %s 文字列を入力し,先頭から一字ずつ取り出して表示するプログラム

● 文字型の配列(文字列) #include <stdio.h> main() { char a[100]; int i = 0; printf("何か文字列を入力して下さい."); scanf("%s", a); while(a[i] != 0){ printf("a[%d] = %c\n", i, a[i]); i++; } 新しいポイント a[100] 100個の文字型 配列を確保 例:abcdefgと入力した場合 a b c d e f g 終 a[0] a[3] a[5] a[8]=0

● 文字型の配列(文字列) #include <stdio.h> main() { char a[100]; int i = 0; print("何か文字列を入力して下さい."); scanf("%s", a); while(a[i] != 0){ printf("a[%d] = %c\n", i, a[i]); i++; } 新しいポイント 文字列型  %s 文字型配列a[100]に 文字列をキーボードから入力 整数型   %d 文字型   %c 実数型   %f 10進数 %d 8進数 %o 16進数 %x 復習:

● 文字型の配列(文字列)の課題 1.例題を do while 文で書き直せ. 2.例題を for 文で書き直せ. 3.abcdeと入力し,a[0]~a[6]を整数で表示してみよ. 4.入力された文字列を一発表示せよ.   ヒント:printf("%s", a);

●文字列のコピー 新しいポイント main() { int i; char a[100], b[100]; for(i = 0; i<100; i++) b[i] = 0; printf("文字列を入力して下さい"); scanf("%s", a); for(i = 0; a[i] != 0; i++) b[i] = a[i]; printf("文字列 b を表示します %s\n", b); } 特になし

●文字列のコピー(課題) 1.例題を do while 文で書き直せ. 2.例題を while 文で書き直せ. 3.10個の配列を用意し,0~99までの整数を   10個ランダムに生成して配列に代入し表示せよ.

●2次元配列 main() { int i; char a[2][100]; for(i = 0; i<100; i++) a[1][i] = 0; printf("文字列を入力して下さい"); scanf("%s", a[0]); for(i = 0; a[0][i] != 0; i++) a[1][i] = a[0][i]; printf("文字列 a[1] を表示します %s\n", a[1]); }

●2次元配列 main() { int i; char a[2][100]; for(i = 0; i<100; i++) a[1][i] = 0; printf("文字列を入力して下さい"); scanf("%s", a[0]); for(i = 0; a[0][i] != 0; i++) a[1][i] = a[0][i]; printf("文字列 a[1] を表示します %s\n", a[1]); } 新しいポイント a[2][100];

●2次元配列 main() { int i; char a[2][100]; for(i = 0; i<100; i++) a[1][i] = 0; printf("文字列を入力して下さい"); scanf("%s", a[0]); for(i = 0; a[0][i] != 0; i++) a[1][i] = a[0][i]; printf("文字列 a[1] を表示します %s\n", a[1]); } 新しいポイント a[2][100]; a[0][0], a[0][1], a[0][2], …… , a[0][98], a[0][99] a[1][0], a[1][1], a[1][2], …… , a[1][98], a[1][99]

●2次元配列(課題) 1.例題を do while 文で書き直せ. 2.例題を while 文で書き直せ. 3.10個の配列を用意し,0~99までの整数を   10個ランダムに生成してその配列に代入し,   その中から最大値を求めよ.

●2次元配列(整数型) main() { int i; int a[2][100]; for(i = 0; i<100; i++) printf("整数を入力せよ(0で終了)"); scanf("%d", &a[0][i]); if(a[0][i]= =0) break; } for(i = 0; a[0][i] != 0; i++) a[1][i] = a[0][i]; printf("整数 a[1][%d] %d\n", i, a[1][i]);

●2次元配列(課題) 1.0~99までの整数を10個ランダムに生成し,   大きい順に並び替えるプログラムを作成せよ.

ヒント 1.3つの配列を用意する. 2.1つ目の配列には乱数を代入. 3.2つ目の配列には0を代入. 4.配列の中から最大値を求める. 5.求めた最大値を3つ目の配列に代入し,対応する2つ目の配列に1を代入する. 6.2つ目の配列で1のついていないものから最大値を求める. 7.5に戻る. 54 23 56 11 6 74 45 88 59 21 17 95 46 85 47 4 54 23 56 11 6 74 45 88 59 21 17 95 46 85 47 4 1 95 54 23 56 11 6 74 45 88 59 21 17 95 46 85 47 4 1 1 95 88