标题:题目是编写一个函数将一个十六进制数转化为十进制数,请问我程序错在哪?求 ...
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:3 
那还不如这样写更好
程序代码:
int con(int j)
{
   return j;
} 


反正CPU也不认识你是几进制的 涉及进制转换的就不可能用%x 来接收16进制数据

DO IT YOURSELF !
2018-01-02 15:43
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:0 
#include<stdio.h>
#include<math.h>
int con(int);
int main(){
    int i,k;
    printf("16\n");
    scanf("%x",&i);
    k=con(i);
    printf("shi %d\n",k);
    getch();
 
}
int con(int j){
    int sum=0,count=0;
    if(j==0){
        printf("1\n");
    }
    while(j>0){

        sum+=(j%16)*pow(16,count);
        j=j/16;
        count++;
    }
    return sum;
}

兄弟   把缺的汉字自己打上   这么做函数没什么意义啊    你的问题是16进制得余或除16  等于的符号是==
2018-01-02 16:18
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:10 
#include<stdio.h>
#include<math.h>
int con(int);
int main(){
    int i,k;
    printf("16\n");
    scanf("%x",&i);
    k=con(i);
    printf("shi %d\n",k);
    getch();
   
}
int con(int j){
    int sum=0,count=0;
    if(j==0){
        printf("1\n");
    }
    while(j>0){

        sum+=(j%16)*pow(16,count);
        j=j/16;
        count++;
    }
    return sum;
}

你是想这样  ??
2018-01-02 16:20
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 10楼 吹水佬
我试了一下你的,运行正确!对比发现问题出在我的程序里有那个if{j=0}的条件语句的存在,我删了后就好了,可是我不知道为啥有这个条件语句我的程序就会那样。。
2018-01-02 17:06
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 13楼 li384022
嗯嗯对!就是你这样!我终于知道我哪错了,原来是我的条件语句里j应该==0
2018-01-02 17:10
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 8楼 wp231957
非常感谢你!
2018-01-02 17:12
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:0 
回复 14楼 风雨晨曦
j==0  是j等于零
j=0     是把0赋值给j
j是16进制数  如果把j/10得到的不是正确结果
2018-01-02 17:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483886-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043595 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved