为什么无论输入A或D输出都是和原来输入的一样?

    #include<stdio.h>
    void choice_A(int a[],int n);
    void choice_D(int a[],int n);
    int main()

{
    int a[11],i,n;
    char str;

    n=10;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);

    scanf("%c",&str);
    if(str=='A')
        choice_A(a,n);
    else if(str=='D')
        choice_D(a,n);

    for(i=0;i<10;i++)
        printf("%d ",a[i]);


}
void choice_A(int a[],int n)
{
    int i,j,t;

    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++){
            if(a[j]>a[j+1])
                t=a[j];a[j]=a[j+1];a[j+1]=t;
        }
}
void choice_D(int a[],int n)
{
    int i,j,t;

    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++){
            if(a[j]<a[j+1])
                t=a[j];a[j]=a[j+1];a[j+1]=t;
        }
}
阅读 1.6k
1 个回答

因为你读到的str既不是A也不是D,不信你print出来试试

scanf("%c",&str);加一句while(getchar()!=10);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进