一个初学C的人的困惑

cssin 2001-05-17 09:04:00
本人刚刚才开始学C,以前是用VB做开发的,发现从VB转C确实有些痛苦。这儿有一个C程序找不出错,希望大家帮忙看看(OS:RedHat 7.0)。

#include <stdio.h>
#include <math.h>
#include <string.h>

#define a 10
#define A 10
#define b 11
#define B 11
#define c 12
#define C 12
#define d 13
#define D 13
#define e 14
#define E 14
#define f 15
#define F 15
#define MAXSIZE 8

long int htoi(char s[])/* translate a hexadecimal value to its corrsponding decimal value */
{
int r;
int i = 0;
int len = strlen(s[]);

for (i = 0; i < len; i++)
r = r + s[i] * pow(10,len - i - 1);

return r;
}

main()
{
printf("Please input a hexadecimal digits(no longer than 8):");
scanf("%s",&hex);
htoi(hex);
}


...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
A_KID 2001-05-17
  • 打赏
  • 举报
回复
你这个东西问题太多了

XChinux 2001-05-17
  • 打赏
  • 举报
回复
是呀,hex变量从那里冒出来的。是数字?还是字符窜?如果是字符窜不需要用
scanf("%s",&hex);用scanf("%s",hex);
huang_zhi_x 2001-05-17
  • 打赏
  • 举报
回复
学语言就如此copy行吗? 尽信书不如无书.
你的hex变量的定义在哪?而且你所做的在sscanf()的功能真子集里.
cssin 2001-05-17
  • 打赏
  • 举报
回复
呵呵~

这只是一个书上的练习题!
至于需不需要转偶就不知道了!
tlovexyj 2001-05-17
  • 打赏
  • 举报
回复
这个……需要转吗?
A_KID 2001-05-17
  • 打赏
  • 举报
回复
“以前是用VB做开发的”
你以为写出几个HELLO WORLD就算是在做开发吗?

“这儿有一个C程序找不出错”
我真怀疑你有没有编绎过它,这东西根本连编绎都通不过的。

是菜鸟就老实说是菜鸟,不要在CSDN这种高手云集的地方自称什么“以前是用VB做开发的”

#include <math.h>
#incldde <string.h>
#include <stdio.h>

long int htoi(char s[]);

main()
{
char hex[8];
printf("input xxx");
gets(hex);
htoi(hex);
printf("%ld",htoi(hex));
}

long int htoi(char s[])
{
long int r;
int i,buf,len;
len=strlen(s);
for(i=0,r=0;i<len;i++) {
if('0'<=s[i]&&s[i]<='9') buf=s[i]-'0';
if('a'<=s[i]&&s[i]<='f') buf=s[i]-'a'+10;
if('A'<=s[i]&&s[i]<='F') buf=s[i]-'A'+10;
r=r+buf*pow(16,len-i-1);
}
return r;
}

以上是我写的,在TC2。0下测试成功。
对照着看看你的错误吧(实在太多,我都不想说了)
我写的这个东西只处理正数,我不想加入对负数的处理,因为我觉得没必要

回去再看看书吧。
我也是一只菜鸟,学C只有几个月,欢迎高手指教。
A_KID 2001-05-17
  • 打赏
  • 举报
回复
“以前是用VB做开发的”
你以为写出几个HELLO WORLD就算是在做开发吗?

“这儿有一个C程序找不出错”
我真怀疑你有没有编绎过它,这东西根本连编绎都通不过的。

是菜鸟就老实说是菜鸟,不要在CSDN这种高手云集的地方自称什么“以前是用VB做开发的”

#include <math.h>
#incldde <string.h>
#include <stdio.h>

long int htoi(char s[]);

main()
{
char hex[8];
printf("input xxx");
gets(hex);
htoi(hex);
printf("%ld",htoi(hex));
}

long int htoi(char s[])
{
long int r;
int i,buf,len;
len=strlen(s);
for(i=0,r=0;i<len;i++) {
if('0'<=s[i]&&s[i]<='9') buf=s[i]-'0';
if('a'<=s[i]&&s[i]<='f') buf=s[i]-'a'+10;
if('A'<=s[i]&&s[i]<='F') buf=s[i]-'A'+10;
r=r+buf*pow(16,len-i-1);
}
return r;
}

以上是我写的,在TC2。0下测试成功。
对照着看看你的错误吧(实在太多,我都不想说了)
我写的这个东西只处理正数,我不想加入对负数的处理,因为我觉得没必要

回去再看看书吧。
我也是一只菜鸟,学C只有几个月,欢迎高手指教。
steedyu 2001-05-17
  • 打赏
  • 举报
回复
是啊
好好看看书,你真让我怀疑你学没学过其他语言!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧