编写一个交换变量值的函数,利用该函数交换数组a和数组b中的对应元素值。要求尽量用指针的方法实现。
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 展开
#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
我觉得如果用数组加一个循环变量实现的话会清楚不少的:
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;}
}
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这个错误呢