随机产生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 = 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(" "); //换两行 } //unsigned char keyW = " "; 没用 //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(" ");//二维数组的列结束后,输出一个换行符 } return 0; }