ここから本文です

C言語の問題なんですが分かりません。

アバター

ID非公開さん

2020/7/723:05:51

C言語の問題なんですが分かりません。

3つの整数a,b,cを渡すと、aに1番大きい値、bに次に大きい値、cに1番小さい値を代入して入れ替える関数を作成せよ。
解説もつけて下さると助かります。

閲覧数:
30
回答数:
2

違反報告

ベストアンサーに選ばれた回答

ohs********さん

2020/7/912:58:18

「入れ替える関数を作成せよ」なので、こうですね。
(関数名は仮にsortとしています)
--------------

//値を入れて返すために、引数を参照で受け取る
void sort(int *a,int *b,int *c){

//数字を一時的に入れる変数
int temp;

//aとbのうち小さい方をbに
if(*a<*b){
temp = *a;
*a = *b;
*b = temp;
}

//bとcのうち小さい方をcに。これでcには最小値が入る
if(*b<*c){
temp = *b;
*b = *c;
*c = temp;
}

//残ったaとbで大きい方をaに。これでaに最大値が入る
if(*a>*b){
temp = *a;
*a = *b;
*b = temp;
}

//参照の値を書き換えてるので戻り値はなし
return;

}

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

kapuseruさん

2020/7/723:11:24

3回ほど大小を確認して入れ替えを行うと,うまく行きます.

-------------------
#include<stdio.h>


int main(){
int a,b,c;
printf("3つの数字を入力: ");
scanf("%d %d %d", &a, &b, &c);

if(a<b){
int temp = a;
a = b;
b = temp;
}
if(a<c){
int temp = a;
a = c;
c = temp;
}

if(b<c){
int temp = b;
b = c;
c = temp;
}

printf("a:%d b:%d c:%d\n", a,b,c);
return 0;
}

-------------------
結果たち:

3つの数字を入力: 1 2 3
a:3 b:2 c:1

3つの数字を入力: 2 1 3
a:3 b:2 c:1

3つの数字を入力: 3 1 2
a:3 b:2 c:1

3つの数字を入力: 3 2 1
a:3 b:2 c:1

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる