永发信息网

c语言题目 高手请进 谢谢

答案:1  悬赏:0  手机版
解决时间 2021-07-26 03:49
#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);
}
1、程序运行时,输入10#,输出:12
2、程序运行时,输入1a0#,输出:1
3、第16行改为“;”后,程序运行时,输入A*0#,输出:120
4、第16行改为“else break;”删除第15行后,程序运行时,输入1b0#,输出:12
最佳答案

你是不是想自己发明个“12进制”出来啊?


你的程序有很多缺陷:


1、无法自动排除非法输入,


while((str[k]=getchar())!='#')
k++;
仅仅判断了#为结束符,假如我输入除了0~9,A~B以外的字符(比如退格键),还是照单全收,需要等到后面的程序来处理,这样的感觉很差劲,另外,一般习惯是用回车键结束输入的,你不觉得用#很别扭吗?


这个问题先放一边,下面的问题更大。


2、条件语句混乱


首先,第10行的if(str[k]>='0'&& str[k]<='9'||str[k]=='A'||str[k]=='B')是多余的,因为你这里的条件又在后面重新分别出现,在多条件判断同时出现&&和||时,应当适当地添加括号来表达清楚运算优先顺序以免短路效应造成逻辑混乱,当然,既然是多余的就不讨论它了。


3、疏忽了大小写的情况,你整个程序就只接受数字键和A,B,却忘记了a,b,这种错误很低级啊。


至于那什么15行16行的疑问,只要你理解和熟悉了 if 和 else 的配对顺序,自然就迎刃而解了。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
说一个人人缘好的句子,我们夫妻与世无争人缘
前序.中序.后序遍历如何转换
亲爱的,我说我们能不能分手以后再恋爱?
“价值,使用价值,交换价值 ” 的区别?
成都有哪些国企,成都的那些国企待遇好啊?
我想问一下合资企业变更地址要怎么办理?
我是1988年阴历4月1日生的我想占卜我的爱情,
处女座和射手座能幸福吗
为什么人在死之前都要经历一段爱情呢?
是我奢求太多,还是感情不够,为什么会那么得孤
怎么充Q币啊!
QQ三国里面的装备绑定石哪有卖?多少钱一个?
袋装和瓶装的奶粉有哪些区别?
爱需要理解,也需要宽容吗?
求最近公测的好玩的游戏 网络游戏
推荐资讯
优酷视频转码要多久,优酷上传视频转码多少时
求玩天龙八部的高手指点一下,我是天龙的,如
有关诗歌的知识简便点
游戏天龙八部中90级少林最好穿什么装备,镶嵌
梦幻龙族装备灵力多少以前精炼不会爆掉
高一关于牛顿定律的题目
小布和洛瑞谁更适合当首发?
如果现在乔丹还没有退役的话 ,詹姆斯和乔丹
请问,位宽是64.显卡是4570显存是256能不能换5
黑色的多肉植物有哪些,多肉那些品种比较好养
从泸州到遂宁多少公里,成自泸高速公路是否能
求一张EVA序绫波丽高清图片
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?