| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 923 人关注过本帖
标题:求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
只看楼主 加入收藏
weiwei0119
Rank: 1
等 级:新手上路
帖 子: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
Rank: 4
来 自:江苏南通
等 级:业余侠客
帖 子:69
专家分:256
注 册:2007-11-16
收藏
得分:2 
这题我也认为是15
第一次i+=2指向a,但是a不符合,所以继续
再一次i+=2指向5,把5加上前面的结果乘以10

2009-08-15 18:04
weiwei0119
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-7-10
收藏
得分:0 
可答案是1啊 还是潭浩强的习题集 答案应该不会错
2009-08-15 18:07
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分: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
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分: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
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:2 
回复 3楼 weiwei0119


        请问这道题您运行过吗?要把习题运行过之后再想为什么。这道题的答案确实应该是 1 ,原因自己想。不过你所抄上来的程序却是错的,运行出来的结果是 0 。
2009-08-15 19:16
hiroki
Rank: 2
等 级:论坛游民
帖 子:33
专家分:74
注 册:2008-10-27
收藏
得分:2 
在输出A 的时候不满足条件   所以就退出循环了  所以是1啊

我的电脑HK最厉害!
我在电脑上没有阻碍!!
2009-08-15 20:54
zerobing
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2009-8-7
收藏
得分:2 
请问一下就是s=10*s+ch[i]-'0' 这句语句中 0 是一个字符串的值吧  循环以后的ch[i]的值与它相加减怎么解释  
2009-08-15 22:27
theperfact
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2009-8-8
收藏
得分:2 
同楼上问题  我怎么觉得S=1-48
2009-08-15 23:26
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-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
快速回复:求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043509 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved