找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2894|回复: 5

[通用编程] 程序问题

[复制链接]
发表于 2007-7-16 00:21:01 | 显示全部楼层 |阅读模式
#include<stdio.h>
void main()
{
    int a[5],b[5];
    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);

   
}
发表于 2007-7-16 20:23:27 | 显示全部楼层
事实上循环中的计数与下面计算是没有关系的.....比如
for(i=1;i>10;i++)
      i=10;
并不影响整个循环的十次运行.....因为在for里i已经是局部变量了.
 楼主| 发表于 2007-7-16 23:18:17 | 显示全部楼层
for(i=0;i<10;i++)
    {
        i=10;
        printf("*");
    }
影响啊,好像这样,只可以打印一次 [s:3]
发表于 2007-7-16 23:33:25 | 显示全部楼层
如果这样定义
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就会少执行一次……
发表于 2007-7-17 09:37:56 | 显示全部楼层
看来昨晚我病得不轻啊....四处说胡话..... [s:5]
真是太对不起了....
 楼主| 发表于 2007-7-17 14:15:06 | 显示全部楼层
别整天顾着看靓女 [s:5]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 18:28 , Processed in 0.012196 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表