home > 写経編 > 柴田望洋『明解C言語 入門編』 > 10. ポインタ >

ForNext

Only Do What Only You Can Do

077. 2つの値を交換する

VBScript

JScript

Perl

更新日 : 2010.10.18
sub swap1
{
    my ($nx, $ny) = @_;
    my $tmp = $nx;
    $nx = $ny;
    $ny = $tmp;
}

sub swap2
{
    my ($nx, $ny) = @_;
    my $tmp = $$nx;
    $$nx = $$ny;
    $$ny = $tmp;
}

$na = 57;
$nb = 21;

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";

&swap1($na, $nb);

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";

$na = 57;
$nb = 21;
&swap2(\$na, \$nb);

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";

$na = 57;
$nb = 21;
($na, $nb) = ($nb, $na);

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";
L:\>perl lesson_10_077.pl
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

整数A:21
整数B:57

PHP

更新日 : 2010.11.03
<?php
function swap1($nx, $ny)
{
    $tmp = $nx;
    $nx  = $ny;
    $ny  = $tmp;
}

function swap2(&$nx, &$ny)
{
    $tmp = $nx;
    $nx  = $ny;
    $ny  = $tmp;
}

$na = 57;
$nb = 21;

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";

swap1($na, $nb);

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";

$na = 57;
$nb = 21;
swap2($na, $nb);

printf("整数A:%d\n", $na);
printf("整数B:%d\n", $nb);
print "\n";
?>
L:\>php lesson_10_077.php
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

Python

更新日 : 2010.11.17
# coding: Shift_JIS

def swap1(nx, ny):
    tmp = nx
    nx  = ny
    ny  = tmp

def swap2(nx, ny):
    return ny, nx

na = 57
nb = 21

print "整数A:%d" % na
print "整数B:%d" % nb
print

swap1(na, nb)

print "整数A:%d" % na
print "整数B:%d" % nb
print

na = 57
nb = 21
na, nb = swap2(na, nb)

print "整数A:%d" % na
print "整数B:%d" % nb
print

na = 57
nb = 21
nb, na = na, nb

print "整数A:%d" % na
print "整数B:%d" % nb
print
N:\>python lesson_10_077.py
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

整数A:21
整数B:57

Ruby

更新日 : 2010.11.01
def swap1(nx, ny)
    tmp = nx
    nx  = ny
    ny  = tmp
end

def swap2(nx, ny)
    return ny, nx
end

na = 57
nb = 21

printf("整数A:%d\n", na)
printf("整数B:%d\n", nb)
puts ""

swap1(na, nb)

printf("整数A:%d\n", na)
printf("整数B:%d\n", nb)
puts ""

na, nb = nb, na

printf("整数A:%d\n", na)
printf("整数B:%d\n", nb)
puts ""

na = 57
nb = 21
na, nb = swap2(na, nb)

printf("整数A:%d\n", na)
printf("整数B:%d\n", nb)
L:\>ruby  l:\lesson_10_077.rb
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

整数A:21
整数B:57

PowerShell

Scala

F#

C

更新日 : 2010.10.08
#include <stdio.h>

void swap1(int nx, int ny)
{
    int tmp = nx;
    nx = ny;
    ny = tmp;
}

void swap2(int* nx, int* ny)
{
    int tmp = *nx;
    *nx = *ny;
    *ny = tmp;
}

int main(int argc, char* argv[])
{
    int na = 57;
    int nb = 21;

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    swap1(na, nb);

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    na = 57;
    nb = 21;
    swap2(&na, &nb);

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    return 0;
}
R:\>lesson077\Project1.exe
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

C++

更新日 : 2010.10.13
#include <stdio.h>

void swap1(int nx, int ny)
{
    int tmp = nx;
    nx = ny;
    ny = tmp;
}

void swap3(int& nx, int& ny)
{
    int tmp = nx;
    nx = ny;
    ny = tmp;
}

int main(int argc, char* argv[])
{
    int na = 57;
    int nb = 21;

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    swap1(na, nb);

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    na = 57;
    nb = 21;
    swap3(na, nb);

    printf("整数A:%d\n", na);
    printf("整数B:%d\n", nb);
    puts("");

    return 0;
}
T:\>lesson077\Project1.exe
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

C++Builder

VC++

C#

Java

Objective-C

D

VB

VB.NET

Delphi

更新日 : 2010.09.24
program Project1;

{$APPTYPE CONSOLE}

uses
    SysUtils;

procedure swap1(nx:Integer; ny:Integer);
var
    tmp: Integer;
begin
    tmp := nx;
    nx  := ny;
    ny  := tmp;
end;

procedure swap2(var nx:Integer; var ny:Integer);
var
    tmp: Integer;
begin
    tmp := nx;
    nx  := ny;
    ny  := tmp;
end;

procedure swap3(nx:PInteger; ny:PInteger);
var
    tmp: Integer;
begin
    tmp := nx^;
    nx^ := ny^;
    ny^ := tmp;
end;

procedure main();
var
    na, nb: Integer;
begin
    na := 57;
    nb := 21;

    Writeln(Format('整数A:%d', [na]));
    Writeln(Format('整数B:%d', [nb]));
    Writeln('');

    swap1(na, nb);

    Writeln(Format('整数A:%d', [na]));
    Writeln(Format('整数B:%d', [nb]));
    Writeln('');

    na := 57;
    nb := 21;
    swap2(na, nb);

    Writeln(Format('整数A:%d', [na]));
    Writeln(Format('整数B:%d', [nb]));
    Writeln('');

    na := 57;
    nb := 21;
    swap3(@na, @nb);

    Writeln(Format('整数A:%d', [na]));
    Writeln(Format('整数B:%d', [nb]));
    Writeln('');
end;

begin
    main;
end.
S:\>lesson077\Project1.exe
整数A:57
整数B:21

整数A:57
整数B:21

整数A:21
整数B:57

整数A:21
整数B:57

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system