|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
923
人关注过本帖
标题:
求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
只看楼主
加入收藏
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
快速回复:
求助啊!! 一道程序题想不通.. 各位告诉我一下 谢谢
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.050029 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved