
以下の問題でorder関数の使い方がわからないので教えてください。途中まで作成したものも貼っておきます。
よろしくおねがいします。
100 までのランダムな整数 x, y を定義する。int 型のポインタを 2 つ受け取る order 関数をつくり,int 型変数(x)が(y)よ りも大きい場合は,値を入れ替える。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void swap(int *x, int *y);
int main(void)
{
int x,y;
int *p;
srand((unsigned)time(NULL));
x= (int)(rand()/(RAND_MAX +1.0)*100);
y=(int)(rand()/(RAND_MAX +1.0)*100);
p=&x;
printf("x:address %p, value = %d\n",&x,x);
printf("y:address %p, value = %d\n",&y,y);
if (x<y)
{ swap(&x,&y);}
printf("x:address %p, value = %d\n",&x,x);
printf("y:address %p, value = %d\n",&y,y);
return 0;
}
void swap(int *x, int *y)
{
int c;
c = *x; *x =*y; *y = c;
return ;
}
閉じる
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>order関数の使い方がわからないので
swapをorderにしたら
if (x<y)
が要らなくなるだけだと思いますが・・・
因みにそんな物作ってもソースが分かりにくくなる
だけだと思う。
No.1
- 回答日時:
order関数とありますが、ソースコードを見る限りswap関数ではないですか?
あとp=&x;の部分ですが、printf関数に直接アドレスと値を渡しているように見えるので要らないかと思われます。
(途中までとのことなのでこの後何かに使われるのかもしれませんが。)
xがyより大きい場合ならif文の不等号が逆です。
if (x<y)
↓
if(x>y)
swap関数にはそれぞれxとyの変数のアドレスを渡して、中身を入れ替えることをやっています。
ですので呼び出し元の変数も同様に入れ替わっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
if と配列の組み合わせ
-
式は定数値が必要です」という...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
C言語初心者です、、、お助けく...
-
整数データの配列から同じ値の...
-
数字列を3桁ごとにカンマで区切...
-
struct tanka_kosuu kosuu[10];...
-
エラー 添字が付けられた値が、...
-
iTRONプログラミング
-
PowerShellがうまくいかない
-
毎回違う乱数を生成するにはど...
-
入力を待たずにstdinの監視をし...
-
C言語 逆順の配列の仕方を教え...
-
C++でvectorにテキストファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
(int *)の意味
-
ColorをRGBで指定する方法
-
未解決の外部シンボル _printf...
-
構造体の勉強中です 合計点の高...
-
商と剰余を同時に求める(C言語)
-
C言語で分からないところがあり...
-
式は定数値が必要です」という...
-
C言語での奇数の和
-
std::set<int> で、ある値が何...
-
課題でつまってます・・・
-
int16_t の _t は何?
-
比較回数と交換回数表示について
おすすめ情報
ありがとうございます
記載したソースコードはswap関数を使っているんですが、order関数を使って同じ結果を得たいのですがどうすればいいのでしょうか。
わかりづらい質問ですみません。