找回密码

碧海潮声大学生网

查看: 720|回复: 4
打印 上一主题 下一主题

[考证] 求C语言高手,有谁能解答详细一点

  [复制链接]
跳转到指定楼层
1#
发表于 2011-3-13 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#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

A16
B
10

C12
D
1

为什么选A

18)、程序运行时,输入1a0#,输出
18

A264
B
10

C1
D
12

为什么选C

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶1 踩

相关帖子

2#
 楼主| 发表于 2011-3-13 17:52 | 只看该作者
海院难道没有人才了吗?
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2011-3-13 21:53 | 只看该作者
不会吧,好大学与差大学差别实在是太大了,我感觉很悲哀......................
回复 支持 反对

使用道具 举报

4#
发表于 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
回复 支持 反对

使用道具 举报

5#
发表于 2011-3-18 12:24 | 只看该作者
我在补充下,number=number*12+str[k]-'0';和number=number*12+str[k]-'A'+10;你也可以不改,这样就是把12进制的数转化成十进制。这样第一题就选C.但是数字后加个#在汇编语言里就是16进制,出题人搞成12进制,真不知道怎么想的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋| 碧海潮声大学生网  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 浙ICP备11026473号 )

快速回复 返回顶部 返回列表