根据视频中的例题无法实现
刚刚跟着哔哩哔哩上看小甲鱼的视频,视屏名称是指针03 ,举例子的时候我按照小甲鱼的例子 输出结果不对本来达到的效果应该是将10个数字倒序排列,比如下边的代码原本0的位置放9,1的位置放8
希望能有人帮我看看哪里有问题在这里提前谢谢各位啦
#include<stdio.h>
void main(){
int i,a={0,1,2,3,4,5,6,7,8,9};
printf("转换顺序前:\n");
for(i=0;i<10;i++){
printf("%d ",a);
}
printf("\n");
reverse(a,10);
printf("转换顺序后:\n");
for(i=0;i<10;i++){
printf("%d ",a);
}
}
void reverse(int *x,int n){
int *p,temp,*i,*j;
n = (n-1)/2;
i = x;
j = x+n-1;
p = x+n;
for(;i<=p;i++,j--){
temp = *i;
*i = *j;
*j = temp;
}
} {:10_266:}{:10_266:}鱼友们帮我看看,为啥一样的代码出来的效果就不一样了,我输出的还是原来的顺序 本帖最后由 superbe 于 2019-12-17 19:46 编辑
#include<stdio.h>
void reverse(int *x, int n);
void main() {
int i, a = { 0,1,2,3,4,5,6,7,8,9 };
printf("转换顺序前:\n");
for (i = 0; i<10; i++) {
printf("%d ", a);
}
printf("\n");
reverse(a, 10);
printf("转换顺序后:\n");
for (i = 0; i<10; i++) {
printf("%d ", a);
}
}
void reverse(int *x, int n) {
int *p, temp, *i, *j;
//n = (n - 1) / 2; //n 被修改了, 后面的 j 就不对了
i = x;
j = x + n - 1;
//p = x + n; //这行换成下一行
p = x + (n - 1) / 2;
for (; i <= p; i++, j--) {
temp = *i;
*i = *j;
*j = temp;
}
} superbe 发表于 2019-12-17 19:42
可是我俩写的不是一个意思吗,为啥结果不一样
{:5_99:} superbe 发表于 2019-12-17 19:42
我调换了顺序还是不合适 好的解决了 谢谢啦
页:
[1]