随机产生3行40列小写字母,然后请用户输入,如果和随机产生的字母一致则输出O错误输出X
知识点:数组,取余,判断,循环,几个库函数,注释详细,适合像我这样的初学者。
#include <stdio.h> //经典标准输入输出头文件,不然printf()用不了。
#include <stdlib.h> //为了使用rand()随机数函数,这个函数取决于srand()函数给它设置的环境。time()当前时间作为参数给srand()
#include <time.h> //为了使用time()这个函数,能得到当前日历时间
#include <conio.h> //为了用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 = 0; i < 3; i++) //3行
{
for (j = 0; j < 40; j++) //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("\n\n"); //换两行
}
//unsigned char keyW = '\0'; 没用
//keyW = _getch(); 这个函数好,得到一个字符不回显
i = 0; //listchar二维数组的行初始化赋值为0
for(;i < 3;i++)//因为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("\n");//二维数组的列结束后,输出一个换行符
}
return 0;
}