碧海潮声大学生网
标题: 求C语言高手,有谁能解答详细一点 [打印本页]
作者: 一流品质 时间: 2011-3-13 15:21
标题: 求C语言高手,有谁能解答详细一点
#include <stdio.h>
#define MAXLEN 80
main()
{int k=0,number=0;
char str[MAXLEN];
while((str[k]=getchar())!='#')
k++;
str[k]='\0';
for(k=0;str[k]!='\0';k++)
if(str[k]>='0'&& str[k]<='9'||str[k]=='A'||str[k]=='B')
if(str[k]>='0'&& str[k]<='9')
number=number*12+str[k]-'0';
else if(str[k]=='A'||str[k]=='B')
number=number*12+str[k]-'A'+10;
else ;//第15行
else break;
//第16行
printf("%d\n",number);
}
(17)、程序运行时,输入10#,输出
(17)
。
A、16
B、10
C、12
D、1
为什么选A
(18)、程序运行时,输入1a0#,输出
(18)
。
A、264
B、10
C、1
D、12
为什么选C
作者: 一流品质 时间: 2011-3-13 17:52
海院难道没有人才了吗?
作者: 一流品质 时间: 2011-3-13 21:53
不会吧,好大学与差大学差别实在是太大了,我感觉很悲哀......................
作者: rubby38324 时间: 2011-3-18 12:11
回复 3# 一流品质
你好,我知道这是浙江省计算机二级的题目,但是我想说这个题目有点问题,出题人是想把一个以字符串显示的16进制转换成十进制的数字。但是number=number*16+str[k]-'0';和number=number*16+str[k]-'A'+10;他都把写成了12.这就导致第一个题目的运行结果是12而不是16.至于第二题嘛,为什么是1?因为当外层for循环进入第二次时,str[1]='a';不满足if的条件,而与第一个if配对的else是else break;结束了整个循环,所以输出1.浙江省计算机二级还有一些错题。你到时可以联系我,我有个c语言群,你加下吧,群号码:74045607
作者: rubby38324 时间: 2011-3-18 12:24
我在补充下,number=number*12+str[k]-'0';和number=number*12+str[k]-'A'+10;你也可以不改,这样就是把12进制的数转化成十进制。这样第一题就选C.但是数字后加个#在汇编语言里就是16进制,出题人搞成12进制,真不知道怎么想的。
欢迎光临 碧海潮声大学生网 (http://www.zjoubbs.com/) |
Powered by Discuz! X3.2 |