为什么这个代码可以运行,但是不能得出答案

{
char a[4];
int i=0,j=0,t=0;
for(j=0;j<4;j++)
{
scanf("%d\n",&a[j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(a[j]
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("congdadaoxiao");
for(j=0;j<4;j++)
{
printf("%d\n",a[j]);
}
return 0;
}(省略了头文件)

你的思路我知道了,想用冒泡法排序。
你把那个char a[4].
改成int a[4]

也不知道你的需求是什么,但是常规的:你的数组定义的是char 类型,但是却用scanf("%d\n",&a[j]);去获取输入这不太规范,可以改为将数组改为 int型

#include <iostream>
#include<stdio.h>
using namespace std;
int main()
{
    int a[4];
    int i=0,j=0,t=0;
    for(j=0;j<4;j++)
    {
        scanf("%d",&a[j]);
    }
    for(i=0;i<4;i++)
    {
        for(j=0;j<4-i;j++)
        {
            if(a[j]<a[j+1])
            {
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
            }
        }
    }
    printf("congdadaoxiao");
    for(j=0;j<4;j++)
    {
        printf("%d\n",a[j]);
    }
    return 0;
}

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

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 3 - i; j++) //for (j = 0; j < 4 - i; j++)  i=0,j<4-0时a[j + 1]越界
        {
            if (a[j] < a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }

    printf("congdadaoxiao:\n"); //
    for (j = 0; j < 4; j++)
    {
        printf("%d\n", a[j]);
    }
    return 0;
}

如果你要输入数字,那么把char[4]改为int[4]
如果你要输入字符,那么把%d改为%c

修改如下,供参考:

#include<stdio.h>
int main()
{
    int a[4];  //char a[4];
    int i = 0, j = 0, t = 0;
    for (j = 0; j < 4; j++)
    {
        scanf("%d", &a[j]);
    }
    for (i = 0; i < 3; i++)  //for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 3 - i; j++) //for (j = 0; j < 4 - i; j++)
        {
            if (a[j] < a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    printf("congdadaoxiao");
    for (j = 0; j < 4; j++)
    {
        printf("%d ", a[j]);  //printf("%d\n", a[j]);
    }
    return 0;
}