为啥我用c与c++写同样一段程序,c的第一个输出总是乱码?

三个整数分别为 A,B,CA,B,C . 这三个数字不会按照这样的顺序给你,但它们始终满足条件: A<B<CA<B<C . 为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

【输入格式】

第一行包含三个正整数 A,B,CA,B,C ,不一定是按这个顺序。这三个数字都小于或等于 100100 。第二行包含三个大写字母 AA 、 BB 和 CC (它们之间没有空格)表示所需的顺序.

【输出格式】

在一行中输出 AA ,BB 和 CC ,用一个 (空格)隔开.


#include<stdio.h>

int main()
{
    int num[3],tem,i,j;
    char A,B,C;
    scanf("%d %d %d",&num[0],&num[1],&num[2]);//数字
    scanf("%c%c%c",&A,&B,&C);//字母
    //冒泡排序
    for(i=0;i<2;i++)
    {
        for(j=i+1;j<3;j++)
        {
            if(num[i]<num[j])
            {
                tem=num[i];
                num[i]=num[j];
                num[j]=tem;
            }
        }
    }
    printf("%d %d %d",num[A-'A'],num[B-'A'],num[C-'A']);
    return 0;
}

//下面是c++

#include<iostream>
#include<algorithm>
using namespace std;
int a[3];
char A,B,C;
int main()
{
    cin>>a[0]>>a[1]>>a[2];
    cin>>A>>B>>C;
    sort(a,a+3);//懒懒_(:з」∠)_排序法
    cout<<a[A-'A']<<" "<<a[B-'A']<<" "<<a[C-'A'];//字母是大写,减去‘A’后得到0(A),1(B),2(C)。
    return 0;
}

 

scanf读入会把换行也读进去

在两个读入之间加一个getchar();


    scanf("%d %d %d",&num[0],&num[1],&num[2]);//数字
    getchar();
    scanf("%c%c%c",&A,&B,&C);//字母