C언어 초보 버블정렬 내림차순 에러 좀 고쳐주세요.

#includestdio.hint DesSort4(int leng,int num[]);int main(void)
{
int num[7]={1,2,3,4,5,6,7};
DesSort4(7,num);
printf(Program End);
return 0;
}

int DesSort4(int leng,int num[])
{
int cnt,cnt2,count;
int temp;

printf(\n);
printf(Input Check:);

for(count=0;count7;count++)
{
printf(%d ,num[count]);
}

printf(\n);

for(cnt=0;cntleng-1;cnt++)
{
for(cnt2=1;cnt2leng-1;cnt2++)
{
if(num[cnt]num[cnt2])
{
num[cnt]=temp;
num[cnt]=num[cnt2];
temp=num[cnt2];

}
printf(Output:);
for(count=0;count7;count++)
{
printf(%d ,num[count]);
}
printf(\n);
}
}

printf(Output:);

for(count=0;count7;count++)
{
printf(%d ,num[count]);
}

printf(\n);
return 0;
}

1,2,3,4,5,6,7을 7,6,5,4,3,2,1로 버블정렬을 이용해서 정렬 하는건데자꾸 문제가 생기네요.Input Check:1 2 3 4 5 6 7
Output:2 2 3 4 5 6 7
Output:3 2 3 4 5 6 7
Output:4 2 3 4 5 6 7
Output:5 2 3 4 5 6 7
Output:6 2 3 4 5 6 7
Output:6 2 3 4 5 6 7
Output:6 3 3 4 5 6 7
Output:6 4 3 4 5 6 7
Output:6 5 3 4 5 6 7
Output:6 6 3 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Program End진짜 미치겠습니다.어디가 잘못됬는지 좀 알려주세요.ㅠㅠ

댓글 4

  • 화이티 2026.02.09

    7은 전부 leng으로 바꿔주셔야 합니다.
    않그러면 leng을 받은 의미가 없습니다.
    int num[2]로 바꾸고
    DesSort4(2,num);로 바꾼다음
    프로그램을 돌리면 에러가 뜨거나 쓰레기값이 출력되겠죠.

  • 무들 2026.02.09

    첫번째 for문의 조건문을 약간 수정하셔야할거같네요.
    cntleng-1이라고 하시면
    leng이 7이니까, cnt6일때까지 돌아가는데.
    그럼 배열의 7번째는 정렬이 되지않습니다 ;ㅅ;

  • 빛솔 2026.02.09

    일부 수정이 되서 정렬이 되긴하는데 6123457로 되네요--;

  • 수련 2026.02.09

    num[cnt]=temp;
    num[cnt]=num[cnt2];
    temp=num[cnt2];
    이부분을

    temp=num[cnt];
    num[cnt]=num[cnt2];
    num[cnt2]=temp;
    로 해주셔야할거같네요 ;ㅅ;

C언어 다른 글

목록