随机产生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
}数字可以自己改的!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)