x=x/16;
}
printf("The Hexadecimal for %d is: ",d);
k=0;
for(j=0;j<25;j++)
{
if(str[j]!='0') k=1;
if(k==1)
printf("%c",str[j]);
}
printf("\nDo you want to continue? Enter 'y' to continue, others to quit.\n");
fflush(stdin); //清掉記憶體中的所有資料,以免下個動作被自動執行為「否」。
ch=getche();
printf("\n");
}while(ch=='y');
return 0;
} 作者: enter 時間: 2015-7-23 23:23
更簡化版,少了九個 if :
#include <stdio.h>
#include <stdlib.h>
int main(void){
int arr[24];
char str[25];
int j,d,x,k;
char ch;
x=x/16;
}
printf("The Hexadecimal for %d is: ",d);
k=0;
for(j=0;j<25;j++)
{
if(str[j]!='0') k=1;
if(k==1)
printf("%c",str[j]);
}
printf("\nDo you want to continue? Enter 'y' to continue, others to quit.\n");
fflush(stdin); //清掉記憶體中的所有資料,以免下個動作被自動執行為「否」。
ch=getche();
printf("\n");
}while(ch=='y');
return 0;
}作者: enter 時間: 2015-8-7 16:22 本帖最後由 enter 於 2015-8-7 16:24 編輯
x=x/16;
}
printf("The Hexadecimal for %d is: ",d);
k=0;
for(j=0;j<32;j++)
{
if(str[j]!='0') k=1;
if(k==1)
printf("%c",str[j]);
}
printf("\nDo you want to continue? Enter 'y' to continue, others to quit.\n");
fflush(stdin); //清掉記憶體中的所有資料,以免下個動作被自動執行為「否」。
ch=getche();
printf("\n");
}while(ch=='y');
return 0;
}作者: enter 時間: 2015-8-7 17:52 本帖最後由 enter 於 2015-8-7 17:59 編輯
用遞迴函數來把十進位正整數轉為二和八進位,有更簡單的方法。如果直接將參數設定為 long long int,則還可以輸入十幾位數以上的整數。而且更可以直輸入負數。目前發現最強大而且最簡單的寫法。
#include <stdio.h>
#include <stdlib.h>
int bi(int);
int oct(int);
int main(void){
int n;
printf("Please enter a number:\n");
scanf("%d",&n);
bi(n);
printf("\n");
oct(n);
return 0;
}
int bi(int x){
if(x!=0){
bi(x/2);
printf("%d",x%2);
}
}
int oct(int y){
if(y!=0){
oct(y/8);
printf("%d",y%8);
}
}作者: enter 時間: 2015-8-7 21:58 本帖最後由 enter 於 2015-8-7 22:09 編輯
新發現,其實最大重點竟是輸入的數值的型態,要長達 long long int 型態,則原始的寫法也可以解出很長的數字和負數。但原理仍沒想通。
#include <stdio.h>
#include <stdlib.h>
int main(void){
int arr[32]; //採一個整數占有 4 byte 共32個bits(0/1)的意思,但arr[32]本身的長度可是占了128byte。
char str[32];
//int j,d,x,k;
char ch;
int j,k;
long long x,d; //輸入的數值採 long long (int)
do
{
x=x/16;
}
printf("The Hexadecimal for %d is: ",d);
k=0;
for(j=0;j<32;j++)
{
if(str[j]!='0') k=1;
if(k==1)
printf("%c",str[j]);
}
printf("\nDo you want to continue? Enter 'y' to continue, others to quit.\n");
fflush(stdin); //清掉記憶體中的所有資料,以免下個動作被自動執行為「否」。
ch=getche();
printf("\n");
}while(ch=='y');
return 0;
}作者: enter 時間: 2015-8-9 00:59 本帖最後由 enter 於 2015-8-9 17:21 編輯