搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
标题:
求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
只看楼主
weiwei0119
等 级:
新手上路
帖 子:4
专家分:0
注 册:2009-7-10
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:10
求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
#include <stdio.h>
main()
{ char ch[7]={"12ab56"};
int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<=9;i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
我做的时候是15 答案是1 各位能告诉我为什么吗?????
搜索更多相关主题的帖子:
include
2009-08-15 17:54
airhiphop
来 自:江苏南通
等 级:
业余侠客
帖 子:69
专家分:256
注 册:2007-11-16
第
2
楼
得分:2
这题我也认为是15
第一次i+=2指向a,但是a不符合,所以继续
再一次i+=2指向5,把5加上前面的结果乘以10
2009-08-15 18:04
weiwei0119
等 级:
新手上路
帖 子:4
专家分:0
注 册:2009-7-10
第
3
楼
得分:0
可答案是1啊 还是潭浩强的习题集 答案应该不会错
2009-08-15 18:07
UserYuH
来 自:毅华
等 级:
火箭侠
威 望:
8
帖 子:720
专家分:3300
注 册:2009-8-10
第
4
楼
得分:2
for(i=0;ch[i]>='0'&&ch[i]<=9;i+=2); 这里的9你少加了‘’吧,不过这不重要,我帮你加。
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2);
"12ab56" 循环第一次执行数是1,判断非零,执行for里的语句s=10*s+ch[i]-'0';s等于1。
第二次循环执行数是a,判断零,这就退出for语句了,s值还是1
所以结果输出1是对的。
[
本帖最后由 UserYuH 于 2009-8-15 18:37 编辑
]
努力—前进—变老—退休—入土
2009-08-15 18:35
soler
等 级:
蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
第
5
楼
得分:2
以下是引用
airhiphop
在2009-8-15 18:04的发言:
这题我也认为是15第一次i+=2指向a,但是a不符合,所以继续再一次i+=2指向5,把5加上前面的结果乘以10
指向a之后不符合的话,应该是循环结束吧。。。
可以修改一下。。。
#include <stdio.h>
main()
{ char ch[7]={"12ab56"};
int i,s=0;
for(i=0;ch[i]!='\0';i+=2)
if(ch[i]>='0'&&ch[i]<='9')
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
[
本帖最后由 soler 于 2009-8-15 18:38 编辑
]
2009-08-15 18:37
广陵绝唱
等 级:
贵宾
威 望:
29
帖 子:3607
专家分:1709
注 册:2008-2-15
第
6
楼
得分:2
回复 3楼 weiwei0119
请问这道题您运行过吗?要把习题运行过之后再想为什么。这道题的答案确实应该是 1 ,原因自己想。不过你所抄上来的程序却是错的,运行出来的结果是 0 。
2009-08-15 19:16
hiroki
等 级:
论坛游民
帖 子:33
专家分:74
注 册:2008-10-27
第
7
楼
得分:2
在输出A 的时候不满足条件 所以就退出循环了 所以是1啊
我的电脑HK最厉害!
我在电脑上没有阻碍!!
2009-08-15 20:54
zerobing
等 级:
新手上路
帖 子:2
专家分:3
注 册:2009-8-7
第
8
楼
得分:2
请问一下就是s=10*s+ch[i]-'0' 这句语句中 0 是一个字符串的值吧 循环以后的ch[i]的值与它相加减怎么解释
2009-08-15 22:27
theperfact
等 级:
新手上路
帖 子:15
专家分:8
注 册:2009-8-8
第
9
楼
得分:2
同楼上问题 我怎么觉得S=1-48
2009-08-15 23:26
UserYuH
来 自:毅华
等 级:
火箭侠
威 望:
8
帖 子:720
专家分:3300
注 册:2009-8-10
第
10
楼
得分:0
查看ASCII码表就知道了。
'0' ~ '9' 对应ASCII码表是48 ~ 57
'0'=48
假如ch[i]='2', '2'=50
'2' - '0'=50-48
ch[i]-'0'=2 结果相当于 2-0=2 ,只不过这里是用字符表达。
努力—前进—变老—退休—入土
2009-08-15 23:29
11
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-282830-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.119837 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved