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