C语言实现一个简单的打字程序

C语言实现一个简单的打字程序,第1张

随机产生3行40列小写字母,然后请用户输入,如果和随机产生的字母一致则输出O错误输出X

知识点:数组,取余,判断,循环,几个库函数,注释详细,适合像我这样的初学者。

#include //经典标准输入输出头文件,不然printf()用不了。

#include //为了使用rand()随机数函数,这个函数取决于srand()函数给它设置的环境。time()当前时间作为参数给srand()

#include //为了使用time()这个函数,能得到当前日历时间

#include //为了用getch()函数来接收一个不回显的按键,本来是getch()的,结果C++说这个函数不安全让我改成_getch()

int main(void)

{

unsigned char listchar[3][40] = { NULL }//无符号字符数组 初始化为null空,一个空所有空

unsigned char getW = NULL//初始化getW无符号变量getW 为null空

srand(time(0))//初始化随机数发生器,time(0)以当前时间作为随机数种子,给srand作为参数,方便使用rand()的时候产生合理的随机数

int i, j = 0

for (i = 0i <3i++) //3行

{

for (j = 0j <40j++) //40列

{

do

{

getW = rand() % 1000//随机产生一个1-3位数的整数给getW

if (getW >= 97 &&getW <= 122) //判断随机数是否在97到122,也是小写字母a~z如果是 就结束do while。

{

break//用于终止do while

}

} while (1)

listchar[i][j] = getW//把随机得到的小写字母赋值给listchar二维数组。

printf("%2c",listchar[i][j])//输出本行的每个列位置的字符%2c的2是占位对齐位置,相当于空格

}

printf(" ")//换两行

}

//unsigned char keyW = ''没用

//keyW = _getch()这个函数好,得到一个字符不回显

i = 0//listchar二维数组的行初始化赋值为0

for(i <3i++)//因为i已经在上面赋值初始化了,所以for里面的第一个表达式可以留空

{

j = 0//listchar二维数组的列初始化为0

do

{

if (_getch() == listchar[i][j])//判断按键的字母是否和二维数组里面的字母一致

{ printf(" O")}//一样的话就输出 O

else

{ printf(" X")}//不一致输出 X

j++//二维数组的列自增1

} while (j <40)//判断二维数组的列是否为最后一个

printf(" ")//二维数组的列结束后,输出一个换行符

}

return 0

}

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

#define L 100 //定义最大字符长度为 100

int main()

{

srand(unsigned(time(NULL)))

char str[L] = {}, teststr[L] = {}

int length, RightCount = 0

float Precision

length = rand() % L + 1 //生成随机的字符串长度

for (int i = 0 i < length i++)

{

str[i] = rand() % 26 + 'a' //默认字符为小写字符

putchar(str[i])

}

printf("\nPlease input the above string :\n")

gets(teststr) //保存输入的字符串

for (int i = 0 i < length i++)//计算准确的字符个数

{

if (teststr[i] == str[i]) RightCount++

}

Precision = RightCount * 1.0 / length//计算准确率

printf("Precision : %.2f%\n", Precision * 100) //准确率保留两位小数输出

return 0

}

测试样例:

jvgvmsnpfia

Please input the above string :

jlkjlsnfdas

Precision : 27.27

不知道这个合不合你意 哈哈#include<stdio.h>

#include<time.h>

#include<stdlib.h>int main()

{

int i,j,count1=0,count2=0,c=1

char ch[100],data[100]

srand(time(NULL))

for(i=0i<100i++)

{

j = rand()%52 + 0

if(j<26)

{

c = 2

ch[i] = j + 'A'

}

else

ch[i] = j + 'A' + 6

}

if(c == 1)

{

printf("等级为1\n")

for(i=0i<100i++)

printf("%c",ch[i])

}

else

{

printf("等级为2\n")

for(i=0i<100i++)

printf("%c",ch[i])

}

printf("\n")

for(i =0i<100i++)

{

scanf("%c",&data[i])

}

for(i=0i<100i++)

{

if(data[i] == ch[i])

{

printf("%c",data[i])

count1++

}

else

{

printf("*")

count2++

}

}

printf("\n")

printf("对了%d个\n",count1)

printf("错了%d个\n",count2)

return 1

}数字可以自己改的!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11008703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存