当前位置: 代码迷 >> C语言 >> 指针选题
  详细解决方案

指针选题

热度:264   发布时间:2006-02-13 15:05:00.0
指针选题
以下四个程序中不能对两个整型值进行交换的是:
A)
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d%d\n",a,b);
}
swap(int *p,int *q)
{
int *t,a;
t=&a;
*t=*p; *p=*q; *q=*t;
}
B)
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d%d\n",a,b);
}
swap(int *p,int *q);
{
int t;
t=*p; *p=*q; *q=t;
}
C)
main()
{
int *a=0,*b=0;
*a=10,*b=20;
swap(a,b);
printf("%d%d\n",*a,*b);
}
swap(int *p,int *q)
{
int t;
t=*p; *p=*q; *q=t;
}
D)
main()
{
int a=10,b=20,*x=0,*y=0;
*x=&a,*y=&b;
swap(x,y);
printf("%d%d\n",a,b);
}
swap(int *p,int *q)
{
int t;
t=*p; *p=*q; *q=t;
}
搜索更多相关的解决方案: 指针  选题  

----------------解决方案--------------------------------------------------------

敲到机器上去试。。。。。

[此贴子已经被作者于2006-2-13 17:51:40编辑过]


----------------解决方案--------------------------------------------------------
我觉得是D。。。
int a=10,b=20,*x=0,*y=0;
*x=&a,*y=&b;
swap(x,y);

这样是不对的。。。。
应该是
swap(*x, *y);

吧。。

[此贴子已经被作者于2006-2-13 17:53:25编辑过]


----------------解决方案--------------------------------------------------------
when i want to ask anyone,i will ask myself first.
what about you?
it is mean that yon can think it first before you ask.
----------------解决方案--------------------------------------------------------
以下是引用aiyuheng在2006-2-13 18:02:00的发言:
when i want to ask anyone,i will ask myself first.
what about you?
it is mean that yon can think it first before you ask.

不好意思,这个问题是太简单了...

因为我是自学.所以并非很肯定...我在自已电脑试其实就有答案了.

主要是为什么!. 我要的不是答案,而是过程.


----------------解决方案--------------------------------------------------------
呵呵,在学计算机的路上,真正的老师就是自己.
我想真正在学校或是哪听来的东西不过是太表面太基础的了.
你根本没法领悟到其真正的内涵,只有自己去领悟,去思考,自己去验证.
对C的理解,可能每个人都不一样,只有你真正的自己去做出来,那它才是你的C.
对C的学习,是无止境的,任何一个人(我想)不敢说真正的领悟它,除那些狂妄自大的....
学习的过程中有朋友的帮助是好的,每个爱学习的人也都愿意去帮助别人,也同时得到过别人的帮助(包括我)
我还是想说when i want to ask anyone,i will ask myself first.
最重要的是思考的过程.
我不是高手,只是分享一下我的学习体会.

[此贴子已经被作者于2006-2-13 20:01:12编辑过]


----------------解决方案--------------------------------------------------------

我有一个好的将两个数字数值交换的方式,前些日子老师刚给布置的,“不使用中间变量交换两个变量的值”
/*switch two numbers' value*/
#include <stdio.h>
#define MUBER_ZERO 0

/*the function to switch the two numbers value*/
void switch_number(int *a,int*b)
{
*a=*a-*b;
*b=*a+*b;
*a=*b-*a;

}

void main(void)
{
int a =MUBER_ZERO;
int b =MUBER_ZERO;
printf("Please input two numbers .\n");

printf("The NO1:a=");
scanf("%d",&a);

printf("The NO2:a=");
scanf("%d",&b);

printf("a=%d b=%d",a,b);

printf("\n");
switch_number(&a,&b);

printf("a=%d b=%d",a,b);
getch();


}


----------------解决方案--------------------------------------------------------

楼上的
这样做是不是容易溢出呀


----------------解决方案--------------------------------------------------------
我有一个利用异或运算交换两个变量的值
也不用中间变量

swap(int *x, int *y)
{
*a=*a^*b;
*b=*b^*a;
*a=*a^*b;
}
----------------解决方案--------------------------------------------------------
A是正确的,但A还可以精简一下
----------------解决方案--------------------------------------------------------
  相关解决方案