注册 登录
编程论坛 C++教室

求每一步的详解,没看懂代码 谢谢

妮图 发布于 2017-10-30 10:52, 1318 次点击
#include<iostream.h>
#include<stdio.h>
int n,cnt=0;
char num[10];
void dfs(int x){
if(x/16!=0)dfs(x/16);
if((x%16)<10)num[++cnt]=x%16+'0';
else num[++cnt]=x%16-10+'A';
}
int main(){
cin>>n;
dfs(n);
for(int i=1;i<=cnt;i++)
cout<<num[i];
return 0;
2 回复
#2
zbzxpg2017-11-03 00:27
#include<iostream.h>     //包含头文件
#include<stdio.h>        //包含头文件

int n,cnt=0;      //定义2个整形变量n,cnt,cnt初始化值为0
char num[10];     //定义一个字符变量数组num,num的大小为10个字符

void dfs(int x)    //定义一个无返回值的函数dfs,有一个整形参数x
{
    if(x/16!=0) dfs(x/16); //如果参数x除16不等于0
    if((x%16)<10)num[++cnt]=x%16+'0';
    else num[++cnt]=x%16-10+'A';
}

int main()         //主函数  
{
    cin>>n;        //从键盘输入一个数
    dfs(n);        //传给自定义的函数
    for(int i=1;i<=cnt;i++)  //开始循环
    cout<<num[i];            //输出字符变量数组的值
    return 0;
}

你的这个程序确实不好理解,有问题,虽然编译可以通过!不懂的话可联系我QQ358279267
#3
liaohs2017-12-03 20:51
dfs(n)用于求整数n的十六进制数。
因为任何整数n的十六进制数都等于n除以16的商的十六进制数的后面加上余数的十六进制数。
于是 dfs(n)就先求dfs(n/16), 随后求最后一位十六进制数,依次放在数组num中。
1