编写程序 C语言 生成四位随机数
时间: 2023-05-27 12:07:27 浏览: 83
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 设置随机数种子
int num = rand() % 9000 + 1000; // 生成四位随机数
printf("随机数为:%d\n", num);
return 0;
}
```
相关问题
用c写一个函数,生成256位、64位、42位、16位四个16进制随机数的函数并且不使用printf,别的函数会调用他们的值
以下是用c语言编写生成256位、64位、42位、16位四个16进制随机数的函数:
```c
#include <time.h>
#include <stdlib.h>
// 生成256位随机数
void gen256Hex(char* hex)
{
srand(time(NULL));
for(int i=0; i<64; i++)
{
int r = rand() % 16;
char c = r < 10 ? r + '0' : r - 10 + 'a';
hex[i] = c;
}
}
// 生成64位随机数
void gen64Hex(char* hex)
{
srand(time(NULL));
for(int i=0; i<16; i++)
{
int r = rand() % 16;
char c = r < 10 ? r + '0' : r - 10 + 'a';
hex[i] = c;
}
}
// 生成42位随机数
void gen42Hex(char* hex)
{
srand(time(NULL));
for(int i=0; i<11; i++)
{
int r = rand() % 16;
char c = r < 10 ? r + '0' : r - 10 + 'a';
hex[i] = c;
}
}
// 生成16位随机数
void gen16Hex(char* hex)
{
srand(time(NULL));
for(int i=0; i<4; i++)
{
int r = rand() % 16;
char c = r < 10 ? r + '0' : r - 10 + 'a';
hex[i] = c;
}
}
```
这里使用了srand和rand函数生成随机数,并且将随机数转换为16进制字符。调用这些函数可以得到对应位数的16进制随机数,例如:
```c
char hex256[65];
gen256Hex(hex256);
char hex64[17];
gen64Hex(hex64);
char hex42[12];
gen42Hex(hex42);
char hex16[5];
gen16Hex(hex16);
```
猜数字游戏,程序产生一个四位随机整数,这个四位数各个数码均不相同,你能猜出这个数 是多少吗?,规则如下: 1-如果你清中一位数字但位置不正确。则显示一个,一.2.如果你清中一位数字且位置也正确,则显示一个·”.用C语言写一段代码
### 回答1:
以下是一个简单的猜数字游戏的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int answer[4];
int guess[4];
int i, j;
srand(time(NULL)); // 设置随机数种子
do {
// 生成不重复的四位数
for (i = 0; i < 4; i++) {
answer[i] = rand() % 10;
for (j = 0; j < i; j++) {
if (answer[i] == answer[j]) {
i--;
break;
}
}
}
} while (answer[0] == 0); // 确保第一位不为0
printf("猜数字游戏开始!\n");
int tries = 0;
while (1) {
// 读入猜测的数字
printf("请输入一个四位数(各位不同):");
scanf("%d", &guess[0]);
guess[1] = guess[0] / 10 % 10;
guess[2] = guess[0] / 100 % 10;
guess[3] = guess[0] / 1000 % 10;
// 检查猜测的数字是否符合要求
int valid = 1;
for (i = 0; i < 4; i++) {
if (guess[i] < 0 || guess[i] > 9) {
valid = 0;
break;
}
for (j = 0; j < i; j++) {
if (guess[i] == guess[j]) {
valid = 0;
break;
}
}
if (!valid) {
break;
}
}
if (!valid) {
printf("输入不合法!\n");
continue;
}
// 检查猜测的数字与答案的匹配情况
int correct = 0;
int misplaced = 0;
for (i = 0; i < 4; i++) {
if (guess[i] == answer[i]) {
correct++;
} else {
for (j = 0; j < 4; j++) {
if (guess[i] == answer[j]) {
misplaced++;
break;
}
}
}
}
printf("%d· %d一\n", correct, misplaced);
tries++;
if (correct == 4) {
printf("恭喜你猜对了!你用了%d次机会。\n", tries);
break;
}
}
return 0;
}
```
代码中使用了一个 `answer` 数组来保存生成的随机数,另一个 `guess` 数组来保存玩家猜测的数字,然后使用两个循环来检查数字的合法性和匹配情况。在匹配时,先检查位置正确的数字,再检查位置不正确的数字,最后输出匹配情况并根据情况输出胜利或失败的信息。
### 回答2:
下面是用C语言实现的猜数字游戏的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int answer[4]; // 四位随机整数
int guess[4]; // 猜测的四位数
int count = 0; // 猜测次数
int i, j, k;
// 生成四位随机整数
srand((unsigned)time(NULL));
for (i = 0; i < 4; i++) {
do {
answer[i] = rand() % 10;
} while (i > 0 && answer[i] == answer[i - 1]); // 确保随机数各位不相同
}
printf("猜数字游戏开始!\n");
printf("请猜一个四位数(各位数字不相同):\n");
do {
printf("请输入四位数:");
scanf("%d", &guess);
int correct = 0; // 位置正确的数字个数
int incorrect = 0; // 位置不正确的数字个数
// 判断位置是否正确
for (i = 0; i < 4; i++) {
if (guess[i] == answer[i]) {
correct++;
}
}
// 判断数字是否存在但位置不正确
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (guess[i] == answer[j] && i != j) {
incorrect++;
}
}
}
printf("结果:");
for (k = 0; k < correct; k++) {
printf("·");
}
for (k = 0; k < incorrect; k++) {
printf("一");
}
printf("\n");
count++;
} while (correct < 4);
printf("恭喜你猜对了!答案是%d。你一共猜了%d次。\n", answer, count);
return 0;
}
```
运行这段代码后,程序会生成一个四位随机整数,然后根据玩家的猜测,给出相应的提示:其中位置和数字都正确的用"·"表示,只有数字正确但位置不正确的用"一"表示。玩家需要根据这些提示不断猜测直到猜对为止,最后会显示猜对的次数和答案。
### 回答3:
下面是一个用C语言编写的猜数字游戏的代码段:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int randomNumber = 0;
int userGuess = 0;
int correctPosition = 0;
int correctDigit = 0;
srand(time(0)); // 设置随机数种子
// 生成四位不同的随机整数
int digit1, digit2, digit3, digit4;
do {
digit1 = rand() % 9 + 1;
digit2 = rand() % 10;
digit3 = rand() % 10;
digit4 = rand() % 10;
} while (digit1 == digit2 || digit1 == digit3 || digit1 == digit4 || digit2 == digit3 || digit2 == digit4 || digit3 == digit4);
randomNumber = digit1 * 1000 + digit2 * 100 + digit3 * 10 + digit4;
printf("猜数字游戏开始!\n");
printf("系统已生成一个四位不同的随机整数,请输入你猜测的数字:\n");
while (userGuess != randomNumber) {
scanf("%d", &userGuess);
// 检查每一位数字是否正确
int tempRandom = randomNumber;
int tempUserGuess = userGuess;
correctPosition = 0;
correctDigit = 0;
for (int i = 0; i < 4; i++) {
int digitRandom = tempRandom % 10;
int digitGuess = tempUserGuess % 10;
if (digitRandom == digitGuess) {
if (i == 0) {
correctPosition++;
} else {
correctDigit++;
}
}
tempRandom /= 10;
tempUserGuess /= 10;
}
printf("位置正确的数字个数:%d\n", correctPosition);
printf("位置不正确但数字正确的个数:%d\n", correctDigit);
}
printf("恭喜你猜对了!答案是:%d\n", randomNumber);
return 0;
}
```
此代码会生成一个四位随机整数,要求各个数码均不相同。用户通过输入猜测的数字,程序会逐位对比并给出反馈,直到用户猜对为止。反馈中使用“·”表示数字位置正确,使用“一”表示数字位置不正确但数字正确。
请注意,由于回答所需的字数限制,此代码段仅仅是一个演示,可能还有其他需要考虑的情况和细节。完整的游戏代码应包括输入验证、错误处理等。