C言語 入門 小学生でもわかるC言語

C言語 困った時の部品集!

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語 目次/C言語 困った時の部品集!/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

□目次へ戻る□

Index

乱数(ランダムな数)

/*サンプル*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int ransu;
	int kazu;

	srand((unsigned)time(NULL));

	for(kazu=0;kazu<10;kazu++){
		ransu = (rand()%10);
		printf("%d ",ransu);
	}

	printf("\n");

	return 0;
}

■実行結果■

実行結果(b-t-1)

■説明■

乱数(らんすう)

乱数(ランダムな数)を発生させます!

使い道

確率によって起こる事全てに使います。

使い方

#include <stdlib.h>
#include <time.h>

先頭にこの2つを加えてください!

本体

srand((unsigned)time(NULL));
ransu = (rand()%10);

本体はこちらです。「ransu」は結果のランダムな数を受け取る変数になりますので、名前はなんでも大丈夫です。

「rand()%10」この「%10」の部分が乱数の範囲になります。

「%10」だと「0〜9」まで

「%50」だと「0〜49」まで

のようになります。

□ページの先頭へ□

画面のクリア

/*サンプル*/
#include <stdio.h>
#include <stdlib.h>

int main(){
	system("cls");
	
	return 0;
}

■実行結果■

実行結果(b-t-2)

■説明■

画面のクリア

画面をクリアします!

使い道

画像の表示、クリア、画像の表示、クリア・・・。をくり返してアニメーションのような事ができます。

使い方

#include <stdlib.h>

先頭にこちらを加えてください!

本体

system("cls");

本体はこちらです。「system」命令を使うとコマンドプロンプトの命令を使えるようになります。ここでは「cls」という画面をクリアする命令を使ってます。

□ページの先頭へ□

矢印キーリアルタイム(いつでも)入力

/*サンプル*/
#include <stdio.h>
#include <conio.h>

int main(){
	int dummy;
	int key;
	int flag = 1;

	printf("無限ループになります。矢印キーを押してください。\n");

	while(flag){
		if(_kbhit()){
			dummy = _getch();
			if(dummy == 0 || dummy == 224){
				key = _getch();
				flag = 0;
			}
		}
	}

	switch(key){
	case 0x4b:
		printf("左");
		break;
	case 0x48:
		printf("上");
		break;
	case 0x4d:
		printf("右");
		break;
	case 0x50:
		printf("下");
		break;
	default:
		printf("エラー!");
		break;
	}

	printf("\n");

	return 0;
}

■実行結果■

実行結果(b-t-3)

■説明■

矢印キーリアルタイム(いつでも)入力

矢印キー(←↑→↓)をリアルタイムで受け取ります。

使い道

リアルタイムに進行するゲームなど

使い方

#include <conio.h>

先頭にこちらを加えてください!

int dummy;
int key;

そして変数を2つ用意してください!

本体

if(_kbhit()){
	dummy = _getch();
	if(dummy == 0 || dummy == 224){
		key = _getch();
	}
}

本体はこちらです。

_kbhit();

これはキーボードを押した時に反応する関数です。

dummy = _getch();

キーボード入力があった時は「_getch()」関数でその押されたキーを受け取ります。

ここで押されたキーが矢印キーの場合、最初に「0」または「224」を受け取り(環境によって受け取る数が違うかもです)次に「矢印キーのコード番号」を受け取ります。

dummy = _getch();
if(dummy == 0 || dummy == 224){
	key = _getch();
}

なので変数「dummy」が「0」または「224」だったらもう一度変数「key」が「矢印キーのコード番号」を受け取りにいくという事をしてます。

「||」がまたはという意味で条件を2つ以上使いたい時にこれで次の条件を書きます。

普通のキーはそのまま「コード番号」を受け取るのでこんな事をしなくて大丈夫です。

キーボードの上にある「f1〜f12」ぐらいまでのファンクションキーも矢印キーと同じように最初に「0」や「224」→次に「コード番号」という受け取り方をするのでそれは「switch」関数などでエラー対策しましょう!

矢印キーコードはそれぞれ「0x4b:左」「0x48:上」「0x4d:右」「0x50:下」になります。

一文字ずつ入力を受け取る

/*サンプル*/
#include <stdio.h>
#include <conio.h>

int main(){
	int moji;
	int count;

	printf("無限ループになります。何かキーを押してください。\n");

	for(count=0;count<5;count++){
		moji = _getch();
		if(moji == 0 || moji == 224){
			moji = _getch();
		}
		printf("%d ",moji);
	}

	printf("\n");

	return 0;
}

■実行結果■

実行結果(b-t-4)

■説明■

一文字ずつ入力を受け取る

一文字ずつ受け取って、「文字コード」で表示します。

使い道

タイピングゲームなど

使い方

#include <conio.h>

先頭にこちらを加えてください!

int moji;

そして文字を受け取るための変数「int」で1つ用意してください!

本体

moji = _getch();

本体はこちらになります。「_getch()」という関数で文字を一文字ずつ受け取ります。

ここで受け取る文字が矢印など少し特別な文字の場合、2回に分けて最初に「0」または「224」を受け取り、次に文字コードを受け取るので、受け取った文字が「0」だったらもう一度「_getch()」関数を使います。

moji = _getch(); if(moji == 0 || moji == 224){ moji = _getch(); }

入力待ちになりますが、一文字入れればEnterキーを押さなくてもすぐに文字を受け取り表示します。

Enterキーの文字コード「13」なども表示されますのでいろいろ試してみてください!

セットで一つ(構造体)

/*サンプル*/
#include <stdio.h>

struct ADDRESSBOOK{
	char *name;
	char *tel;
	int age;
};

struct ADDRESSBOOK tarou;
struct ADDRESSBOOK hanako;
struct ADDRESSBOOK kumi6_3[10];

int main(){
	tarou.name = "山田太郎";
	tarou.tel = "09011112222";
	tarou.age = 18;

	hanako.name = "山田花子";
	hanako.tel = "09033334444";
	hanako.age = 20;

	kumi6_3[0].name = "鈴木一郎";
	kumi6_3[0].tel = "09012344321";
	kumi6_3[0].age = 12;

	kumi6_3[1].name = "田中二郎";
	kumi6_3[1].tel = "09022334455";
	kumi6_3[1].age = 12;

	printf("%s %s %d才\n",tarou.name,
		tarou.tel,tarou.age);
	printf("%s %s %d才\n",hanako.name,
		hanako.tel,hanako.age);
	printf("%s %s %d才\n",kumi6_3[0].name,
		kumi6_3[0].tel,kumi6_3[0].age);

	return 0;
}

■実行結果■

実行結果(b-t-5)

■説明■

セットで一つ(構造体)

名前+電話番号=電話帳

ハンバーガー+ポテト+飲み物=ハンバーガーセット

などのようにいくつかのデータをまとめて一つのセットとして使う事ができます!

使い道

電話帳などなど

使い方

セットの内容を決めます!

「電話帳」

1・名前

2・電話番号

3・年令

あとは変数のように名前を付けて使います。

普通の変数と同じでどの関数からでも使えるグローバルな状態にするには「int main()」の前に書きます。

本体

struct ADDRESSBOOK{
	char *name;
	char *tel;
	int age;
};

本体はこちらになります。「struct」の後にその「セットの名前」をつけます。

電話帳→「ADDRESSBOOK」

名前は大文字でつけます。

そして内容を中に書きます。文章を使う時は「char *name・char *tel」と先頭に「*」をつけます。これはポインタといいます。難しい事は考えずこの通りに書けば普通に文章が使えます。詳しくはポインタをご覧ください!

実際に使う時は

struct ADDRESSBOOK tarou;
struct ADDRESSBOOK hanako;
struct ADDRESSBOOK blank[10];

「struct」「セットの名前」の後に使う時の「変数名」をつけます。

配列を使って同じクラスの電話帳などをいっきに管理する事もできます。

次にその一つ一つの内容を入れていきます。

例えば「tarou」だったら

tarou.name = "山田太郎";
tarou.tel = "09011112222";
tarou.age = 18;

変数名の間を「.」コンマで区切ってその内容を書きます。

配列の場合は

kumi6_3[0].name = "鈴木一郎";
kumi6_3[0].tel = "09012344321";
kumi6_3[0].age = 12;

配列番号をくっつけて後は同じように内容を書きます。

あとは「printf」関数などで同じように「tarou.name」のように「.」で区切って使います。

割った余り法

/*サンプル*/
#include <stdio.h>

int main(){
	int i;
	for(i=0;i<20;i++){
		printf("%d ÷ 3 = %d 余り %d\n",i,i/3,i%3);
	}
	return 0;
}

■実行結果■

実行結果(b-t-6)

■説明■

割った余りがぐるぐる回ります

変数なんかで同じトコロをぐるぐる回したい場合ってあると思います。

123401234012340123401234...

みたいな感じでぐるぐる回したような結果が得られます。

使い道

いろいろ使えます。

使い方

とりあえずの変数とそれを割る数を決めます。

割る数が「3」だと「012012012...」「4」だと「012301230123...」みたいに回ります。

本体

printf("%d ÷ 3 = %d 余り %d\n",i,i/3,i%3);

この計算はわかりやすいように割った結果もだしてますが、

実際に使う時は

余り = i % 3

これだけで大丈夫です。

あとはこれをインクリメントするなりしていけば「0123012...」のように同じトコロをぐるぐる回る結果が得られます。

もとの変数がマイナスになったりすると少しおかしな結果になる事があるので、マイナスにならないような大きい値にするか、

「unsigned int」などで宣言する必要があります。

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本

□ページの先頭へ□

□HOME□