c语言冒泡排序数组输出异常


#include <stdio.h>

void stro(int arr[], int sz)
{
    int i = 0;
    int k = 0;
    int tmp = 0;
    for (i = 0; i < sz - 1; i++);
    {
        for (k = 0; k < sz - 1 - i; k++)
        {
            if (arr[k] > arr[k + 1])
            {
                tmp = arr[k];
                arr[k] = arr[k + 1];
                arr[k + 1] = tmp;
            }
        }
    }
}

int main()
{
    int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
    int sz = sizeof(arr) / sizeof(arr[0]);

    stro(arr, sz);

    int q = 0;
    for (q = 0; q < sz; q++);
    {
        printf("%d ", arr[q]);
    }

    return 0;
}

输出结果为

代码31行for循环没进入,末尾多了分号

第九行 和 第三十一行 for循环末尾都多了个;

void stro(int arr[], int sz)
{
int i = 0;
int k = 0;
int tmp = 0;
for (i = 0; i < sz - 1; i++);
{
bool flag = true;
for (k = 0; k < sz - 1 - i; k++)
{
if (arr[k] > arr[k + 1])
{
flag = false;
tmp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = tmp;
}
}
if(flag) break;
}
}