解题思路:
思路一:利用输出类型%o直接输出
输出十进制:%d;
输出十六进制:%x;
输出单个字符:%c;
输出字符串:%s;
输出变量所在的地址:%p;
注意事项:无
参考代码:
#include #include #include #include #include #include #include int ChangeBase(){ int n=0; scanf("%d",&n); printf("%o",n); return 0; } int main() { return ChangeBase(); }
思路二:利用短除法从低位到高位计算数值,同时通过取余和整除的优越性更新处理正整数,利用规律:如29十进制转5进制,对5取余得4,29整除5得5,对5取余得0,对5整除得1,对1取余得1,对1整除得0循环结束,逆向输出为104.
注意事项:题目给定正整数所以没有考虑0和余数情况
参考代码:
#include #include #include #include #include #include int ChangeBase(){//个人习惯写单独函数在main中调用 int n=0;//如果需要其他进制转换请用注解中的m替换 //int m=0; scanf("%d",&n); //scanf("%d",&m); int flag=0; int a[100]={0};//从低位到高位存放数据 while (n!=0){ a[flag++]=n%8;//flag先计算再自增,从低位到高位计算数据 n/=8;//更新n // a[flag++]=n%m; // n/=m; } for (int i = flag-1; i > -1; --i) { printf("%d",a[i]);//从高到低输出 } return 0; } int main() { return ChangeBase(); }
思路三:利用头文件stdlib.h中的itoa函数进行整型和字符串转换itoa函数(整型,字符串,转换进制)
注意事项:只能用整型作为转换对象,若要用无符号整数等类型可以参考使用
itoa() 将整型值转换为字符串
litoa() 将长整型值转换为字符串
ultoa() 将无符号长整型值转换为字符串
参考代码:
#include #include #include #include #include #include #include int ChangeBase(){ int n=0; scanf("%d",&n); char string[33]={'\0'};//最大32位故用33位数组储存并初始化数组 itoa(n,string,8); puts(string); return 0; } int main() { return ChangeBase(); }
0.0分
1 人评分