husuiwen 发表于 2016-8-20 09:47:59

求大神解惑:谭浩强指针章课后21习题。

#include<stdio.h>

void main()
{
        void sort(int **p,int n);
        int i,a,**p,n,*p1;

        printf("请输入需要对几个数进行排序:\n");
        scanf("%d\n",&n);
        for(i = 0;i < n;i++)
        {
                p1 = &a;
        }
        printf("请输入%d个整数:\n",n);
        for(i = 0;i < n;i++)
        {
                scanf("%d",p1);
        }
        p = p1;
        sort(p,n);
        for(i = 0;i < n;i++)
        {
                printf("%4d",*p1);
        }
}

void sort(int **p,int n)
{
        int i,j,*temp;

        for(i = 0;i < n - 1;i++)
                for(j = i + 1;j < n;j++)
                        if(**(p + i) > **(p + j))
                        {
                                temp = *(p + i);
                                *(p + i) = *(p + j);
                                *(p + j) = temp;
                        }

}我想问的是:为什么输完第一个scanf(scanf("%d\n",&n);)之后,还需要继续输入完第二个循环输入(for(i = 0;i < n;i++){scanf("%d",p1); })才会打印它前面的那一句(printf("请输入%d个整数:\n",n);)之后无需输入任何数了,这和书上的运行结果不一样啊,但代码一模一样{:9_241:}
       

Krant5 发表于 2016-8-20 20:43:38

你确定你和书上一样吗? scanf(“%d”,&n);你看你在你的代码里面写了\n,能不错吗?本来大家都说谭浩强的书很烂,你这是招黑啊

husuiwen 发表于 2016-8-20 21:12:30

Krant5 发表于 2016-8-20 20:43
你确定你和书上一样吗? scanf(“%d”,&n);你看你在你的代码里面写了\n,能不错吗?本来大家都说谭浩强的 ...

{:9_232:}{:9_232:}没想到多加了个\n引发严重后果,谢谢大神指点{:9_232:}
页: [1]
查看完整版本: 求大神解惑:谭浩强指针章课后21习题。