

这个打字练习单独作为一个代码运行是正确的,但是作为调用函数之后,运行结果那里为什么跳过了一次输入
关注引自免费微信小程序:皆我百晓生
在您提供的代码中,存在一个缩进错误和一个语法错误,这可能是导致问题的原因。让我们逐步修复这些问题。
首先,修复缩进错误。在for循环内部,应该将所有语句正确地缩进。下面是修复后的代码片段:
for (i = 1; i <= NUM; i++) {
printf("原值为:");
ch1 = rand() % (MAX - MIN + 1) + MIN;
putchar(ch1);
printf("请输入:");
ch2 = getchar();
if (ch1 == ch2)
right++;
else
fault++;
fflush(stdin);
putchar('\n');
}
接下来,解决语法错误。在输出错误次数时,您忘记了一个变量名。这里是修正后的部分:
printf("总: %d, 正确:%d, 错误:%d, 用时:%f秒\n", NUM, right, fault, duration);
最终修复后的完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int print_writing() {
int i, NUM = 5, right = 0, fault = 0;
char MIN = '!', MAX = '~', ch1, ch2;
clock_t start, finish;
double duration;
printf("打字练习游戏!\n");
printf("请输入相同的字符!\n");
system("PAUSE");
srand(time(0));
start = clock();
for (i = 1; i <= NUM; i++) {
printf("原值为:");
ch1 = rand() % (MAX - MIN + 1) + MIN;
putchar(ch1);
printf("请输入:");
ch2 = getchar();
if (ch1 == ch2)
right++;
else
fault++;
fflush(stdin);
putchar('\n');
}
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf("总: %d, 正确:%d, 错误:%d, 用时:%f秒\n", NUM, right, fault, duration);
return 0;
}
int main() {
print_writing();
return 0;
}
现在,当您作为主程序运行这段代码时,它应该能正常工作,不会跳过任何输入。确保包含头文件(#include <stdio.h>、#include <stdlib.h> 和 #include <time.h>)并使用适当的编译器(例如GCC或Clang)编译和执行此代码。