C语言做一个随机生成20个字母 的字符串 然后按照这个字符串进行输入 当输入正确,就会原样打印输出,当输入错误就会打印* 20个输入结束之后,就会打印用时和正确率
时间: 2024-09-10 09:13:38 浏览: 40
首先,你需要定义一个随机字符串生成的函数,然后创建一个存储用户输入的字符串的数组。接着,你需要一个循环来接收用户的输入,并且在每次输入后对用户输入的字符与目标字符串中对应的字符进行比较,如果相同则保留该字符,不同则显示星号(*)。循环结束后,你可以计算用时和正确率。
下面是一个简单的示例代码,展示了如何实现这个程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define STRING_LENGTH 20
// 生成随机字符串
void generateRandomString(char *str) {
const char charset[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < STRING_LENGTH; i++) {
int key = rand() % (sizeof(charset) - 1);
str[i] = charset[key];
}
str[STRING_LENGTH] = '\0'; // 添加字符串结束符
}
// 比较并输出字符串
void compareAndPrintString(const char *str1, const char *str2) {
for (int i = 0; i < STRING_LENGTH; i++) {
if (str1[i] == str2[i]) {
printf("%c", str1[i]);
} else {
printf("*");
}
}
printf("\n");
}
int main() {
char correctString[STRING_LENGTH + 1];
char userInput[STRING_LENGTH + 1];
int matchCount = 0;
srand(time(NULL)); // 初始化随机数种子
// 生成并打印正确字符串
generateRandomString(correctString);
printf("正确字符串: %s\n", correctString);
clock_t start, end;
double cpu_time_used;
start = clock(); // 开始计时
// 获取用户输入
for (int i = 0; i < STRING_LENGTH; i++) {
printf("请输入第 %d 个字符: ", i + 1);
scanf(" %c", &userInput[i]); // 注意前面有一个空格,用于忽略前面的换行符
if (userInput[i] == correctString[i]) {
matchCount++;
}
}
end = clock(); // 结束计时
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
// 比较并输出结果
compareAndPrintString(correctString, userInput);
// 输出用时和正确率
printf("用时: %f 秒\n", cpu_time_used);
printf("正确率: %d%%\n", (matchCount * 100) / STRING_LENGTH);
return 0;
}
```
在上面的代码中,我们定义了一个`generateRandomString`函数来生成随机字符串,一个`compareAndPrintString`函数来比较和打印字符串,以及一个`main`函数来处理整个程序的逻辑。
阅读全文