#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <windows.h>
char str[1000]; //用于储存输入的字符串
char lovec[5]; //用于储存“L、o、v、e”这四个字母
int love[100]; //用于储存“L、o、v、e”这四个字母对应的ASCII值
char Lmr[100]; //对二次输入的内容进行存储,下同
char omr[100];
char vmr[100];
char emr[100];
int i, num = 0, cap = 0, low = 0; //此处num表示数字,cap表示大写字母,low表示小写字母
int j = 0, k = 0, p = 0, q = 0;
int Lt = 0, ot = 0, vt = 0, et = 0;
/*
以下为各子函数
*/
void get() //输入函数,用于输入字符串并赋值给字符组
{
printf("请输入字符串\n");
gets_s(str);
}
void classify() //分类,按照要求对大写字母、小写字母、数字进行分类和计数
{
for (i = 0; i < strlen(str); i++) //strlen用于循环计算字符串长度
{
if (str[i] >= '0' && str[i] <= '9') num++; //对每个字符进行检测,如果符合条件,计数变量+1,下同
else if (str[i] >= 'A' && str[i] <= 'Z') cap++;
else if (str[i] >= 'a' && str[i] <= 'z') low++;
}
}
void outputclassify() //对分类结果进行输出
{
printf("数字有%d个\n大写字母有%d个\n小写字母有%d个\n", num, cap, low);
printf("其中,对于'L','o','v','e'这四个字母:\n");
}
void check() //检查“L、o、v、e”这四个字母是否存在,并显示其所在位置
{
for (i = 0; i < strlen(str); i++)
{
if (str[i] == 'L')
{
Lt++;
//printf("L在第%d位!", i);
printf("第%d个L在第%d位!\n", Lt, i + 1);
j = 1;
}
}
for (i = 0; i < strlen(str); i++)
{
if (str[i] == 'o')
{
ot++;
printf("第%d个o在第%d位!\n", ot, i + 1);
k = 1;
}
}
for (i = 0; i < strlen(str); i++)
{
if (str[i] == 'v')
{
vt++;
printf("第%d个v在第%d位!\n", vt, i + 1);
p = 1;
}
}
for (i = 0; i < strlen(str); i++)
{
if (str[i] == 'e')
{
et++;
printf("第%d个e在第%d位!\n", et, i + 1);
q = 1;
}
}
}
void final() //最终的输出结果
{
lovec[0] = 'L';
lovec[1] = 'o';
lovec[2] = 'v';
lovec[3] = 'e';
lovec[4] = '\0';
love[0] = 76;
love[1] = 111;
love[2] = 118;
love[3] = 101;
love[4] = '\0';
printf("这四个字符为:\n");
for (i = 0; i < 4; i++)
{
printf("%c\n", lovec[i]);
}
printf("\n");
printf("这四个字符对应的的ASCII值为:\n");
for (i = 0; i < 4; i++)
{
printf("%d\n", love[i]);
}
printf("\n");
}
void judge() //对上述检查结果进行判断,若缺少某一字符,则按照题目要求,提示进行输入
{
if (j == 1 && k == 1 && p == 1 && q == 1) //如果“L、o、v、e”这四个字母都存在,则直接输出结果
{
final();
}
else //若有字符不存在,则逐个检查并要求输入,直到全部输入后再输出结果
{
if (j == 0)
{
do
{
printf("没有字符 L !请输入!\n");
gets_s(Lmr);
if (Lmr[0] == 'L'&&Lmr[1]=='\0')
{
j = 1;
}
} while (j == 0);
}
if (k == 0)
{
do
{
printf("没有字符 o !请输入!\n");
gets_s(omr);
if (omr[0] == 'o' && omr[1] == '\0')
{
k = 1;
}
} while (k == 0);
}
if (p == 0)
{
do
{
printf("没有字符 v !请输入!\n");
gets_s(vmr);
if (vmr[0] == 'v' && vmr[1] == '\0')
{
p = 1;
}
} while (p == 0);
}
if (q == 0)
{
do
{
printf("没有字符 e !请输入!\n");
gets_s(emr);
if (emr[0] == 'e')
{
q = 1;
}
} while (q == 0);
}
final();
}
}
void quit()
{
printf("程序将在10秒后退出");
Sleep(10000);
}
/*
以下为主程序部分,主体流程按照输入-》分类处理-》判断处理-》结束输出 这四个流程
*/
int main() //主函数
{
get();
classify();
outputclassify();
check();
judge();
quit();
return 0;
}