类型:判断线段交
问题描述
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
输入格式
包括两行,每行都是一个字符串
输出格式
仅有一个数字,表明这两个字符串的关系编号
样例输入
BEIjing
beiJing
样例输出
3
思路
1.用gets(数组名)的方式读字符串可以无限读取,不会判断上限,以回车结束读取,并且能接收空格。
2.加一个头文件#include<string.h>,以便用strlen()函数获得a数组和b数组的长度;用strcmp()函数比较两个字符串是否相等,如果相等,返回0.
3.本题分为以下两种情况:
代码:
// An highlighted block
#include <stdio.h>
#include <string.h>
int main(void)
{
int lena,lenb,i,j,flag=0;
char a[100],b[100];
gets(a);
gets(b);
lena = strlen(a);
lenb = strlen(b);
if (lena != lenb)
flag = 1;
else
{
if ((strcmp(a,b)==0))
flag = 2;
if (flag!=2)
{
for (i=0;i<lena;i++)
{
if (a[i]>='a')//'A'65,'a'97 ,全部换成大写
a[i]-=32;
if (b[i]>='a')
b[i]-=32;
}
if (strcmp(a,b)==0)
flag = 3;
else
flag = 4;
}
}
printf("%d",flag);
return 0;
}
与gets()作用相同的两种函数用法(同样可以读取空格)
1.scanf("%[^\n]");
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char a[100];
int n=0;
scanf("%[^\n]",a);
n=strlen(a);
printf("%d\n",n);
return 0;
}
2.getline();
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
string a;
getline(cin,a);
int n=a.size();
printf("%d\n",n);
return 0;
}