#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(a<b)
{
if(b<c)
{
if(a<c)
{
printf("%d<%d<%d\n",a,b,c);
}
else
{
printf("%d%d%d",a,b,c);
}
}
if(b>c)
{
if(a>c)
{
printf("%d<%d<%d\n",c,b,a);
}
else
{
printf("%d<%d<%d\n",a,c,b);
}
}
}
else if(a>b)
{
if(b>c)
{
if(a>c)
{
printf("%d>%d>%d\n",a,b,c);
}
else
{
printf("%d>%d>%d\n",a,c,b);
}
}
else if(b>c)
{
if(a>b)
{
printf("%d>%d>%d\n",a,b,c);
}
else
{
printf("%d>%d>%d\n",b,a,c);
}
}
else if(c>b)
{
if(c>a)
{
printf("%d<%d<%d\n",b,a,c);
}
else
{
printf("%d>%d>%d\n",a,c,b);
}
}
else if(a<c)
{
if(a<b)
{
printf("%d<%d<%d\n",a,b,c);
}
else
{
printf("%d<%d<%d\n",b,a,c);
}
}
else if(a>c)
{
if(a<b)
{
printf("%d>%d>%d\n",b,a,c);
}
else
{
printf("%d>%d>%d\n",a,b,c);
}
}
else
{
printf("%d=%d=%d\n",a,b,c);
}
}
間違っている部分を教えてください。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
どうも学校の課題っぽいので、自分でがんばってください。
でないと勉強になりません。ヒントだけ。まず、大小関係について頭を冷やして、ノートにでも整理して書いてみましょう。
たとえば、
if(a<b){
if(b<c){
if(a<c){
printf("%d<%d<%d\n",a,b,c);
} else{
printf("%d<%d<%d\n",a,b,c);
}
という始まり方をしていますが、 int変数a,b,cに対してa<bとb<cの両方が成り立ったらifで調べるまでもなく a<c は成り立っています。if(a<c)は無駄。当然else節が実行されることもありません。
このように、二つの数の大小関係の組み合わせと、3つの数の順序の関係を明確化できずにやみくもにプログラムを書いているように見受けられます。
No.2
- 回答日時:
ソースコードを投稿するときは全角スペースでインデントすると見やすいですよ。
a<bの時のパターンは
a<b<c , a<c<b , c<a<b
の三つですね。
それぞれ、どのような条件を加えると成り立つか考えてみてください。
同様にしてb<aの時のパターン
b<a<c , b<c<a , c<b<a
も考えられます。
これで終わりです。
printfは6個で出来ますね。
回答ありがとうございます。
iF(a<b){else(b<c){printf("a<b<c")}}
でa<b<cが成り立ちますか?
No.3
- 回答日時:
#1,#2さんとは別のアプローチ方法を
数字データをいったん配列にでもいれて
ソート処理(バブルソートが比較的簡単なアルゴリズム)
してやるのがメンテナンス性がいいし
対象となる数字の個数が増えても対処しやすいでしょう。
No.4
- 回答日時:
#include <stdio.h>
int
main(void)
{
double a, b, c;
char buf[BUFSIZ];
int stat;
while (1) {
stat = 0;
printf("input 3 numbers, a b c >> ");
if (fgets(buf, BUFSIZ, stdin) == 0) {
break;
}
sscanf(buf, "%lf %lf %lf", &a, &b, &c);
if (a <= b) {
stat |= 1;
}
if (b <= c) {
stat |= 2;
}
if (c <= a) {
stat |= 4;
}
switch (stat) {
case 1:
printf("%lf < %lf <= %lf, a < c <= b\n", a, c, b);
break;
case 2:
printf("%lf < %lf < %lf, b < a < c\n", b, a, c);
break;
case 3:
printf("%lf <= %lf <= %lf, a <= b <= c\n", a, b, c);
break;
case 4:
printf("%lf < %lf < %lf, c < b < a\n", c, b, a);
break;
case 5:
printf("%lf <= %lf < %lf, c <= a < b\n", c, b, a);
break;
case 6:
printf("%lf <= %lf <= %lf, b <= c <= a\n", b, c, a);
break;
case 7:
printf("%lf == %lf == %lf, a == b == c\n", a, b, c);
break;
}
}
return 0;
}
No.5
- 回答日時:
> iF(a<b){else(b<c){printf("a<b<c")}}
> でa<b<cが成り立ちますか?
誤字脱字は置いといて......
では逆に、a<b かつ b<c で a<b<c が成り立たない状況が考えられますか?
プログラムがどうとか言う以前の、算数/数学の話です。
No.6
- 回答日時:
あー…どこかで誰かが勘違いしてるかな……?
> iF(a<b){else(b<c){printf("a<b<c")}}
じゃなくて
if(a<b) { if(b<c) { /* a<b<c */ } }
な。
No.7
- 回答日時:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(a<b && b<c)
;/* a<b<c */
else if(a<c && c<b)
;/* a<c<b */
else if(b<a && a<c)
;/* b<a<c */
else if(b<c && c<a)
;/* b<c<a */
else if(c<a && a<b)
;/* c<a<b */
else if(c<b && b<a)
;/* c<b<a */
else
;/* 同じ値が含まれている */
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語 3 2022/11/09 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
printf で二進表示を行いたい。
-
10個出力で改行したいのですが...
-
コマンドラインに出力した文字...
-
ブラックジャック
-
C言語で、「自然数nを入力し、n...
-
error C2143: 構文エラー : ';'...
-
scanfに文字が入力されたときに...
-
4の倍数を論理演算で表す。。
-
縦の棒グラフ
-
パスカルの三角形についてのCプ...
-
(C言語)めちゃくちゃな値にな...
-
ピラミッド表示プログラム。
-
C言語 ツェラーの公式を使った...
-
CTRL+Dでループを抜けるには
-
勝率をプログラムに
-
Visual Sutdio 2017 でのC言語...
-
%P と %X の違い
-
printf( " %2d", p * q );
-
C言語 プログラミング ごめんな...
-
printf()文の書式
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報