程序不按降序排序数字

时间:2017-09-07 10:54:34

标签: c

我编写了一个按升序排序数字的程序。

我成功地编译并执行了它,但问题是,首先'对于'循环它比输入的输入多一个输入。

假设我输入t的值等于5,则下面的循环需要6个输入。

for(i=0;i<t;i++){
    scanf("%d\n",&a[i]);
}

我调试了这段代码,发现i=0正在接受2个输入,但我该如何解决呢。

代码

#include<stdio.h>
int main()
{
    int t,i;
    printf("Enter the number of numbers:");
    scanf("%d",&t);
    int a[t],temp;
    printf("Enter the numbers\n");
    for(i=0;i<t;i++)
    {
        scanf("%d\n",&a[i]);
    }
    for(i=0;i<t-1;i++)
    {
        for(int j=i+1;j<t;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    printf("Sorted\n");
    for(int k=0;k<t;k++)
    {
        printf("%d\n",a[k]);
    }
}

2 个答案:

答案 0 :(得分:2)

整数的

scanf语法如下:

int i;
scanf("%d", &i);

\n

中不需要printf

将for循环更改为此

for(i=0; i<t; i++)
{
    scanf("%d", &a[i]);
}

答案 1 :(得分:0)

实际上,当您在屏幕上打印符号“\ n”时,表示输出流采用命令来更改行。这仅用于打印过程。当您尝试通过scanf输入值时,它实际上无用且有问题,从而破坏了您的代码。所以你必须写:

release_info(row_index, row=1)