大橙子网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言swap函数题库 c语言swap函数

求一个C语言程序题:编写一个函数SWAP()实现交换两个数位置的功能

#include stdio.h

10年积累的成都网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有丰台免费网站建设让你可以放心的选择与我们合作。

void swap(int *p, int *q);//用传地址的方法交换

void main()

{

int i, j;

scanf("%d%d", i, j);//从键盘输入两个交换的数

swap(i, j);//传入i,j的地址

printf("i = %d, j = %d\n", i, j);//输出交换后的两个值

}

void swap(int *p, int *q)

{

int temp;//定义临时变量 存放中间值

temp = *p;

*p = *q;

*q = temp;

}

注意:不能直接写void swap(int i, int j);

因为那只是临时变量,函数调用完后,便释放空间,两个值并没有交换。

2个C语言填空

1、正确答案D

原题中swap函数的两个参数分别是int p和int q,实际在主程序调用swap时,swap内部的赋值改变的只是参数值的副本,返回后主程序内部的a、b变量并没有因其副本内容的改变而变化,所以必须改写swap函数,将要交互的变量地址作为指针型的参数传给swap,才能在swap中直接修改main中的变量。

修改后的swap函数可以是:

swap( int *p, int *q )

{int t;

t=*p; *p=*q; *q=t;

}

因此原题中答案A明显错误。答案B虽然能去掉编译过程中的参数类型不匹配的警告,但运行结果是错误的(原因见上)。答案C错在不仅要改变形参中p、q的类型(int改为int*),还要相应改变swap函数内部的赋值语句。所以D是正确的。

2、正确答案A

malloc分配了一块20字节的内存、并通过赋值语句将指针p指向该内存区域,之后马上将q也指向这里,这就是说q和p指向的是同一块内存区域。

scanf会将输入的abc def按空白字符分解为abc和def两个部分,先将abc放入p指向的地方,然后再将def放入q指向的地方。然而p与q指向的是同一块内存区域,因此def会将之前的abc覆盖掉,导致输出了两次def,即def def。即选项A。

C语言题目 int swap(int a,int b) { int t; if(a

实参a=3,b=5,传给形参后,形参的a=3,b=5,ab,满足if条件,执行if语句块,交换a,b的值,

a=5,b=3,return(a,b); 这条语句,逗号运算符的结合性是从左至右,因此最后return返回的是

变量b的值,也就是3了,所以main()函数的变量c的值是3了。

C语言题目:编写函数,交换两变量的值。

void

swap(int

*a,int*

b)

{

int

temp=0;

temp=*a;

*a=*b;

*b=temp;

}

因为是指针,只要更换指针内的内容就可以了;

还有一种是

换指针,就设a指向没存A,b指向内存B,交换后把b指向内存A,把a指向内存B

void

swap(int

*a,int*

b)

{

int

*temp;

temp=a;

a=b;

b=temp;

}

求解C语言习题 自定义函数swap(),将数组从第1个元素到地N个元素两两互换

#include "stdio.h"

int swap(int *p,int n)

{int temp;

for(i=0;i=(n/2);i++)

{temp=*(p+n-i-1);

*(pn-i-1)=a[i];

a[i]=temp;

}

}

main()

{int a[100],n,i;

printf("shuru n\n");

scanf("%d",n);

printf("\n shuru shuzu a[]\n");

for(i=0;in;i++)

scanf("%d",a[i]);

for(i=0;in;i++)

printf("%d,",a[i]);

printf("\n");

swap(a,n);

printf("huhuan houshi\n");

for(i=0;in;i++)

printf("%d,",a[i]);

}


网页标题:c语言swap函数题库 c语言swap函数
文章源于:http://dzwzjz.com/article/hppsdi.html
在线咨询
服务热线
服务热线:028-86922220
TOP