您尚未
登入
注册
忘记密码
搜寻
赞助
赞助本站
数位公仔
纪念T恤
纪念马克杯
广告
刊登广告
广告价格
线上申请刊登
用雅币刊登
免费刊登
目前客户
简讯
简讯说明
购买金币
发送简讯
预约简讯
发送记录
好友通讯
罐头简讯
论命
数位论命馆
免费排盘工具
葫芦墩 优生造命
葫芦墩 八字命书
影音论命(葫芦墩)
影音占卜(葫芦墩)
购买金币
星座分析
孔明神数
周公解梦
星侨线上论命
娱乐
影 像 行 脚
数 位 造 型
数 位 画 廊
心 情 日 记
公 益 彩 券
送生日蛋糕
俄罗斯方块
四 川 省
猜 数 字
比 大 小
泡 泡 龙
许 愿 池
万 年 历
经 期 计 算
体 重 测 量
音 乐 点 播
卫 星 地 图
时间戳字幕
男女聊天室
求助
论坛守则
会员等级
会员权限
语法教学
常见问题
最新活动
打工赚雅币
首页
新版首页(全页)
传统首页(全页)
新版首页(选单)
传统首页(选单)
MyChat 数位男女
命理风水
15
星侨五术软体
4
葫芦墩命理网
5
命理问答
9
四柱八字
1
紫微斗数
1
姓名学
手面相
易经占卜
1
风水研讨
1
择日&三式
1
西洋占星
无视论塔罗牌
10
修行&武术
1
中医研讨
五术哈啦
1
电脑资讯
13
硬体讨论
5
超频 & 开箱
3
数位生活
2
PDA 讨论
手机讨论区
软体推荐
2
软体讨论
6
Apple 讨论
1
Unix-like
网路&防毒
2
程式设计
网站架设
4
电脑教学资源
生活休闲
14
休闲哈啦
7
感情世界
2
上班一族
5
国考&法律
7
生活医学
4
运动体育
1
单车讨论
1
钓鱼讨论
6
旅游讨论
4
天文观星
3
摄影分享
8
图片分享
4
数位影视
2
笑话集锦
3
兴趣嗜好
13
文学散文
7
绘图艺术
1
布袋戏
3
动漫画讨论
3
美食天地
6
理财专区
心理测验
1
汽、机车
3
宠物园地
模型&手工艺
4
花卉园艺
魔术方块
独轮车专区
电玩游戏
13
游戏欢乐包
4
CS讨论
8
Steam
3
MineCraft
2
东方Project
英雄联盟LOL
1
单机游戏
2
WebGame
3
线上游戏1
6
线上游戏2
5
电视游乐器
1
掌上型游戏
2
模拟器游戏
1
工商服务
6
虚拟城市
7
好康分享
新品贩售
二手拍卖
1
租屋&找屋
工商建议区
1
站务专区
10
最新活动
活动成果
数位造型
心情日记
个人图库
新人报到练习
论坛问题建议
1
荣会及电子报讨论
-最近版区-
-最近浏览-
»
程式设计
»
麻烦帮我解释这支程式
手机版
订阅
地图
繁体
您是第
4403
个阅读者
可列印版
加为IE收藏
收藏主题
上一主题
|
下一主题
ericfan007
级别:
小人物
x5
x24
分享:
▼
x
0
[C/C++][求助] 麻烦帮我解释这支程式
我刚开始学C++不久,还不太了解,敬请见谅喔
这程式是要输出2进位的ASCII码
助教上课讲的非常快,边讲边写
我赶着抄所以没去注意听讲
可以麻烦帮我讲解一下吗,谢谢
#include<iostream>
using std: ..
访客只能看到部份内容,免费
加入会员
或由脸书
Google
可以看到全部内容
[ 此文章被ericfan007在2006-12-09 18:05重新编辑 ]
x
0
[楼 主]
From:台湾 |
Posted:
2006-12-06 20:06 |
ericfan007
级别:
小人物
x5
x24
分享:
▲
▼
请问可以帮忙解答吗
万分感谢
x
0
[1 楼]
From:台湾中华HiNet |
Posted:
2006-12-08 17:25 |
HadesDer
级别:
小人物
x0
x4
分享:
▲
int main()
{
char words[10];
cout<<"Please input the strings:";
cin>>words; //输入一串字串
for(int i=0;i<strlen(words);i++)
{a(words[ i ]); //按照顺序把字串中的每一个字丢进 a 这个函式里
cout<<" ";
}
system("pause");
return 0;
}
主程式其实不困难..大概就这样..
接下来看 a 这个函式..
int a(char c)
{
int i=0;
i=c; //把丢进来的字元转换成数字..如字元 A 就等于 65..这个查 ASCII 码表就有了..
fib(i); //再把转换后的数字丢到 fib 函式中..
}
这个 fib 函式才是这支程式主要的核心..
也就是要怎么把数字变成二进位..
这里用到递回的写法..建议你可以先看一下书中递回的说明..
int fib(int i)
{
int k;
if(!i)return 0; //如果传进来的 i 值是 0 的话..就结束..这个写法的说明请见底下注解一
k=i%2; //k 的值是 i 除 2 取余数..所以如果 i = 2..那 k = 0
fib(i/2); //再把 i/2 的值丢到 fib 函式中运算..自己呼叫自己..这就是递回..
cout<<k; //把刚刚 k 的值印出来..
}
假设 i 的值是 3..那整个 fib 的执行过程如下:
fib(3):
因为 i = 3..不等于 0 所以继续往下执行..
k = 3 % 2 = 1
fib(3/2)..无条件舍去..
所以是 fib(1)
因为 i = 1不等于 0 所以继续往下执行..
k = 1 % 2 = 1
fib(1/2)..无条件舍去..
所以是 fib(0)
因为 i = 0 所以就结束了..又因为是递回..所以会往回继续执行..
回到 fib(1)..印出 k 的值 = 1
底下没有程式码了..结束..
回到 fib(3)..印出 k 的值 = 1
所以整个印出的顺序是 11
也就是 3 的二进位码..
希望这段回文对你有帮助..
注解一:
if (!i)
我们知道 if () 括号里如果为 True..就会执行xx动作..
那我们来看看这段程式码..if(!i)return 0;
如果 i = 0 的话..会发生什么状况..
if (!0) ..0 是 False ..所以加上个 ! 运算子..就反过来..变成 True 了..
也就是说.. if(!i)return 0;
如果当 i = 0 也就是 False 的时候..就 return 0..
x
0
[2 楼]
From:台湾台湾索尼 |
Posted:
2006-12-15 01:19 |
MyChat 数位男女
»
程式设计
Powered by
PHPWind
v1.3.6
Copyright © 2003-04
PHPWind
Processed in 0.063099 second(s),query:16 Gzip disabled
本站由
瀛睿律师事务所
担任常年法律顾问 |
免责声明
|
本网站已依台湾网站内容分级规定处理
|
连络我们
|
访客留言