随机产生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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)