Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved
C言語講座 第3回
~配列 文字列~
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) : 条件式の否定
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
Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved
繰り返し処理 while文 条件式が真のとき{}内の処理を繰り返し実行する。
書き方:
while ( 継続条件式 )
{
処理
}
前回の復習
do
{
処理
}while ( 継続条件式 )
while文 do-while文
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
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+)
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のみ
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+); }
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;
}
結果
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*要素番号]);
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 続行する場合は何かキーを押してください
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][ ]
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][ ]
Copyright (C) 2011 Izumi Lab.. Nihon University. All Rights Reserved
演習
1. 乱数を用いて100以下の数字を5つ配列に
格納し、出力せよ。さらに、偶数と奇数の判定を出力せよ。
2. 自分の名前を半角ローマ字で画面上に
入力し、文字数を出力せよ。さらに逆順で
出力せよ。
3. 二次元配列に名前を3人分半角ローマ字で入力し、出力せよ。