📄 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 + -