定义一个大小为100的整型数组a,用随机值初始化该数组(随机数种子为111,数值范围1~199)。对数组a用冒泡法从小到大排序,观察第10趟起泡时,数组a的第30到第39这10个元素分别是多少。

{
int a[100] = { 0 }, i, j, t, m = 0;
srand(int(111));

for (i = 0; i < 100; i++)
{
    a[i] = (199 * rand() / (RAND_MAX + 1))+1;
}

for (i = 0; i < 100; i++)
{
    for (j = i + 1; j < 100; j++)
    {
        if (a[i] > a[j])
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
            m++;
            printf("第%d次冒泡:\n", m);
            for (i = 0; i < 100; i++)
            {
                printf("a[%d]=%d\n", i, a[i]);
            }
        }
        else
            continue;
    }
}

for (i = 0; i < 100; i++)
{
    printf("a[%d]=%d\n", i, a[i]);
}

}
请问这个代码有什么问题吗?

srand(int(111));
改成
srand(111);

你题目的解答代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[100] = {0}, i, j, k, t, m = 0;
    srand(111);
    for (i = 0; i < 100; i++)
    {
         a[i] = (199 * rand() / (RAND_MAX + 1))+1;
    }
    for (i = 0; i < 100-1; i++)
    {
        for (j = i + 1; j < 100; j++)
        {
            if (a[i] > a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
                m++;
                if (m==10)
                {
                    printf("第%d次冒泡:\n", m);
                    for (k = 30; k <= 39; k++)  //这里是第三重循环 循环变量不能用i,会与第一重循环的循环变量起冲突
                    {
                        printf("a[%d]=%d\n", k, a[k]);
                    }
                }
            }
        }
    }
    for (i = 0; i < 100; i++)
    {
        printf("%d ", a[i]);
    }
}

如有帮助,望采纳!谢谢!