1. 设计一个基于线性同余法产生随机数的程序。 2. 设计一个C程序,程序利用随机数发生器产生两个不大于100的随机整数,并能随机地在“+、-、*、/”四种运算中选择一种运算符,从而产生一个运算式,要求用户给出答案,如果答案正确,回答“真棒!”,如果错误,回答“需要继续努力!”。
时间: 2024-12-10 15:28:38 浏览: 15
设计一个基于线性同余法产生随机数的C程序示例(使用`time.h`库获取随机种子):
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义线性同余函数,这里以取模5为例
int linear_congruential_generator(int seed) {
const int a = 1103515245; // 常数a
const int c = 12345; // 常数c
return (a * seed + c) % 2147483647; // 取模范围为2^31 - 1
}
int main() {
srand(time(0)); // 设置随机数种子,每次运行程序时变化
for (int i = 0; i < 5; i++) {
int random_number = linear_congruential_generator(i);
printf("随机数: %d\n", random_number);
}
return 0;
}
```
接下来是第二个C程序,它会生成随机数并进行简单的算术运算:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int choose_operator() {
int operators[] = {1, 2, 3, 4}; // 1代表加, 2减, 3乘, 4除
int random_index = rand() % 4;
return operators[random_index];
}
int calculate(int num1, int num2, int op) {
switch (op) {
case 1:
return num1 + num2;
case 2:
return num1 - num2;
case 3:
return num1 * num2;
case 4:
if (num2 != 0)
return num1 / num2;
else
return "Error: Division by zero!";
}
}
int main() {
srand(time(0));
int num1 = rand() % 100 + 1; // 随机数不超过100
int num2 = rand() % 100 + 1;
int op = choose_operator();
char user_input[50];
printf("运算式: (%d %s %d)\n", num1, "+-*/"[op], num2);
scanf("%s", user_input);
int result = calculate(num1, num2, op);
if (strcmp(user_input, to_string(result)) == 0) {
printf("真棒!\n");
} else {
printf("需要继续努力!\n");
}
return 0;
}
```
这个程序首先生成两个小于100的随机数,然后随机选择一个运算符,提示用户输入结果并判断是否正确。
请注意,`to_string()`函数在这里未提供,你需要自行实现一个将整数转换为字符串的函数,以便比较用户的输入。
阅读全文