用c写一个函数,生成256位、64位、42位、16位四个16进制随机数的函数并且不使用printf,并且调用他们
时间: 2023-11-28 11:48:24 浏览: 30
下面是一个生成指定位数的随机数的函数,其中使用了rand()函数来生成随机数,利用sprintf()函数将随机数格式化为16进制字符串。
```c
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void gen_hex(int bit)
{
char hex[bit/4+1];
int i;
for(i=0; i<bit/4; i++)
sprintf(hex+i, "%01x", rand()%16);
hex[bit/4] = '\0';
printf("%s\n", hex);
}
int main()
{
srand((unsigned)time(NULL));
gen_hex(256);
gen_hex(64);
gen_hex(42);
gen_hex(16);
return 0;
}
```
其中,srand()函数用来设置rand()函数的种子,可以让每次运行程序产生不同的随机数序列。在这里我们以当前时间作为种子。
调用gen_hex()函数,传入指定的位数,即可生成相应位数的随机数,并输出到控制台。
相关问题
用c写一个函数,生成256位、64位、42位、16位四个16进制随机数的函数并且不使用printf
以下是使用C语言生成四个16进制随机数的函数示例,不使用printf输出结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 生成指定位数的随机数,返回值为字符串类型
char* generateRandomHex(int bits) {
// 设置随机数种子
srand(time(NULL));
// 计算随机数的字节数
int bytes = (bits + 3) / 4;
// 申请存储随机数的空间,每个字节存储两位16进制数
char* hex = (char*)malloc(bytes * 2 + 1);
// 生成随机数
for (int i = 0; i < bytes; i++) {
int r = rand() % 256;
sprintf(hex + i * 2, "%02x", r);
}
hex[bytes * 2] = '\0';
return hex;
}
int main() {
char* hex256 = generateRandomHex(256);
char* hex64 = generateRandomHex(64);
char* hex42 = generateRandomHex(42);
char* hex16 = generateRandomHex(16);
printf("256位随机数:%s\n", hex256);
printf("64位随机数:%s\n", hex64);
printf("42位随机数:%s\n", hex42);
printf("16位随机数:%s\n", hex16);
free(hex256);
free(hex64);
free(hex42);
free(hex16);
return 0;
}
```
解释:
函数 `generateRandomHex` 用于生成指定位数的随机数,参数 `bits` 为随机数的位数,返回值为字符串类型。通过 `srand(time(NULL))` 设置随机数种子,`rand()` 生成随机数,`sprintf()` 将随机数转换成16进制字符串并存储在 `hex` 数组中。
在 `main` 函数中,分别调用 `generateRandomHex` 函数生成256位、64位、42位和16位四个随机数,并通过 `printf` 输出结果。最后通过 `free` 释放申请的内存空间。
用c写一个函数,生成256位、64位、42位、16位四个16进制随机数的函数并且不使用printf,并且分别调用他们
以下是一个生成指定位数的16进制随机数的函数,使用了C标准库中的rand()函数和srand()函数:
```c
#include <stdlib.h>
// 生成 num 位的 16 进制随机数
char* generate_hex_random(int num) {
char* hex = (char*)malloc(sizeof(char) * (num + 1));
for (int i = 0; i < num; i++) {
int r = rand() % 16;
if (r < 10) {
hex[i] = r + '0';
} else {
hex[i] = r - 10 + 'a';
}
}
hex[num] = '\0';
return hex;
}
```
接下来你可以分别调用这个函数生成指定位数的16进制随机数:
```c
int main() {
srand(time(NULL)); // 使用当前时间作为随机数种子
char* hex_256 = generate_hex_random(64);
char* hex_64 = generate_hex_random(16);
char* hex_42 = generate_hex_random(10);
char* hex_16 = generate_hex_random(4);
// 使用生成的随机数做任何你想做的事情
free(hex_256);
free(hex_64);
free(hex_42);
free(hex_16);
return 0;
}
```