-
今天老师讲了进制转换,废话少说,下面是正文:
源代码+注释
//我把这个程序写成了小软件,大家可以运行试试!!!
#include<stdio.h>
#include<string.h> //字符串头文件
int len,shu=0,yu,n; //yu是余数
int main()
{
char shuru[666],shuchu[666],a[666];
printf("十进制转其他进制(By STY)\n");
printf("(其他进制小于等于三十六进制)\n\n");
printf("输入要转换的进制:\n");
printf("退出请按“Ctrl+Z”(在键盘上),并按回车,谢谢使用!\n");
while(scanf("%d",&n)!=EOF) //整个程序可循环使用
{
memset(shuru,0,sizeof(shuru)); //清零字符串
memset(shuchu,0,sizeof(shuchu));
memset(a,0,sizeof(a));
shu=len=yu=0; //清零变量
printf("\n"); //换行
printf("输入要转换的数字:\n");
scanf("%s",shuru); //输入数字(存在字符串中)
printf("\n");
len=strlen(shuru); //计算字符串长度
for(int i=0;i<len;i++) //这个循环是把输入的字符转为数字
{
shu*=10;
shu+=shuru[i]-'0'; //这里使用了ASCII码表也可以写"-48"(0的ASCII码)
}
if(shu==0) //如果输入个数字为零,输出(0),不然会输出(空格)
printf("0\n");
else
{
int j=0;
for(;shu!=0;j++) //把十进制转换为其他进制
{
yu=shu%n; //下面就是算法了
if(yu>9)
shuchu[j]=yu+55; //其实"yu+55"是"yu+'A'-10"
else
shuchu[j]=yu+48; //'0'的ASCII码为48
shu/=n; //数变成商
}
for(int ii=j-1;ii>=0;ii--) //这里就需要理解了
a[j-ii-1]=shuchu[ii]; //将输出的数组倒过来赋值给a数组
a[j]='\0'; //加上字符串结束符(结束符的ASCII码为0,或NULL)
printf("结果:\n");
printf("%s\n",a); //输出
printf("\n");
}
printf("十进制转其他进制(By STY)\n");
printf("其他进制小于等于三十六进制)\n\n");
printf("输入要转换的进制:\n");
printf("退出请按“Ctrl+Z”(在键盘上),并按回车,谢谢使用!\n");
}
return 0;
}
突然发现自己好菜,只能转换三十六以内的进制转换,差呀!
希望大家喜欢这篇文章!!!
如有问题请留言,谢谢!!!