程序问题
#include<stdio.h>void main()
{
int a,b;
int *p1,i;
int *p2;
printf("请输入5个整数:");
for (i=0;i<5;i++)
{
scanf("%d",&a);
}
printf("原始数组:");
for (i=0;i<5;i++)
{
printf("%d",a);
}
printf("左右反转顺序:\n");
p1=a;
p2=b+4;
for(;p1<a+5;p1++,p2--)
*p2=*p1;
p2=b; ----------------------------------->为什么这里要加上这句才能正常运行呢,
在上面的循环中不是已使p2回到b了吗?
for(;p2<b+5;p2++)
printf("%d ",*p2);
} 事实上循环中的计数与下面计算是没有关系的.....比如
for(i=1;i>10;i++)
i=10;
并不影响整个循环的十次运行.....因为在for里i已经是局部变量了. for(i=0;i<10;i++)
{
i=10;
printf("*");
}
影响啊,好像这样,只可以打印一次 如果这样定义
for(int i=0;i<10;i++)
{
// i只在这里起作用
}
如果是lz那种,那么i不是for循环的局部变量。
但无论如何,
事实上循环中的计数与下面计算是没有关系的.....比如
for(i=1;i>10;i++)
i=10;
并不影响整个循环的十次运行.....因为在for里i已经是局部变量了.
这种说法是不对的……
lz的问题:
p1从a开始一直到a+5,那么有a+1,a+2,a+3,a+4,a+5
而p2从b+4开始,也有这么多次循环:
b+3,b+2,b+1,b,b-1...
所以循环结束的时候,p2指向的不是b而是b-1
正确的写法是把p2放在循环里面
{
*p1=*p2;
p2--;
}
这样p2就会少执行一次…… 看来昨晚我病得不轻啊....四处说胡话.....
真是太对不起了.... 别整天顾着看靓女
页:
[1]