以下の文に16進数で入力:__,__,__,__,__エンターキーを入力すると16進数の値が10進数の値に変換され、10進数の値の小さい順に表示されます。
これを表示結果を16進数で表示したいのですが教えて頂けますか?比較は今までどおり10進数の値の小さい順で比較します。
#include <stdio.h>
int main (void)
{
char data[256];
int val[100];
int i = 0;
int work;
int j;
int k;
printf("入力 = ");
scanf("%s",data);
for(i=0;i<100;i++){
val = 0;
}
k=0;
for(i = 0;i<100 ; i++){
if(data == 0x00){//dataがNULLだったら処理を抜ける
k++;
break;//enterキーでprintf出力
}
else if(data == ','){//カンマだったら
/*printf("%d\n",k);*/
k++;
}
else{
if(data >= 'A' && data <= 'Z'){//dataにAからZが入ったら
val[k] = val[k] *16 + data -'A'+10;
}
else if(data >= '0' && data <= '9'){//data[i]に0から9が入ったら
val[k] = val[k] *16 + data[i] -'0';
}
}
}
/*printf("k=%d\n",k);
for(i=0;i<k;i++){
printf("出力 = %d\n",val[i]);
}
*/
//バブルソート//
for(j=0;j<k-1;j++)
{
for(i=0; i<k-1-j; i++)
{
if(val[i] < val[i+1])
{
}
else{
work = val[i];
val[i] = val[i+1];
val[i+1] = work;
}
}
}
for(i=0;i<k;i++)
{
printf("出力 = %d\n",val[i]);
}
}
何度もすみません。ご指導お願いします。
- bitter_fox
- 記事: 607
- 登録日時: 15年前
- 住所: 大阪府
Re: 何度もすみません。ご指導お願いします。
取りあえずこちらから・・・C言語初心者 さんが書きました:以下の文に16進数で入力:__,__,__,__,__エンターキーを入力すると16進数の値が10進数の値に変換され、10進数の値の小さい順に表示されます。
これを表示結果を16進数で表示したいのですが教えて頂けますか?比較は今までどおり10進数の値の小さい順で比較します。
printfへのフォーマット指示子に%x(もしくは%X)を用いることで16進数表示できます。
[hr][追記]
フォーマット指定子について
http://www.k-cube.co.jp/wakaba/server/format.html
http://www.geocities.jp/ky_webid/c/040.html
http://www.tamasoft.co.jp/lc/hlp/F056.html
[修正]
一番下の出力に誤りがあったので修正。
最後に編集したユーザー bitter_fox on 2011年5月31日(火) 21:23 [ 編集 1 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 何度もすみません。ご指導お願いします。
マルチポストは色々と迷惑がかかりますから避けて頂けると助かります。
「C言語のプログラミングについて質問です。 | OKWave」
http://okwave.jp/qa/q6777009.html
詳しくはフォーラムルールをお読み頂けると幸いです。
http://dixq.net/board/board.html
「C言語のプログラミングについて質問です。 | OKWave」
http://okwave.jp/qa/q6777009.html
詳しくはフォーラムルールをお読み頂けると幸いです。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- bitter_fox
- 記事: 607
- 登録日時: 15年前
- 住所: 大阪府
Re: 何度もすみません。ご指導お願いします。
Zまで許容していますがそれだと16進数ではないのではないでしょうか?
ちなみに次で簡単に入力を受けることができます。