|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
int i,j;
int a[10]={11,22,33,44,56,67,78,98,93,100};
int *p=a;
for(i=0,j=9;i<10;i++,j--)
{
*(p+j)=*(a+i);
}
for(i=0;i<10;i++)
{
printf("%d\n",*(p+i));
}
for(i=0;i<10;i++)
{
printf("%d",*(p+i));
}
return 0;
}
又得麻烦大佬了
这段代码试图把数组的元素反转,但是并没有正确地做到这一点。问题在于你的两个循环(i和j)同时在数组两端开始,并向中间移动。这会导致你反转的前半部分被后半部分覆盖。所以,你看到的输出只是原始数组的前半部分。
解决方法是仅使用一个索引,从头开始,并只反转到数组的中间。这样,你可以将数组的每个元素与其对应的反向元素交换,而不会覆盖已经反转的元素。以下是修改后的代码:
- #include <stdio.h>
- int main() {
- int i;
- int a[10] = {11, 22, 33, 44, 56, 67, 78, 98, 93, 100};
- int temp;
- int *p = a;
- for(i = 0; i < 5; i++) {
- temp = *(p+i);
- *(p+i) = *(p+9-i);
- *(p+9-i) = temp;
- }
- for(i = 0; i < 10; i++) {
- printf("%d\n", *(p+i));
- }
- for(i = 0; i < 10; i++) {
- printf("%d ", *(p+i));
- }
- return 0;
- }
复制代码
在这个程序中,我创建了一个临时变量 temp 来帮助在数组中交换元素。这个循环仅运行到数组的中点(在这种情况下是索引5,因为数组有10个元素),这样我们就可以交换对应的元素,从而反转整个数组。
这个程序将输出正确反转的数组。
|
|