A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HHE_johnson 中级黑马   /  2015-5-7 16:20  /  1497 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我的一个C程序,运行的环境是VC++6.0;程序的目的是实现键盘输入N个16进制的数字,然后转成10进制输出。现在问题是程序按要紧输入,但是没有结果输出,请哪位帮分析一下。谢谢!
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int ch;
  5.         int str[1000];
  6.         int i,j;
  7.         printf("请输入N个十六进制数,数字之间用逗号隔开,输入反斜杠0结束:\n");
  8.         while( str[i] != '\0' )
  9.         {
  10.                 scanf("%x ",&ch);
  11.                 str[i++]=ch;
  12.         }
  13.         for( j=0;j<i;j++)
  14.         {
  15.                 printf("%d ",str[j]);
  16.         }
  17.         printf("\n");
  18.         return 0;
  19. }
复制代码

9 个回复

倒序浏览
没测试你的代码,不过你的变量为什么没有初始化就使用呀?
回复 使用道具 举报
str[i]是什么东东?i在没有赋初始值的时候,什么情况都有
回复 使用道具 举报
ch是整型, 你用它接收有逗号的输入么? 这个怎么判断啊? C语言都忘了好多了, 是不是要用字符串接收再转成int啊?
回复 使用道具 举报
卡不懂的说、、、、
回复 使用道具 举报
同样不明白
str[i]
是个什么东西
回复 使用道具 举报
本帖最后由 wangzhewjl 于 2015-5-8 08:44 编辑

首先整型数组,接收逗号 ‘\0’都会转成ASCii值  ,然后你的i变量没有初始化。 你输入给电脑的东西是字符串 字符串本身就是‘\0’结尾,建议你改成字符数组来接收输入的内容,然后判断。
回复 使用道具 举报
13673696542 发表于 2015-5-7 17:50
没测试你的代码,不过你的变量为什么没有初始化就使用呀?

我初始化了还是不行,说明这个不初始化也没问题的,不过代码逻辑不对了。这样的输入方式也是不对的
回复 使用道具 举报
mony 发表于 2015-5-7 20:47
str是什么东东?i在没有赋初始值的时候,什么情况都有

str是把scanf输入的值赋给数组,然后拿数组去判断最后输入的是不是结束符,不过这样的话逻辑上有问题,while里面应该用ch来判断,而不用str;不过即使是这样,结果还是不行。
回复 使用道具 举报
wangzhewjl 发表于 2015-5-8 08:32
首先整型数组,接收逗号 ‘\0’都会转成ASCii值  ,然后你的i变量没有初始化。 你输入给电脑的东西是字符串  ...

好的,我试一下,你说的很有道理!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马