回 帖 发 新 帖 刷新版面

主题:帮忙查下哪里错了

#include <stdio.h>
main()
{
      int i,n,temp;
      int *p,a[100];
      scanf("%d",&n);
      for(i=0;i<n;i++)
      scanf("%d",&a[i]);
      p=a;
      if(n%2==0)
      {
                for(i=0,j=n-1;i!=(j-1);i++,j--)
                {
                                             temp=*(p+i);
                                             *(p+i)=*(p+j);
                                             *(p+j)=temp;
                }
      }
      else
      {
          for(i=0,j=n-1;i!=(n+1)/2;i++,j--)
          {
                                           temp=*(p+i);
                                           *(p+i)=*(p+j);
                                           *(p+j)=temp;
          }
      }
      for(i=0;i<n;i++)
      printf("%d ",a[i]);
}

回复列表 (共9个回复)

沙发


编译器说第一个for循环有问题!!!

板凳

scanf("%d",&n);//不知楼主输入的n是否满足0<n<100?
for(i=0;i<n;i++)//否则在这里可能会造成访问越界(因为前面定义了a[100])
scanf("%d",&a[i]);

3 楼

还有就是for(i=0,j=n-1;i!=(j-1);i++,j--)和for(i=0,j=n-1;i!=(n+1)/2;i++,j--)
中的变量j未定义,改为for(i=0,int j=n-1;i!=(j-1);i++,j--)就好(也可在最开始加上int j的定义)

4 楼


第二个for循环j没定义

5 楼

太感谢大哥们了!!!!
    这点小问题还麻烦你们
 不好意思啊
    确实是J没定义
呵呵~~~

6 楼

满意的话要记得给分啊

7 楼


呵呵   好的    以前没注意

8 楼


这样就行了,你没有定义j,n的用法也不对。
#include <stdio.h>
 main(int n,int a[])
{
      int i,j,*temp;
      int *p;
      scanf("%d\n",&n);
      for(i=0;i<n;i++)
      scanf("%d",&a[i]);
      p=a;
      if(n%2==0)
      {
                for(i=0,j=n-1;i<=(j-1);i++,j--)
                {
                                             *temp=*(p+i);
                                             *(p+i)=*(p+j);
                                             *(p+j)=*temp;
                }
      }
      else
      {
          for(i=0,j=n-1;i<(n+1)/2;i++,j--)
          {
                                           *temp=*(p+i);
                                           *(p+i)=*(p+j);
                                           *(p+j)=*temp;
          }
      }
      for(i=0;i<n;i++)
      printf("%d ",a[i]);
}

9 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

我来回复

您尚未登录,请登录后再回复。点此登录或注册