| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:[求助]继续问西语言问题
只看楼主 加入收藏
question
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-3-20
收藏
 问题点数:0 回复次数:10 
[求助]继续问西语言问题

以下程序的输出结果是

main()
{ int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%d\n",n);
}
这个程序里面*(p=&n)=*pk*(*pm);这个语句搞不懂,请帮忙解释一下。。。

还有下面这个

func(int a,int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
在这里实参和形参的关系怎么处理阿?输出结果是什么 ?

对以下程序,从第一列开始输入数据:2473<CR>,<CR>代表ENTER,程序的输出结果:
a.668977 b.668966 c.66778777 d.6688766
#include "stdio.h"
main()
{ int c;
while((c=getcher())!=`\n`)
{ swith(c-`2`)
{ case 0;
case 1; putchar(c+4);
case 2; putchar(c+4); break;
case 3; putchar(c+3);
case 4; putchar(c+2); break;
}
} printf("\n");
}
这个程序能给我解释下吗?我有点乱。。。

搜索更多相关主题的帖子: int 语言 main 
2007-03-23 20:32
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
#include "stdio.h"
main()
{ int c;
while((c=getcher())!=`\n`)
{ swith(c-`2`)
{ case 0;
case 1; putchar(c+4);
case 2; putchar(c+4); break;
case 3; putchar(c+3);
case 4; putchar(c+2); break;
}
} printf("\n");
}
这个我给你说明一下。
c=getcher() 表示从键盘输入一个字符,然后判断是否为换行字符。
如果不是的呢,就执行swicth后面的语句。

而且你这个程序还有蛮多漏洞,蛮多错误。
没有写完全的。

~~我的明天我知道~~
2007-03-23 20:55
question
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-3-20
收藏
得分:0 

这个程序我是从书上找来的,因为看不懂,所以才问。。。觉得好像有挺多不通的地方。。。
给我解释解释阿,前面两个呢?谢谢哦

2007-03-23 22:34
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

main()
{ int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm); //这么多*还不把你搞晕那还得了,我一个一个给你解释,*(p=&n)=*pk*(*pk)这个就相当于p=&n;
// n=*pk*(*pm); *pk*(*pm)中第一个*pk是pk的值,第二个星号是乘号,第三个和第一个一样.
printf("%d\n",n);
}
这个程序里面*(p=&n)=*pk*(*pm);这个语句搞不懂,请帮忙解释一下。。。

还有下面这个


func(int a,int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--); //(x--,y++,x+y)这个式子是一个逗号运算符,从左向右运算,整个表达式的值为最后的X+Y的值.这整个表达式的值就是函数的一个参数,另一个参数就是Z--,应该懂了吧
printf("%d\n",r);
}


雁无留踪之意,水无取影之心
2007-03-23 23:02
yh1
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-29
收藏
得分:0 
func(int a,int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
x--,y++,x+y的意思是先用了X的数值然后自减1,先用了y 的数值然后自加1,所以x+y=6+7=13
z同理,
下一步就是调用函数func了
把13赋值给a 把z=8(先用z的数值再减1)赋值给b 执行c=a+b=21。
最后把c数值返还,输出。

Thinking one minute is better than talking an hour!!!
2007-03-23 23:17
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
*(p=&n)=*pk*(*pm);
由于括号运算符优先级最高,执行(p=&n)和(*pm)-->4; 得到结果: *p=*pk*4;
由于 指针的运算符的优先级高于 乘号运算符,
执行 *p-->n,*pk-->k,得到结果是:n=k*4;

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-24 00:33
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
int x=6,y=7,z=8,r;
func((x--,y++,x+y),z--);
由于函数的调用顺序是从右到左,
首先执行z--,--->func((x--,y++,x+y),8)
再执行(x--,y++,x+y);由于逗号运算符是从左到右的结合顺序,
(6,y++,x+y);这时x=5,
(6,7,x+y);这时y=8,
(6,7,5+8);结果:13
所以:func(13,8);

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-24 00:45
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

#include "stdio.h"
main()
{ int c;
while((c=getcher())!=`\n`) '\n'
{ swith(c-`2` ) switch
{ case 0; :
case 1; putchar(c+4);
case 2; putchar(c+4); break;
case 3; putchar(c+3);
case 4; putchar(c+2); break;
}
} printf("\n");
}

改正后:
#include "stdio.h"
main()
{int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4); break;
case 3: putchar(c+3);
case 4: putchar(c+2); break;
}
} printf("\n");
}


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-24 00:56
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
2473<CR>,<CR>代表ENTER
#include "stdio.h"
main()
{int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4); break;
case 3: putchar(c+3);
case 4: putchar(c+2); break;
}
} printf("\n");
}

当按回车时,getchar()首先接受到 '2',再switch(c-'2') --->switch(0)
所以这次能执行:case 1: putchar(c+4);-->putchar('2'+4);输出 '6', ------------'6'
case 2: putchar(c+4);-->'6',break;--->退出switch(),------------'6'
接受下一个字符,'4'
执行:switch(c-'2')-->switch(2),
执行:case 2:putchar(c+4)--->输出'8',break;--->退出switch(), ------------'8'
接受下一个字符,'7'
执行:switch(c-'2')-->switch(5), 退出switch(),
接受下一个字符,'3'
执行:switch(c-'2')-->switch(1),
执行:case 1: putchar(c+4););-->putchar('3'+4);输出 '7', ------------'7'
执行:case 2: putchar(c+4););-->putchar('3'+4);输出 '7',break;-->退出switch(),-'7'
接受下一个字符,'\n'
退出while()循环.
结果:66877

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-24 01:10
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
所以LZ 给出的选项没有正确的.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-24 01:13
快速回复:[求助]继续问西语言问题
数据加载中...
 
   



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

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