| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1166 人关注过本帖
标题:初学者请教:C语言习题的问题,希望朋友能给予答复....
只看楼主 加入收藏
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
收藏
 问题点数:0 回复次数:17 
初学者请教:C语言习题的问题,希望朋友能给予答复....

1.
语句int=3,执行语句a+=a-=a*a后,变量a为:

运算至右向左,我得答案是-3,习题答案是-12,这如何解释?

2.
static int a=4,b=5,t;
if(a>b)
t=a;a=b;b=t;
printf("%d,%d/n",a,b);
这题我的答案为a=4,b=5,习题的答案为a=5,b=0,这数值怎么得啊?

3.
main()
{int x;
scanf("%d",&x);
if(x++>5)printf("%d",x);
else printf("%d\n",x--);}

这里我想问的是,else printf("%d\n",x--)输出的x--须赋值再输出吗?
比如x=4时,执行以上程序,我的答案为4,习题的答案为5,做何解释?


4.
判断i>j共执行几次:

main()
{int i,j,k,s;
i=0,j=10,k=2,s=10;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n:",s);
break;}
s=s+i}
}

习题答案6次,..............请教...

搜索更多相关主题的帖子: C语言 习题 答复 朋友 
2006-05-31 00:13
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

1.= 是右结合的运算符,a+=a-=a*a相等于 a-=a*a;a+=a; 即a=a-a*a;a=a+a;

2.if那里没{},所以直接执行a=b;b=t; static t;默认初始为0

3.不管x和5的大小关系,程序总要读x++>5进行判断,所以总是执行x++的,打印出的值总比输入的大1

4.在for()里,i的值依次是2,4,6,8,10,12 执行了几次?

[此贴子已经被作者于2006-5-31 1:17:04编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-31 01:09
莜莜秋枫
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-16
收藏
得分:0 
1.第一次运算a-=a*a,即a=a-a*a;->a=3-3*3=-6
第二此运算a+=-6,即a=a+(-6);注意,第一次运算已经把a值改为-6,因此a=-6-6=-12,答案正确

2.注意IF语句的控制范围。由于没有打{},因此它的范围仅仅是t=a;但是条件不成立,就不执行它而直接
后两句:a=b;b=t;由于t没有初值,默认赋值为0,所以b=0。
3.x=4;在执行if条件时:x++>5,这个时候由于++在X后面,因此先执行4>5的判断,虽然条件不成立,但判断
后x仍然要自加1变成5,执行else语句时,输出参数是x--,先输出x的值5,输出后x变成6。
4.你的问题在于对变量这个概念没有吃透,之所以叫变量,表示它的值在程序运行中可以被改变的。下一次
要在使用时,就要用已经改变了的值。第一次i+=k,i=2;下一次在执行时,i=i+k —>i=2+2=4,下一
次为6,8,10,12条件才为真,才执行到break语句跳出循环。
2006-05-31 18:02
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
收藏
得分:0 

谢谢了,我还有问题:

1.

int x=1,y=0;表达式x-->(y+x)?5:25>y++?'1':'2'的数值是:

表达式y+x中的x是赋值表达式中的x=1,还是x--存储区中的o???
习题有两个答案,我都搞混了,对于这个表达式我的值是'1'对吗??

2.

x=y=1

y>=x 值为真对吗?或者把y>=x写成(y>x)||(y=x)只要满足其中一个
表达式,那么y>=x就成立,对吗?


CGCHINA REVOLUTION.....
2006-06-01 00:10
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

第一个问: 这和编译器有关系,有些编译器实现条件表达式是左结合的,有的则不然、

假如是左结合,那x-->(y+x) ? 5 : 25>y++?'1':'2'
先执行x-->(y+x),因为x--值为1,但x值已经是0了,x+y=0
所以x-->(y+x)成立,所以表达式值为5,后面的就不看了

假如是右结合,先看25>y++?'1':'2' 成立的,y变为1
总表达式为x-->(y+x)?5:'1' 这时x-->(y+x) 是不成立的
表达式值为'1' ==49


第二个 你理解的对


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-01 00:32
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-01 13:06
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

穆扬 用C-Free试试


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-01 15:32
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-02 18:04
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用穆扬在2006-6-2 18:04:00的发言:

没用过
但你讲的左结合、右结合与我讲的右结合不是一个概念

不用说过多的,用编译器说话! 分别用win-TC,C-Free运行结果就知道。

没用过,可以下载!


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-02 23:10
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-03 00:11
快速回复:初学者请教:C语言习题的问题,希望朋友能给予答复....
数据加载中...
 
   



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

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