10 進数を 2 進数から 16 進数 (2,3,4,....,15,16) に変換するプログラムを書いています。これは私がこれまでに持っているもので、2 から 15 までの任意の数を実行すると無限ループになります。私のプロジェクトの残りについて何かアドバイスがあればと思っていました。実行すると、これは 2 つの整数を要求します。1 つ目は 0 より大きい 10 進数の整数で、2 つ目は変換先の基本型でなければなりません。これを完了するためのあらゆるアドバイスをいただければ幸いです。ありがとうございました。
#include <stdio.h>
#include <stdlib.h>
int main(void){
int x, y, z, c;
printf("Please enter two integers: ");
scanf("%d", &x);
scanf("%d", &y);
printf("%d\n", x);
printf("%d\n", y);
printf(" \n");
if(y < 2 | y > 16){
printf("You have entered incorrect information.\n");
return 0;
}
else if(y > 1 && y < 16){
while(z != 0){
z = (x/y);
c = (x%y);
printf("%d\n", z);
}
printf("%d\n", z);
printf("%d\n", c);
}
else if(y == 16){
printf("%X\n", x);
}
}
** * ** * ** * ** * ** * ** * ** * *編集* ** * ** * ** * ** * ** * ** * ** *
#include <stdio.h>
#include <stdlib.h>
int main(void){
int x, y, z, c, i;
printf("Please enter two integers: ");
scanf("%d", &x);
scanf("%d", &y);
printf("%d\n", x);
printf("%d\n", y);
printf(" \n");
if(y < 2 || y > 16){
printf("You have entered incorrect information.\n");
return 0;
}
else if(y > 1 && y < 17){
while(x != 0){
c = (x%y);
x = (x/y);
if( c > 1 && c < 10){
printf("%d", c);
}else if( c == 10){
c = printf("A");
}else if( c == 11){
c = printf("B");
}else if( c == 12){
c = printf("C");
}else if( c == 13){
c = printf("D");
}else if( c == 14){
c = printf("E");
}else if( c == 15){
c = printf("F");
}
}
printf("\n");
}
これが私がこれまでに達成した進歩です。私の問題は次のとおりです。数値 10 ~ 15 を表すために AF が正しく出力する値を取得できません。また、整数を正しい方法で表示することもできません。これは簡単に修正できると思いますが、まだ慣れていないコマンドです。ご協力いただきありがとうございます。非常に有益でした。
** * ** * ** *編集 2** * ** * ** * ***
#include <stdio.h>
#include <stdlib.h>
int main(void){
int x, y, z, c; //Sets up variables to be used in program
printf("Please enter two integers: "); //Asks for user input
scanf("%d", &x);
scanf("%d", &y); //stores input
printf("%d\n", x);
printf("%d\n", y);
printf(" \n");
if(y < 2 || y > 16){
printf("You have entered incorrect information.\n");
return 0;
} //bug checks
else if(y > 1 && y < 17){
while(x != 0){
c = (x%y);
x = (x/y); // Loops numbers until a 0 value is reached, can be used with
// any Base
if( c == 10){
c = printf("A");
}else if( c == 11){
c = printf("B");
}else if( c == 12){
c = printf("C");
}else if( c == 13){
c = printf("D");
}else if( c == 14){
c = printf("E");
}else if( c == 15){
c = printf("F");
}else{
printf("%d", c);
}
// Returns for each remainer option
}
printf("\n");
}
}
OK三回目は魅力です。私のコードで現在抱えている唯一の問題は、逆順、つまり適切な順序で出力する方法がわからないことです。2 回目の編集は無視して、自分で解決しました。どんな入力でも素晴らしいでしょう。どうすれば逆に出てくるのかよくわかりません。みんな、ありがとう!