编写一个交换变量值的函数,利用该函数交换数组a和数组b中的对应元素值。要求尽量用指针的方法实现。

#include<stdio.h>voidmain(){int*p,*q,a[10],b[10],i,m;int(*exchange)();p=exchange;for(... #include<stdio.h>
void main()
{
int *p,*q,a[10],b[10],i,m;
int (*exchange)();
p=exchange;
for(i=0;i<10;i++)
scanf("%d",a[i]);
for(i=0;i<10;i++)
scanf("%d",b[i]);
(*p)(a,b);
}

int exchange(int *a,int *b)
{ int *p,*q,m;
for(p=a,q=b;p<a+10,q<b+10;p++,q++)
{m=*p;*p=*q;*q=m;}
for(p=a;p<a+10;p++)
printf("%d",*p);
printf("\n");
for(q=b;q<b+10;q++)
printf("%d",*q);
}

这个程序有问题 能帮我改一下吗
我用的是vc
展开
 我来答
问明6E
高粉答主

2019-06-13 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

#include<stdio.h>

#include<stdlib.h>

void ex(int *a, int *b, int n){

int i,tmp;

for (i=0;i<n;i++){

tmp=a[i];a[i]=b[i];b[i]=tmp;

}

}

void main()

{

int x[5]={1,2,3,4,5};

int y[5]={6,7,8,9,10};

int i,n=5;

ex(x,y,n);

printf("\n X: ");

for (i=0;i<n;i++)printf("%d ",x[i]);

printf("\n Y: ");

for (i=0;i<n;i++)printf("%d ",y[i]);

system("pause");

}

扩展资料:

system函数用法:

用法:intsystem(char*command);

程序例:

#include<stdlib.h>

#include<stdio.h>

intmain(void)

printf("AbouttospawnandrunaDOScommand\n");

system("dir");

return0;

又如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

例如,用system("color0A");其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

0=黑色1=蓝色2=绿色3=湖蓝色4=红色5=紫色6=黄色7=白色8=灰色9=淡蓝色A=淡绿色B=淡浅绿色C=淡红色D=淡紫色E=淡黄色F=亮白色

(注意:MicrosoftVisualC++6.0支持system)

颜色属性由两个十六进制数字指定--第一个对应于背景,第二个对应于前景。每个数字

可以为以下任何值:

0=黑色8=灰色

1=蓝色9=淡蓝色

2=绿色A=淡绿色

3=浅绿色B=淡浅绿色

4=红色C=淡红色

5=紫色D=淡紫色

6=黄色E=淡黄色

7=白色F=亮白色

匿名用户
2012-06-10
展开全部
for(p=a,q=b;p<a+10 * sizeof(int),q<b+10* sizeof(int);p++,q++)

我觉得如果用数组加一个循环变量实现的话会清楚不少的:

int exchange(int *a,int *b)
{ int i,m;
for(i=0;i < 10;i++)
{m=a[i];a[i]=b[i];b[i]=m;}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
推荐于2018-02-28 · TA获得超过203个赞
知道答主
回答量:70
采纳率:0%
帮助的人:84.8万
展开全部
#include<stdio.h>
void main()
{
int a[10],b[10],i;
void exchange(int *a,int *b);
printf("please enter a[10]:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("please enter b[10]:\n");
for(i=0;i<10;i++)
scanf("%d",&b[i]);
exchange(a,b);
}

void exchange(int *a,int *b)
{ int i,m,ex[10];
for(i=0;i<10;i++)
{ex[i]=*(a+i);*(a+i)=*(b+i);*(b+i)=ex[i];}
for(i=0;i<10;i++)
printf("%d ",*(a+i));
printf("\n");
for(i=0;i<10;i++)
printf("%d ",*(b+i));
printf("\n");
}
追问
为什么(*p)(a,b);会出现term does not evaluate to a function这个错误呢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式