void inv(int *x, int n) { int temp,*p,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i<=p;i++,j--)

void inv(int *x, int n)
{ int temp,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m; 从这一行开始看不懂了...
for(;i<=p;i++,j--)
{ temp=*i; *i=*j; *j=temp; }
return;
}
这些
前面代码是
#include <stdio.h>
void main()
{void inv(int *x, int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++) printf("%d,"a[i]);
printf("\n");
inv(a,10);
printf("The array has been inverted:\n");
for(i=0;i<10;i++) printf("%d,",a[i]);
printf("\n");
}

inv是将数组x中下标0到n-1的数据逆置。
void inv(int *x, int n)
{ int temp,*p,*i,*j,m=(n-1)/2; //m为数组中点
i=x; j=x+n-1; p=x+m; //i为数组首部,j为尾部,p为中点
for(;i<=p;i++,j--) //遍历前半部分
{ temp=*i; *i=*j; *j=temp; } //将前半部分数据依次和后半部分对应的数据对换位置
return;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-22
void inv(int *x, int n)------------参数一:数组名,即是数组的首地址,参数二:数组长度
{ int temp,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m; ----i保存数组第一个(指针),j保存数组最后一个(指针),p保存中间指针
for(;i<=p;i++,j--) -------数组头和数组中间的数值互相靠拢
{ temp=*i; *i=*j; *j=temp; }---------然后互相交换
return;
}

最终的结果就是,数组的前面一半互相交换了,而后面一半则保持不变本回答被提问者采纳

...️(图里有整个题目) 将数组a中的n个整数按相反顺序存放?_百度...
5、inv(p, 10)

C语言中关于将数组a中n个整数按相反顺序存放
不得增行或删行,也不得更改程序的结构。\\ #include"stdio.h" void inv(int *x,int n) { int *p,m,temp,*i,*j; (1); i=x; j=x+n-1;... 展开 dlz3961206 | 浏览2247 次 |举报 我有更好的答案推荐于2017-12-15 08:59:26 最佳答案 (1)m=(n-1)\/2;因为遍历到中间就够了(2)p=arr...

C++ 下面给出用数组的方法将数组a中的n个整数按相反顺序存放,请用指针...
参考代码:\/\/按偏移位置引用数据void inv(int x[],int n){ int i; for( i=0;i<n\/2;i++ ) { int temp=*(x+i); \/\/相当于temp=x[i] *(x+i)=*(x+n-i-1);\/\/相当于x[i]=x[n-i-1] ; *(x+n-i-1)=temp; }}\/\/移动指针,通过指针访问数组void ...

C语言解答
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x)\/n n>13、#include <stdio.h>void main(){ int x,n; float p(int,int); printf(“input n & x:”);scanf(“%d,%d”,&n,&x);printf(“n=%d,x=%d\\n”,n,x);printf(“P%d(%d)=%6.2f\\n”,n,x,p(n,x)); }float p(int n,int x)...

编写函数voidfun(int*x,intn),功能是:求出长度为n的数组x中的最大数...
void fun(int *x,int n){ int max=*x; \/*定义个最大*\/ int index1,index2;\/*最大和次最大索引号*\/ int a; \/*交换时空间*\/ int max2; \/*次大*\/ for(i=1;i<=n;i++)if(max<(*(x+i))) \/*从第一个开始往后比较,最终max存着最大值*\/ max=*(x+i);for(i=0...

冒泡排序算法
void bubble_sort(int *x, int n){ int j, k, h, t;for (h=n-1; h>0; h=k) \/*循环到没有比较范围*\/ { for (j=0, k=0; j<h; j++) \/*每次预置k=0,循环扫描后更新k*\/ { if (*(x+j) > *(x+j+1)) \/*大的放在后面,小的放到前面*\/ { t = *(x+j);(x...

C语言这里面的m=(n-1)\/2;是什么意思
m=(n-1)\/2代表了函数中的循环次数,函数的算法是将首尾对应位置的元素互换,例如第一个和最后一个互换,第二个和倒数第二个互换。。。这种操作只需进行数组长的一半这么多次就够了,已经可以将整个数组进行翻转。所以循环次数为数组长度的一半取整。望采纳,谢谢!

...*a,int n) { int i,j,k,t; for(i=0;i<n-1;i+=2) { k=i; for(j=i...
void fun(int *a,int n){ int i,j,k,t;for(i=0;i<n-1;i+=2){ k=i;for(j=i;j<n;j+=2) \/这是一个for循环 if(a[j]>a[k]) k=j; \/比较a[j]、a[k],若a[j]>a[k],则把j赋给k t=a[i]; a[i]=a[k]; a[k]=t; \/进行传值 } } main(){ int...

void fun(char*p) {int i=0 while(p[i]) {if(p[i]==' '&&islower(p[i...
islower(p[i-1])功能是判断字符p[i-1]是否为小写英文字母,当ch为小写英文字母(a-z)时,返回非零值,否则返回零。p[i]==' '表示p[i]为空格。两者同时成立表示p[i]此时为空格而它的上一位是小写字母是小写的。然后把p[i-1]改成大写。希望帮到你。

c语言全排列有什么思路?
以下是基于深度优先搜索的C语言全排列示例代码:c void swap(int *x, int *y) { int temp = *x;x = *y;y = temp;} void dfsPermute(int *arr, int start, int end, int *count) { if (start == end) { (*count)++;for (int i = 0; i <= end; i++) { printf("%d ...

相似回答