类型判断
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing 和 Nanjing
写一个程序, 判断用户输入的两个字符串属于什么关系
样例输入 :
BEIjing
beiJing
样例输出 :
3

```c
``#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX_S 55 //当前时间四个字的位置
#define MAX_T 40 //当前时间时间的位置
int main()
{
/*char ch22;
ch22 = _getch();
printf("%d", ch22);
while (1);*/
system("color 1E"); // 窗口显示时间
printf("%*s\n\n", MAX_S, "※当 前 时 间※"); //窗口显示时间
printf("%*s", MAX_T, " "); //为了好看
system("date /T"); // 窗口显示时间
printf("%*s", MAX_T, " "); //为了好看
system("TIME /T"); // 窗口显示时间
char a[10], b[10];
int c, d, t = 0, i; //接收用户输入如 ,循环变量
//int t1 = 0, t2 = 0, t3 = 0; //统计结果
//用户输入
while (1)
{
//计算两个字符串长度
int i = 0;
//判断输入,字符串长度不能大于十,如果输入十个自动补\0
puts("请输入第一个字符串");
int index = 0;//记录输入的下标
while (index < 10)
{
char ch = _getch();
//如果中途输入回车把最后一个字符设为\0表示字符串的结尾
if (ch == 13)
{
a[index] = '\0';
break;
}
//如果输入的刚好10个字符那么最后一个设为结束符
if (index == 9)
{
a[index] = '\0';
break;
}
//如果发现输错了 按下删除 回退
else if (ch == '\b')
{
if (index > 0)
{
index--; //回退的时候下标跟着退
}
printf("\b \b");//光标位置
}
else
{
//另外的情况 输入正确 把正确字符输入到数组中
a[index++] = ch;
printf("%c",ch);
}
}
printf("\n");
printf("请输入第二个字符串\n");
//判断输入,字符串长度不能大于十,如果输入十个自动补\0
//把下标重新设置为0
index = 0;
//逻辑同上 就不写了
while (index < 10)
{
char ch = _getch();
if (ch == '\r')
{
b[index] = '\0';
break;
}
//如果输入的刚好10个字符那么最后一个设为结束符
if (index == 9)
{
b[index] = '\0';
break;
}
else if (ch == '\b')
{
if (index > 0)
{
index--;
}
printf("\b \b");
}
else
{
b[index++] = ch;
printf("%c",ch);
}
}
printf("\n");
//计算两个字符串的元素个数
c = strlen(a);
d = strlen(b);
printf("计算长度 字符串a的元素个数: %d\t 字符串b的元素个数:%d\n", c, d);
printf("两个字符串比较结果为:\t ");
//如果元素相等 返回2
if (strcmp(a, b) == 0)
{
printf("2\n");
goto flag;
}
//如果两个不相等 返回1
if (c != d)
{
printf("1\n");
goto flag;
}
//长度相等的情况
else
{
//循环遍历一个字符串长度
for (i = 0; i < c; i++)
{
//如果不区分大小写的时候 相等 返回 3
if (a[i] == b[i] || a[i] == b[i] - 32 || a[i] == b[i] + 32)
{
t = 3;
break;
}
else
{
//不相等返回4
if (a[i] != b[i])
{
t = 4;
break;
}
}
}
}
//统计结果
if (t == 3)
printf("3\n");
if (t == 4)
printf("4\n");
flag:
puts("还要继续玩吗???(任意键继续玩,按 n 退出)\n");
char ch = ' ';
ch = _getch();
if (ch == 'n')
{
puts("再见");
system("pause");
exit(0);
}
}
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX_S 55 //当前时间四个字的位置
#define MAX_T 40 //当前时间时间的位置
int main()
{
printf("%*s\n\n", MAX_S, "※当 前 时 间※"); //窗口显示时间
printf("%*s", MAX_T, " "); //为了好看
system("date /T"); // 窗口显示时间
printf("%*s", MAX_T, " "); //为了好看
system("TIME /T"); // 窗口显示时间
char a[10], b[10];
int c, d, t = 0, i; //接收用户输入如 ,循环变量
//int t1 = 0, t2 = 0, t3 = 0; //统计结果
//用户输入
while (1)
{
//计算两个字符串长度
puts("请输入第一个字符串");
gets_s(a);
c = strlen(a);
puts("请输入第二个字符串");
gets_s(b);
d = strlen(b);
//入股两个不相等 返回1
if (c != d)
{
printf("1\n");
}
//长度相等的情况
else
{
//循环遍历一个字符串长度
for (i = 0; i < c; i++)
{
//如果元素相等 返回2
if (a[i] == b[i])
{
t = 2;
}
//如果不区分大小写的时候 相等 返回 3
else
if (a[i] == b[i] || a[i] == b[i] - 32 || a[i] == b[i] + 32)
{
t = 3;
}
else
{
//不相等返回4
if (a[i] != b[i])
{
t = 4;
break;
}
}
}
}
//统计结果
if (t == 2)
printf("2\n");
if (t == 3)
printf("3\n");
if (t == 4)
printf("4\n");
puts("还要继续玩吗???(任意键继续玩,按 n 退出\n)");
char ch = ' ';
ch = _getch();
if (ch == 'n')
{
puts("再见");
system("pause");
exit(0);
}
}
system("pause");
return 0;
}