|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
刚刚跟着哔哩哔哩上看小甲鱼的视频,视屏名称是指针03 ,举例子的时候我按照小甲鱼的例子 输出结果不对
本来达到的效果应该是将10个数字倒序排列,比如下边的代码原本0的位置放9,1的位置放8
希望能有人帮我看看哪里有问题 在这里提前谢谢各位啦#include<stdio.h>
void main(){
int i,a[10]={0,1,2,3,4,5,6,7,8,9};
printf("转换顺序前:\n");
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
reverse(a,10);
printf("转换顺序后:\n");
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
}
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;
}
}
本帖最后由 superbe 于 2019-12-17 19:46 编辑 #include<stdio.h>
void reverse(int *x, int n);
void main() {
int i, a[10] = { 0,1,2,3,4,5,6,7,8,9 };
printf("转换顺序前:\n");
for (i = 0; i<10; i++) {
printf("%d ", a[i]);
}
printf("\n");
reverse(a, 10);
printf("转换顺序后:\n");
for (i = 0; i<10; i++) {
printf("%d ", a[i]);
}
}
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;
}
}
|
|