C言語で5つの整数a、b、c、d、eを入力し、降順に整列した後に出力して終了するプログラムを作成してください。

入力 出力
3 9
6 7
9 6
7 5
5 3

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>作成してください。


貴方が作成してください。

作成してわからないことがあったら、そのわからない部分を質問してください。
1.入力された数字を5回取得する。
2.5回取得したら、降順に整列する。
3.整列したら、出力する。
以上を作ればおしまいです。
    • good
    • 0
この回答へのお礼

回答有難うございます。
ひらめきました。自分でやってみます。

お礼日時:2009/05/23 08:10

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q代数的整数とは何ですか?

本などで代数的整数というものを見かけるのですが、
これはどういうものなのでしょうか?
検索したり本などを見てみましたが、どういうものか分かりませんでした。
どなたか定義と例を教えて頂けないでしょうか?

よろしくお願い致します。

Aベストアンサー

因数分解の話は、どこから湧いてきたのでしょうか?

有理係数であれば、最高次の係数が1か否かは
全く問題になりません。
方程式の両辺を、最高次の係数で割ってしまえば、
どの式でも「最高次の係数が1」になるからです。
monic であるか否かは、多項式の係数環が体でない
ときのみ意味を持つ概念です。


> 係数が1より小さくなることがあるのでしょうか?

1より小さい整数というのは、零または負のことですか?

QC言語についてです 整数 nを入力すると、1+2+3...+n という計算式を出力するには どうすれ

C言語についてです
整数 nを入力すると、1+2+3...+n
という計算式を出力するには
どうすればよいでしょうか?

Aベストアンサー

#include <stdio.h>

int main(void) {
 int n, i = 1;
 scanf("%d", &n);
 while(i <= n) {
  if (i == n)
   printf("%d\n", i);
  else
   printf("%d+", i);
  i++;
  }
 return 0;
}

Q整数除算の意味とは?

とあるコンピューターシステムのアルゴリズムにおいて整数除算という
項目が出てきました。

(L+M)/2=M という式です。”/は整数除算を表す”

(LとMはカウンターで1LOOP毎にあがっていくものです。)

仮にL=1、M=10の場合は”11割る2”で応え5余り1と考えていいのでしょうか?
仮にL=2、L=3の場合の考え方も教えてください。

Aベストアンサー

例えば、123000を10で割る時、真面目に計算しませんよね。誰でも
「右端の0を取る」つまり、桁を右にシフトしますね。
コンピュータの内部形式は2進法です。だから、「2で割る」とは
桁を右に1桁シフトすることと同じです。
今はCPUが速いので、問題になりませんが、ずっと以前は割り算は
シフトの200倍近い時間を必要とする遅い命令でした。
つまり、「2で割る」を実際の割り算を使ってやるヤツは「間抜け」
ということを意味したのです。また、機械語の除算命令は剰余も
同時に求まります。これを別々に求めるコーディングを見ると
逆上したものです。例:int a = m / 2; int b = m % 2;
閑話休題
「2で割る」は右へ1回シフトするので、余りは切り捨てられる右端の
1桁の値です。つまり、0x01との論理積で求められるのです。
掲題の件は2進法における割り算の考え方を示唆しているのでは
ないでしょうか。
尚、更に昔は乗算、除算という命令もありませんでした。

QC言語についてです 5人のテストの点数を入力すると 合計点、平均点、最高点、最低点を 出力するプログ

C言語についてです
5人のテストの点数を入力すると
合計点、平均点、最高点、最低点を
出力するプログラムを作成したいのですが
うまくできませんでした
なぜでしょうか?

Aベストアンサー

> int score[5], goukei,max,min = 0, i;
→ int score, goukei = 0, max = 0, min = 100, i;

> if (max < score[i])
> {
> max = score[i];
> }
→ if (max < score)
→ {
→  max = score;
→ }

> if (min > score[i])
> {
> min = score[i];
> }
→ if (min > score)
→ {
→  min = score;
→ }

Q①整数とは ②(整数)+(整数)=(整数) ~数学・算数が苦手な生徒に説明する場合~

①整数とは何か。

②(整数)+(整数)=(整数)、(整数)-(整数)=(整数)

→①と②を「数学・算数が苦手な生徒に」わかりやすく説明するにはどうしたらいいのでしょうか?

☆宜しくお願い致します☆

Aベストアンサー

整数とは、0に1ずつ足したり引いたりしてできる数の集まり。0を含む。
整数+整数が整数になるのは、
例えば、0に3をたすということは、
0+1+1+1になるから、必ず整数になる。
整数-整数も0に3を引くとなると
0-1-1-1になるから必ず整数になる。

Q入力された2つの整数の差を絶対値を出力するプログラム

2整数の差を絶対値を出力するプログラムをつくりました.
入力される数値は、正数の場合は最大8桁まで有効とし、9桁目以降を無視、負数の場合は '-'を含め、最大9桁まで有効とし,10桁目以降を無視するようにしたい。
2番目の数値入力で9桁以降に数字以外の文字を入力すると,うまく動きません.なぜ動かないかとどのように直したらよいか教えてください. お願いします.

#include <stdio.h>
#include <stdlib.h>

#define BUFFERSIZE 10
#define PLUS_MAX 8
#define MINUS_MAX 9
#define C_NULL ('\0')
#define RC_OK 0
#define RC_ND -1
#define RC_ID -2
#define RC_MD -3

int absolute( int n1, int n2 ) ;

main()
{
char n[ 2 ][ BUFFERSIZE ];
int i ;
int a[ 2 ] ;
int ab ;
int count ;
int n_pos ;
char c ;


for( i = 0 ; i < 2 ; i ++ ){
printf( "%d番目の数値 :", i + 1 ) ;
for( count = 0 ; count <= BUFFERSIZE ; count ++ ){
c = getchar() ;

if( c >= '0' && c <= '9' || count == 0 && c == '-' ){
n[i][ count ] = c ;
continue ;
}

if( c == '\n' )
break ;
printf( "Error!\n" ) ;
return( RC_ID ) ;

}

if( count == 0 ){
printf("Error!\n");
return( RC_ND );
}

else if( n[ i ][ 0 ] == '-' && count < 2 ){
printf("Error!\n");
return( RC_ID ) ;
}

if( n[ i ][ 0 ] == '-' && count > MINUS_MAX ){
n_pos = MINUS_MAX ;
}else{

if( count > PLUS_MAX ){
n_pos = PLUS_MAX ;
}else{
n_pos = count ;
}
}
n[ i ][ n_pos ] = '\0' ;

a[ i ] = atoi( n[ i ] ) ;
}
ab = absolute( a[ 0 ], a[ 1 ] ) ;
printf( "絶対値は %d \n", ab ) ;
return( RC_OK );
}

int absolute(int n1, int n2)
{
int i ;

i = n1 - n2 ;
return i >= 0 ? i : -i ;
}

2整数の差を絶対値を出力するプログラムをつくりました.
入力される数値は、正数の場合は最大8桁まで有効とし、9桁目以降を無視、負数の場合は '-'を含め、最大9桁まで有効とし,10桁目以降を無視するようにしたい。
2番目の数値入力で9桁以降に数字以外の文字を入力すると,うまく動きません.なぜ動かないかとどのように直したらよいか教えてください. お願いします.

#include <stdio.h>
#include <stdlib.h>

#define BUFFERSIZE 10
#define PLUS_MAX 8
#define MINUS_MAX 9
#define C_NULL ('\0')
#d...続きを読む

Aベストアンサー

★ソースを覗いた感想は main 関数が長すぎます。
・上手く動かないようですが、バグを探る前に main 関数のソースを整理します。
 下に main 関数のサンプルを載せます。→これを元に main 関数とサブ関数を作ります。
・入力部は『MyUserInput』関数にお任せしています。→main 関数に記述しません。
 この関数は1つの整数文字列を入力してから、その文字列を整数変換して引数 input へ代入します。
 戻り値は、正常(RC_OK)、エラー(RC_ND,RC_ID,RC_MD)を返します。
 この戻り値は、main 関数で受け取って処理します。→エラーメッセージも main 関数の担当にします。

サンプル:
int main( void )
{
 int a[ 2 ];
 int i, ret;
 
 for ( i = 0 ; i < 2 ; i ++ ){
  printf( "%d番目の数値 :", i + 1 ) ;
  
  if ( (ret = MyUserInput(&a[i])) != RC_OK ){
   printf( "Error!\n" );
   return( ret );
  }
 }
 printf( "絶対値は %d \n", absolute(a[0],a[1]) ); ←『ab』に代入しなくても可能
 return( RC_OK );
}

/* 1つの整数文字列を入力(整数変換も含む) */
int MyUserInput( int *input )
{
 char n[ BUFFERSIZE + 1 ];
 int c; ←『char』ではなくて int 型で宣言(EOF=-1 が戻る事もあるので)
 int count;
 
 for ( count = 0 ; count < BUFFERSIZE ; ){ ←回答者 No.1 さんのアドバイスより( <= ではありません)
  if ( (c = getchar()) == EOF ){
   break;
  }
  if ( c == '\n' ){
   break;
  }
  if ( isdigit(c) ){ ←'0'~'9'ならば『真』
   n[ count++ ] = (char)c; ←キャストが必要!
  }
  else if ( c == '-' ){
   if ( count != 0 ){
    return( エラーを返す ); ←最初以外の『-』入力エラー
   }
   n[ count++ ] = (char)c; ←キャストが必要!
  }
  else{
   return( エラーを返す ); ←数字と『-』以外の入力エラー
  }
 }
 if ( count == 0 ){
  return( RC_ND ); ←入力されていないエラー
 }
 n[ count ] = '\0'; ←入力の最後の NULL 文字
 
 if ( n[0] == '-' ){ ←先頭が『-』文字
  n[ MINUS_MAX ] = '\0'; ←負ならば 10 桁以降を無視
 }
 else{
  n[ PLUS_MAX ] = '\0'; ←正ならば 9 桁以降を無視
 }
 *input = atoi( n ); ←整数変換して input にセット
 return( RC_OK ); ←この関数の戻り値は(RC_OK,RC_ND,RC_ID,RC_MD)を返す
}
最後に:
・main 関数とサブ関数の作り方も含めて『サンプル』を掲示してみました。
・これからプログラミングしていくにあたり、main 関数はあまり長くならないように気をつけて下さい。
 またサブ関数に出来る場合は、関数機能を整理してから作成して下さい。→今回は整数の入力のみを
 担当する『MyUserInput』関数がそのサブ関数です。
・あとサブ関数のエラーは『戻り値』として main 関数に戻して、main 関数の中で『printf("Error!\n");』
 などのエラー処理を行います。→この方がすっきりとして分かりやすくなります。→バグにならずにすむ。
・上記の注意点として『BUFFERSIZE』定数は『9』にして下さい。
 『for』文のときに『9』でないとまずいから。
 宣言では『char n[ BUFFERSIZE + 1 ];』と『+1』していますので大丈夫です。
・サブ関数『absolute』には問題はありません。
・以上。おわり。→上記のサンプルを参考に今回の問題点を整理してみましょう。

★ソースを覗いた感想は main 関数が長すぎます。
・上手く動かないようですが、バグを探る前に main 関数のソースを整理します。
 下に main 関数のサンプルを載せます。→これを元に main 関数とサブ関数を作ります。
・入力部は『MyUserInput』関数にお任せしています。→main 関数に記述しません。
 この関数は1つの整数文字列を入力してから、その文字列を整数変換して引数 input へ代入します。
 戻り値は、正常(RC_OK)、エラー(RC_ND,RC_ID,RC_MD)を返します。
 この戻り値は、main 関数で受け取っ...続きを読む

Qアクセスのデータ形式で「長整数型」とはどんなものですか

ACCESS 2003 です。
アクセスのデータ形式で「長整数型」というのがありますが、他の[整数型]
とはどこがどのように違うのでしょうか、また、どのような場合に使うのでしょうか。

以上宜しくお願いします。

Aベストアンサー

こちらがまとまっていますね。
http://www.geocities.co.jp/Foodpia/2035/study/access/kihon/exp02_02.htm

フィールドの値を越えない範囲で最小のサイズを選択するようにします。

Q入力した整数のうち、最小のものを出力したい

一つの整数をキーボードから入力する。これをn とする。続いてn 個の整数をキーボードから入力する(値は100 以下と仮定してよい)。その後、n 個の整数の中で最小のものを出力したいのですが…

一応途中まではやってみました。↓
#include <stdio.h>
int main(void) {
int n, i, t;
scanf("%d",&n);
for (i=0; i < n; i++){
scanf("%d",&t);
}

return (0);
}

この後、どうしたらいいですか?

Aベストアンサー

「最小のものを求める」部分が全くないんですが……まぁいいか。
・もう一つint型の変数(minと仮置き)を用意する
・forループの初回ならtの値をminに入れる
・2回目以降はtがminより小さければtの値をminに入れる
ということをやればforのループアウト時にminに最小値が入っています。

Q「整数aと整数bが互いに素」とは?

「整数aと整数bが互いに素」とは、いったいどういうことを意味するのでしょうか?

Aベストアンサー

【結論】
最大公約数が1であるとき、二つの整数は互いに素であるという。
【補足】
最大公約数(GCD:Greatest Common Divisor)とは、0ではない二つの整数に共通する約数のうち最大値をとるものを指します。
数学上では、二つの整数 a, b に対して、その最大公約数を『gcd(a, b)』と表記することが多い。
但し、一方が0である場合、gcd(a, 0)=a として、最大公約数を決めるものとします。
【性質】
ユークリッドの互除法などにより、互いに素な二つの整数 x, y に対して、ax+by=1 を満たす整数 a, b が存在することは保証される。
------
まあ、要は「整数aと整数bが互いに素」とは『整数aと整数bの最大公約数が1である』ということを意味しています。
それ以上でもそれ以下でもありません。

こんな回答で良かったのでしょうか?元予備校講師的には、通常これ以上は説明不要である、と考えているのですが、一方、環やイデアルと言った論点の参考にするには、あまりにも足りません。
その辺は何卒ご了承下さい。m(_ _)m

参考URLは百科事典ウィキペディア(Wikipedia)の整数のページです。

参考URL:http://ja.wikipedia.org/wiki/%E6%95%B4%E6%95%B0

【結論】
最大公約数が1であるとき、二つの整数は互いに素であるという。
【補足】
最大公約数(GCD:Greatest Common Divisor)とは、0ではない二つの整数に共通する約数のうち最大値をとるものを指します。
数学上では、二つの整数 a, b に対して、その最大公約数を『gcd(a, b)』と表記することが多い。
但し、一方が0である場合、gcd(a, 0)=a として、最大公約数を決めるものとします。
【性質】
ユークリッドの互除法などにより、互いに素な二つの整数 x, y に対して、ax+by=1 を満たす整数 a, b が存...続きを読む

QC言語プログラミングで「コマンドラインから3つの整数を入力し、大きい順に並べる

C言語プログラミングで「コマンドラインから3つの整数を入力し、大きい順に並べるプログラムの作成」なのですが,どなたかわかる人はいらっしゃりますか?

C言語初心者です.


if else文を使って作成するのですが,整数の入力において、同じ数字を認める方法と認めない方法がありますが,両方教えていただけると助かります.

例えば
10、5、21の数字をコマンドラインから入力したときに 出力結果は21、10、5と並ぶ.

同じ数字を認めるとき、例えば 10、10、30と入力したとき出力結果は30、10、10となる

同じ数字を認めないときは、コマンドラインからの入力時に、もし同じ数字が入力されたらエラーメッセージを返して終了

といった具合です.どなたかお願い致します.

Aベストアンサー

おしい!
いいところまでいってるんですが...

>if( a>b && b>=c)
重複をみとめるなら、a=b (>c)の場合があります。よって

if ( a >=b && b >=c )
です。以下同様

> printf("a>b>c%c",a>b>c);
まずはprintfの「書式」というのが解説書にあるはずです。その%cをみれば、「指定した文字コードを持つ文字」とあるはずです(言いまわしは違うでしょうが)
例えば、 printf("%c",65); だと、一般的なPCなら、ASCIIコード65番にあたる「A」という文字が表示されます。
その 文字コードにあたるのが a>b>c になります。
ちょっと話がそれますが、 a>b>cはC言語では(a>b)>cと解釈されます。
( a>b )は a>bなら真を表わす1,そうでないなら偽を表わす 0 という数値になります。(a>b)>cはその0か1と cの値 とを比較して、 同様に1か0の値になります。よって、ここれでは、ASCIIコード0か1の文字が表示されることになります。これらは特殊なコードなので、画面にはなにも表示されていないように見えるかもしれません。

a,b,cのそれぞれの値を表示したいので、10進の整数に変換される「%d」を使います。値が3つあるので、3つ指定します

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

以下同様。


重複不可版ですが
・>=を>にする:重複が無いので=になることはありえない。
・最後のelseを
else if (c > b && b > a )
{
printf("%d,%d,%d\n",c,b,a);
}
とする。
すると、どのifにも該当しない→どこかに=になっているものがあった、ということなので
else
{
printf("同じ値があります%d,%d,%d\n",c,b,a);
}
となります。他に、これらのifにの前に重複チェックをいれてもいいです。その方法は考えてみてください。

あと細かいことを言えば
> main(int argc,char *argv[])
main関数の型が指定されていません。デフォルトでintになるのですが、自分で指定しておいた方が無難です。(コンパイラによっては、指定しないとエラーになります)
また、intを指定したら、終了の前に retrun 0; と戻り値を指定しましょう。

>a=atoi(argv[1]); //atoi関数
コマンドライン引数が足りなかった場合、致命的なエラーになる可能性が大きいです。argvを使うまえに、argcの値を確認して、数が足りているかどうかを調べるようにしましょう。例えば、今回なら
if ( argc != 4 ) {
printf("引数の数が違います\n");
return 1;
}
a=atoi(argv[1]); //atoi関数
というように

おしい!
いいところまでいってるんですが...

>if( a>b && b>=c)
重複をみとめるなら、a=b (>c)の場合があります。よって

if ( a >=b && b >=c )
です。以下同様

> printf("a>b>c%c",a>b>c);
まずはprintfの「書式」というのが解説書にあるはずです。その%cをみれば、「指定した文字コードを持つ文字」とあるはずです(言いまわしは違うでしょうが)
例えば、 printf("%c",65); だと、一般的なPCなら、ASCIIコード65番にあたる「A」という文字が表示されます。
その 文字コードにあたるのが a>b>c に...続きを読む


人気Q&Aランキング

おすすめ情報