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<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

}数字可以自己改的!

添加控件.

command1 frame1 (label1……label6 timer1 timer2)

'窗体代码,测试好的,大概就是这样 稍微改下就可以实现你所说的功能

Option Explicit

Dim score As Integer

Dim speed As Integer

Sub init()

Label1.Caption = Chr(Int(Rnd * 26) + 49) ' / 设定Label1随机显示的字母

speed = Int(Rnd * 100 + 100) '/ 设定Label1随机显示字母的速度

Label1.Left = Int(Rnd * Frame1.Width) '/ 设定Label1代表字母出现的左边位置

Label1.Top = Frame1.Top '/ 设定Label1代表字母出现的顶部位置

End Sub

Sub init1()

Label6.Caption = Chr(Int(Rnd * 26) + 97) '/ 设定Label2随机显示的字母

speed = Int(Rnd * 100 + 100) '/ 设定Label2随机显示字母的速度

Label6.Left = Int(Rnd * Frame1.Width) ' / 设定Label2代表字母出现的左边位置

Label6.Top = Frame1.Top ' / 设定Label2代表字母出现的顶部位置

End Sub

Private Sub Command1_Click()

init ' /调用init子程序

Timer1.Enabled = True '/ 激活Time1控件

Timer2.Enabled = True '/ 激活Time2控件

Command1.Visible = False

Label5.Caption = 200

Label4.Caption = 0

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

If Chr(KeyAscii) = Label1.Caption Then ' /校验键盘输入字符和Label1显示的字符

init

score = score + 1 ' / 得链纳败分加1

Label4.Caption = score

End If

If Chr(KeyAscii) = Label6.Caption Then ' /校验键盘输入字符和Label2显示的字符

init1

score = score + 1

Label4.Caption = score '/ Label4控件显示得分情况

End If

End Sub

Private Sub Form_Load()

Randomize

Timer1.Enabled = False '/ Time1控件失效

Timer2.Enabled = False '/ Time2控件失效

End Sub

Private Sub Timer1_Timer()

Label1.Top = Label1.Top + speed

If Label1.Top >Frame1.Height Then ' /第一个字母超出屏幕范围的时候调用init子程棚颤序重新出现一个字母

init

End If

Label6.Top = Label6.Top + speed

If Label6.Top >Frame1.Height Then'/第二个字母超出屏幕范围的时候调用init1子程序重新出现一个字母

init1

End If

End Sub

Private Sub Timer2_Timer()

Label5.Caption = Val(Label5.Caption) - 1 '/ 扣除剩余个数中的一个

If Val(Label5.Caption) <= 0 Then

Timer1.Enabled = False '/ 剩余个数小于等于0的时候结束练习

Label1.Caption = "" ' / 不显示字母

Label6.Caption = ""

Select Case score

Case Is <= 80

MsgBox vbCrLf + "别放弃,再来一次!" '/ 显示信息框

Case Is <120

MsgBox vbCrLf + "成绩不错,加油!"

Case Is <150

MsgBox vbCrLf + "再努力做的更好一茄并些!"

Case Is >180

MsgBox vbCrLf + "好厉害!最高分呀!"

End Select

Command1.Visible = True

Label4.Caption = 0

Label5.Caption = 200

Timer1.Enabled = False

Timer2.Enabled = False

End If

End Sub


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存