标题:Cの魅力
取消只看楼主
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
 问题点数:0 回复次数:1 
Cの魅力

Cの魅力

刚刚又复习了一遍C语言,又有不少心得。哎~看来C语言不管怎么去学都学不完啊!

例:如果我想要写一个程序,当sex=0的时候表示母鸡,1的时候表示公鸡,用number表示鸡的数量。并把他们用在一个英文句子中显示出来,你会如何做?(请注意英语中的可数名词的复数要+s)

也许你会去分配大量的if语句,并写出四个句子——你不得不这样做,因为我并没给你多余的变量或者字符串,你可不能违背神的意志自己创造出几个新的东西出来哦。

void main(){ int sex=0,number=1; if(sex==0) if(number==1) printf("There is %d hen in the garden.\n",number); else printf("There are %d hens in the garden.\n",number); else if(number==1) printf("There is %d cock in the garden.\n",number); else printf("There are %d cocks in the garden.\n",number); getch(); }

程序原理:先判断sex,确定这只(些)鸡是公的还是母的,然后再判断number,确定是应该用单数还是复数。

这样是不是很烦琐?其实C语言要解决这样的问题只用“一句简单的printf()函数”就够了。

void main(){ int sex=0,number=10; printf("There %s %d %s in the graden.\n", number==1?"is":"are", number, number==1?(sex?"cock":"hen"):(sex?"cocks":"hens")); getch(); }

程序原理:收费50元,谢谢~~~ ^-^

为什么可以这样用?:呢?我们都知道,在C语言中任何一个""都是一个字符串。比如"abc"就是一个字符串。 但是如果我们这样定义一个int a="abc";会怎么样?也许大家都知道了,a中的值就是"abc"的首地址。所以我们得到一个结论,"abc"如果把它看成是一个整体,那么它的值不是一个字符串,而是指向"abc"首地址的一个数据(标准编译模式下)。

于是,我们可以这样解释number==1?"is":"are"了。 number==1?("is"的首地址):("are"的首地址) 如果number==1,则表达式的值就是"is"的首地址 如果number!=1,则表达式的值就是"are"的首地址 所以,表达式的值被printf()函数中的%s按照字符串的首地址接收、显示出来。

同样的道理,我们可以去解释sex?"cock":"hen"

没见过这样的?:用法吧,去写一个这样的语句去崩溃你的C语言老师~~我们的C语言老师是一个年轻漂亮的女研究生,基础知识非常的牢~~她第一次见也头晕了半天。

~~~让女孩子头晕~~~这就是Cの魅力

to be continue...

[此贴子已经被作者于2005-5-4 14:55:57编辑过]

搜索更多相关主题的帖子: 英语 魅力 C语言 number 变量 
2005-03-12 17:19
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
这....这....我已经不看C好多天
都在打吊针当中.....

这个帖子怎么的就翻出来了呢...!
着实郁闷

哎,能推测出我是菜鸟的人不简单...

我的确很菜,在发这个帖子之前,我一直都不明白:原来

if...
else if...
else if...
else

这个算是一个语句...!真惭愧!

淘宝杜琨
2005-05-04 15:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-13192-1-1.html




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

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