sususususu 发表于 2023-1-4 11:33:52

指针和数组问题,萌新求教

#include<stdio.h>
int main(void)
{
    int i,j;
    int k,a={0},*p=a;
    printf("please input a:\n");
    for(i=0;i<15;i++)
    {
      scanf("%d", &k);
      for(j=0;j<i&&k<*(p+j);j++);
      if(j<i) for(int b=i; b>j; b--) *(p+b)=*(p+b-1);
      *(p+j)=k;
    }
    printf("%d",a);                                    //为何统一用指针输出会在第一位数前出现空格,而分别用数组和指针输出不会出现这样的问题
    for(i=1;i<15;i++)
    printf("%3d", *(p+i));
    printf("\n");                                             //输出的时候没有换行呀,而且我把它删了之后对结果没影响,那么这个换行符有什么作用吗?
    return 0;
}

问题见备注

wp231957 发表于 2023-1-4 14:32:25

第二个问题,你看一下你的for语句管到哪句代码
第一个问题 没看懂

sususususu 发表于 2023-1-4 15:25:53

wp231957 发表于 2023-1-4 14:32
第二个问题,你看一下你的for语句管到哪句代码
第一个问题 没看懂

第一个问题就是最后一个for语句i为何不能等于0

wp231957 发表于 2023-1-4 15:33:35

sususususu 发表于 2023-1-4 15:25
第一个问题就是最后一个for语句i为何不能等于0

#include<stdio.h>
#define N 5
int main(void)
{
    int i,j;
    int k,a={0},*p=a;
    printf("please input a:\n");
    for(i=0;i<N;i++)
    {
      scanf("%d", &k);
      for(j=0;j<i&&k<*(p+j);j++);
      if(j<i) for(int b=i; b>j; b--) *(p+b)=*(p+b-1);
      *(p+j)=k;
    }
    //printf("%d",a);                                    
    for(i=0;i<N;i++)
    {
      printf("%d ", *(p+i));
    }
    printf("\n");                                             
    return 0;
}
没啥问题啊
最后一个for 的i 不是不能等于0而是必须等于0
首字符有空格不是和你%3d 限制有关吗
页: [1]
查看完整版本: 指针和数组问题,萌新求教