c语言程序设计(数组显示)

一个长度为48的8位数数组,数组前面10个单元固定为'0'..'9',后面随机赋值,按16进制显示这个数组,每10个数一行并且显示时可清晰看出数组中每个单元的16进制值(怎么才能输入8位数呢…)

按照题意,应该说的是2进制的八位而不是十进制的八位。char即可。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    // 初始化随机数种子
    srand((unsigned)time(NULL));

    // 初始化数组前 10 个元素
    char arr[48] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

    // 随机生成数组后面 38 个元素
    for (int i = 10; i < 48; i++) {
        arr[i] = rand() % 256; // 生成 0-255 之间的随机数
    }

    // 每 10 个数一行显示数组
    for (int i = 0; i < 48; i += 10) {
        for (int j = 0; j < 10; j++) {
            printf("%02X ", (unsigned char)arr[i+j]);
        }
        printf("\n");
    }

    return 0;
}

以下内容部分参考ChatGPT模型:


可以使用for循环遍历数组,并使用printf函数以16进制格式输出数组元素。具体代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // 初始化随机数生成器
    srand(time(NULL));

    // 定义长度为48的数组
    int arr[48];

    // 前10个单元固定为'0'..'9'
    for (int i = 0; i < 10; i++) {
        arr[i] = i;
    }

    // 后面随机赋值
    for (int i = 10; i < 48; i++) {
        arr[i] = rand() % 256; // 0~255之间的随机数,即8位二进制数
    }

    // 按16进制显示数组,每10个数一行
    for (int i = 0; i < 48; i++) {
        printf("%02X ", arr[i]); // %02X表示至少两位16进制数,不足前面补0
        if ((i + 1) % 10 == 0) {
            printf("\n");
        }
    }

    return 0;
}

输出结果如下:

00 01 02 03 04 05 06 07 08 09 
F9 9E 9D 21 0F 57 53 1A 8B 6D 
C7 7A 0B C7 9B 1F F7 3D F2 50 
F3 87 8B 9B B8 C8 C7 54 74 30 

其中,前10个数为0~9,后面的数为随机生成的8位数。每10个数一行,并且每个单元的16进制值都清晰可见。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快