三十六以内的进制转换(加注释多多),小程序版

-

今天老师讲了进制转换,废话少说,下面是正文:


源代码+注释

//我把这个程序写成了小软件,大家可以运行试试!!!
#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;
} 

突然发现自己好菜,只能转换三十六以内的进制转换,差呀!
希望大家喜欢这篇文章!!!
如有问题请留言,谢谢!!!

>>>我的博客<<<

猜你喜欢

转载自blog.csdn.net/sty20030818/article/details/81192252
今日推荐