14
Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved C言語講座 第3回 ~配列 文字列~

スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

C言語講座 第3回

~配列 文字列~

Page 2: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

前回の復習 乱数 ランダムな数字を発生させる

関数 : rand(); 要#include<stdlib.h>

値域 : 0-32767

完全な乱数にするために

関数 : srand(); ↓要#include<time.h>

使用 : srand((unsigned)time(NULL));

条件分岐 if文

条件式の真偽によって処理を変える。

書き方:

if ( 条件式 )

{

真のときの処理

}else{

偽のときの処理

}

条件式 関係演算子

A>B : AがBより大きいとき真

A>=B : AがB以上のとき真

A==B : AがBと同じとき真

A<=B : AがB以下のとき真

A<B : AがB未満のとき真

A!=B : AがBでないとき真

論理関係演算子

A||B : AとBの論理和

A&&B : AとBの論理積

!(A==B) : 条件式の否定

Page 3: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

条件分岐 switch文 定数式に該当する処理を行わせる

書き方:

switch ( 式 )

{

case 定数式1:

処理1

break;

case 定数式2:

処理2

break;

default:

処理3

break;

}

前回の復習 繰り返し処理 for文

継続条件が真のとき{}間を再初期化を行いながら繰り返し実行する

書き方:

for ( 初期化式; 継続条件式; 再初期化式)

{

処理

}

例: for ( int i = 0; i < 5; i++)

{

printf(“%d¥n”,i);

}

出力: 0

1

2

3

4

Page 4: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

繰り返し処理 while文 条件式が真のとき{}内の処理を繰り返し実行する。

書き方:

while ( 継続条件式 )

{

処理

}

前回の復習

do

{

処理

}while ( 継続条件式 )

while文 do-while文

Page 5: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

配列とは?

同一の要素を集めたもの

使い方

定義: 型名 配列名[要素数];

例:int a[10];

配列

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 配列 a

変数の寄せ集め

1 2 3 4 5 6 7 8 9 10

Page 6: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

配列の要素の取り出し方

配列名[取り出したい要素番号]

例:int a[100];

注意 int a[100] → a[0] ~ a[99]

scanf(“%d”,&a*100+); ○ scanf(“%d”,&a*99+) ×

配列

printf(“%d”,a*50+); scanf(“%d”,&a*50+)

Page 7: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

初期化

int a[5]={1,2,3,4,5};

a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5

int a[5]={0};

a[0]=0 a[1]=0 a[2]=0 a[3]=0 a[4]=0

配列の中身をあらかじめ決めておく操作

色んな数で初期化 まとめて初期化 注:0のみ

Page 8: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

5つの数字を入力して出力する

int a1,a2,a3,a4,a5; scanf(“%d”,&a1); scanf(“%d”,&a2); scanf(“%d”,&a3); scanf(“%d”,&a4); scanf(“%d”,&a5); printf(“%d¥n”,a1); printf(“%d¥n”,a2); printf(“%d¥n”,a3); printf(“%d¥n”,a4); printf(“%d¥n”,a5);

int i,a[5]; for(i=0 ; i<5 ; i++) { scanf(“%d”,&a*i+); } for(i=0 ; i<5 ; i++) { printf(“%d”,a*i+); }

Page 9: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

サンプルプログラム

#include <stdio.h>

int main(void)

{

int a[5]={0};

int i=0;

for ( i = 0; i < 5 ; i++ )

{

printf("%d番目の整数を入力→ ",i);

scanf("%d",&a[i]);

}

printf("入力結果を逆順に出力します。¥n");

for ( i = 4; i >= 0; i-- )

{

printf("%d¥n",a[i]);

}

return 0;

}

結果

Page 10: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

文字と配列

a e d c b ¥0 ・・・

0 1 2 3 4 5 9

注意 ¥0を使う時は配列の最後に要素を格納しない

文字 文字列 char c[10] = {“abcde”}; printf(“%s”,c);

char c[10] = {‘a’,’b’,’c’,’d’,’e’-; printf(“%c”,c*要素番号]);

Page 11: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

プログラム

#include<stdio.h> int main(void) { char moji[10]; printf(“文字列を入力してください(9文字以内)¥n”); scanf(“%s”,&moji); printf(“■入力された文字列■¥n%s¥n”,moji);

return 0; }

文字列を入力してください(9文字以内) abcdefg ■入力された文字列■ abcdefg 続行する場合は何かキーを押してください

Page 12: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

二次元配列

int a[5];

int a[3][5];

a[0] a[1] a[2] a[3] a[4]

a[0][0] a[0][3] a[0][2] a[0][1] a[0][4]

a[1][0] a[1][3] a[1][2] a[1][1] a[1][4]

a[2][0] a[2][3] a[2][2] a[2][1] a[2][4]

a[0][ ]

a[1][ ]

a[2][ ]

Page 13: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

char a*3+*5+=,“aiu”,”ABC”,”test”-;

printf(“%s”,a*0+); → aiu

printf(“%s”,a*1+); → ABC

a ¥0 u i

A ¥0 C B

t t s e ¥0

a[0][ ]

a[1][ ]

a[2][ ]

Page 14: スライド 1cosmos.izl.ecs.cst.nihon-u.ac.jp/~fe-learning/cgi-bin/...Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved 前回の復習 乱数 ランダムな数字を発生させる

Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved

演習

1. 乱数を用いて100以下の数字を5つ配列に

格納し、出力せよ。さらに、偶数と奇数の判定を出力せよ。

2. 自分の名前を半角ローマ字で画面上に

入力し、文字数を出力せよ。さらに逆順で

出力せよ。

3. 二次元配列に名前を3人分半角ローマ字で入力し、出力せよ。