| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 873 人关注过本帖
标题:求教1个进制转换问题
只看楼主 加入收藏
jhosua
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-12-31
收藏
 问题点数:0 回复次数:13 
求教1个进制转换问题

#include<stdio.h>
void main()
{
int i,f(char[]),flag;
char t[100],c;
flag=1;
while(flag)
{
printf("input a HEX number:");
for(i=0;i!='\0';i++)
scanf("%c",t[i]);
printf("The (10) is %d",f(t));
printf("continue or not(y/n):");
c=getch();
if(c=='n'||c=='N')
flag=0;}}
f(char s[])
{
int n=0,i;
for(i=0;i!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='Z')
n=n*16+s[i]-'A'+10;}
return n;}
偶知道一定是输入字符串那里错了 但想来想去 都不知到怎么输入才好 希望高手给点建议 或者提示一下 小弟先谢谢了

搜索更多相关主题的帖子: 进制 
2006-07-17 18:37
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-17 18:42
jhosua
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-12-31
收藏
得分:0 
没用 运行起来没分别 好像要结合后面的函数来输入 我再想想 弄不对 不吃饭了

2006-07-17 18:52
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 
for(i=0;i!='\0';i++)改成for(i=0;i=='\0';i++),终止条件是等于'\0'的时候

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-07-17 19:03
jhosua
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-12-31
收藏
得分:0 
谢谢楼上的2位  不过 我发现还是有 错 无法正确 调用函数 剩下的 我自己搞定

2006-07-17 19:11
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 
还有scanf("%c",t[i]);漏了 &amp;

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-07-17 19:19
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

用字符串数组来输入十六进制的数吧,用字符循环做麻烦
看看下面修改过的:

#include<stdio.h>
int f(char *s);
void main()
{
int flag=1;
char t[10],c;
while(flag)
{
printf(\"input a HEX number:\");
gets(t);//获取十六进制的数
printf(\"The (10) is %d\n\",f(t));
printf(\"continue or not(y/n):\");
c=getchar();
getchar();//消除回车的干然来进入下一次while循环
if(c=='n'||c=='N')
flag=0;
}
}

int f(char *s)
{
int n=0,i;
for(i=0;i=='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='Z')
n=n*16+s[i]-'A'+10;}
return n;}

[此贴子已经被作者于2006-7-17 19:51:30编辑过]


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-07-17 19:50
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 
这样只能转换一位

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-07-17 20:01
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 

#include<stdio.h>
void main()
{
int i,flag,sum;
char c,d;
flag=1;
while(flag)
{
i=0,sum=0;
printf("input a HEX number:");
while((d=getchar())!='\n')
sum=sum*16+f(d);
printf("The (10) is %d\n",sum);
printf("continue or not(y/n):");
printf("\n");
c=getch();
if(c=='n'||c=='N')
flag=0;}}
int f(char s)
{
int n=0,i;
if(s>='0'&&s<='9')
n=s-'0';
else if(s>='a'&&s<='f')
n=s-'a'+10;
else n=s-'A'+10;
return n;
}

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-07-17 20:23
王者
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2006-7-15
收藏
得分:0 
unicorn程序中
c=getchar();
getchar();//消除回车的干然来进入下一次while循环
改为:c=getch();一条语句就可以了,就不需要用getchar()来吃下留下的回车了
还有,经过WIN-TC测试,你的程序不能得到正确结果.

2006-07-17 21:02
快速回复:求教1个进制转换问题
数据加载中...
 
   



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

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