?? wikjtg.txt
字號:
/*十進制與其他進制(2-9進制)的相互轉換,程序能夠自動幫助用戶糾正輸入錯誤*/
#include <stdio.h>
#include<stdlib.h>
void oth_to_ten(void);/*其他進制轉換為十進制*/
void ten_to_oth(void);/*十進制轉換為其他進制*/
long char_to_num(char a[], int len, int n);/*把輸入的字符轉換為數字*/
int main( void )
{
int flag;
do{
puts("please get a choice:");
puts("Enter 1 to choose ten_to_oth \nEnter 0 to choose oth_to_ten");
scanf("%d",&flag);
}while(flag !=0 && flag !=1);
if(flag == 1)
ten_to_oth(); /*十進制轉換為其他進制*/
else
oth_to_ten(); /*其他進制轉換為十進制*/
system("pause");
return 0;
}
void ten_to_oth(void) /*十進制轉換為其他進制*/
{
int sum, n, j, i=0;
int arr[80];
printf("輸入一個十進制數: ");
scanf("%d", &sum);
do{
printf("\n輸入你想要的進制 : ");
scanf("%d", &n);
}while(n<2 || n>10);
do{
i++;
arr[i]=sum%n; /*從下標 1 開始計數*/
sum=sum/n;
if(i >= 80)
exit(1);
}while(sum != 0);
printf("你輸入了:\t");
for(j=i; j>0; j--)
printf("%d",arr[j]);
}
void oth_to_ten(void) /*其他進制轉換為十進制*/
{
int n, j, i, num;
long sum=0;
int arr2[80];
char ch, c, arr1[80], *parr1;
parr1=arr1;
do{
printf("\n你想把幾進制數轉換為十進制 : ");
scanf("%d", &n);
}while(n<2 || n>10);
printf("請輸入一個 %d 進制數: ",n);
fflush(stdin);
ch=getchar();
i=0;
while(ch != '\n')
{
while(ch<48 || ch>=n+48)
ch=getchar(); /*輸入非數字或錯誤數字即無效*/
i++;
arr1[i]=ch;
ch=getchar();
}
printf("你輸入了 : ");
for(j=1; j<=i; j++)
printf("%c",arr1[j]);
printf("\n");
sum=char_to_num(parr1, i, n);
printf("你輸入的數字轉化為十進制為 : %ld",sum);
}
long char_to_num(char a[], int len, int n) /*把輸入的字符轉換為數字*/
{
long num=0;
int k=1;
for(int i=len; i>=1; i--)
{
num += int(a[i]-'0')*k;
k *= n;/*k表示權值*/
}
return num;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -