画像(logo)

HOME/[C言語]サンプルプログラム集 目次/入れ替え

広告

[C言語 サンプルプログラム集]
入れ替え

広告

↓2016年02月29日発売↓

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

目次へ戻る

入れ替え

今回は2つの要素の入れ替えをやります。

普通に入れ替え

#include <stdio.h>

int main(){
	int a = 100;
	int b = 200;
	int tmp = 0;

	printf("a = %d,b = %d\n\n",a,b);

	tmp = a;
	a = b;
	b = tmp;

	printf("a = %d,b = %d\n\n",a,b);

	return 0;	
}

■実行結果■

画像(cs_1_1)

変数「a」と「b」を普通に入れ替えてみます。

int a = 100;
int b = 200;

入れ替え用の変数を用意します。

int tmp = 0;

この入れ替え用の変数を間に挟んで入れ替えをします。

tmp = a;
a = b;
b = tmp;

これで入れ替え完了です!

入れ替え関数

#include <stdio.h>

void my_swap(int *,int *);

int main(){
	int a = 100;
	int b = 200;

	printf("a = %d,b = %d\n\n",a,b);

	my_swap(&a,&b);

	printf("a = %d,b = %d\n\n",a,b);

	return 0;	
}

void my_swap(int *a,int *b){
	int w;
	w = *a;
	*a = *b;
	*b = w;	
}

■実行結果■

画像(cs_1_2)

入れ替え用の関数を作ります。

2つの変数のアドレスを渡して入れ替えていきます。

int a = 100;
int b = 200;
my_swap(&a,&b);

入れ替え用関数「my_swap()」になります。

void my_swap(int *a,int *b){
	int w;
	w = *a;
	*a = *b;
	*b = w;	
}

「*a」→内容、「a」→アドレスを間違えないように内容を入れ替えて完了です!

広告

構造体の入れ替え

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

struct STUDENT{
	char name[128];
	int age;
};

struct STUDENT set_data(char *, int);
void my_swap2(struct STUDENT *,struct STUDENT *);

int main(){
	struct STUDENT student[2];
	int i;
	
	student[0] = set_data("tanaka",15);
	student[1] = set_data("suzuki",12);

	for(i=0;i<2;i++){
		printf("%d:%s %d\n",i,student[i].name,student[i].age);
	}

	my_swap2(&student[0],&student[1]);
	
	printf("\n");

	for(i=0;i<2;i++){
		printf("%d:%s %d\n",i,student[i].name,student[i].age);
	}

	return 0;
}

struct STUDENT set_data(char *name, int age){
	struct STUDENT tmp;
	strcpy(tmp.name,name);
	tmp.age = age;
	return tmp;
}

void my_swap2(struct STUDENT *a,struct STUDENT *b){
	struct STUDENT tmp;
	tmp = *a;
	*a = *b;
	*b = tmp;	
}

■実行結果■

画像(cs_1_3)

より実用的なプログラムにおいては構造体の入れ替えも必要になってくるかもしれません。

struct STUDENT{
	char name[128];
	int age;
};

struct STUDENT student[2];

こちらの2つの構造体を入れ替えます。

my_swap2(&student[0],&student[1]);

それぞれのアドレスを渡して入れ替えます。

void my_swap2(struct STUDENT *a,struct STUDENT *b){
	struct STUDENT tmp;
	tmp = *a;
	*a = *b;
	*b = tmp;	
}

引数が構造体になるだけで後は構造体でもメンバを指定せずに入れ替えれば丸ごと入れ替える事ができます。

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓2017年06月16日発売↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2017/5/1 13:15時点)