目录
一、题目描述
方法:
(1)原理是利用ascll码
(2)建立判断是否为小写字母的函数和将小写字母转变为大写字母的函数,
(3)初始化字符c的输入,注意,单字符用单引号,
(4)若判断为小写字母,则转换成大写字母输出即可
代码如下:
#include "stdio.h"
int isLowwer(char c)
{
return c>='a'&&c<='z';
}
char getBigger(char c)
{
return c+'A'-'a';
}
int main()
{
char c;
while(scanf("%c",&c)!=EOF)
{
if(isLowwer(c))
{
c=getBigger(c);
}
printf("%c\n",c);
}
return 0;
}
二、课后习题
1、题目
方法:同上题
代码如下:
int isBigger(char c)
{
return c>='A'&&c<='Z';
}
char getSmaller(char c)
{
return c-'A'+'a';
}
char * toLowerCase(char * s){
int i;
int len=strlen(s);
for(i=0;i<len;++i)
{
if(isBigger(s[i]))
{
s[i]=getSmaller(s[i]);
}
}
return s;
}
力扣截图
2.题目
方法:
(1)分析题目,题目能分为两个大条件:首字母大写、首字母小写
(2)首字母大写可以分为:全部大写、只有首字母大写
(3)首字母小写只有:全部字母小写这一种情况
(4)对条件(2)进行分析,全部大写和首字母大写可以用第二个字母是否大写来区分,
全部大写:定义一个flag1,遍历字符串,如果是大写,flag1就++,若,flag1=len,则true;
只有首字母大写:定义一个flag2,遍历字符串,从第二个字符开始,若字符是小写,则flag2++,若flag2=len-1,则true
(5)对条件(3)进行分析,在(3)的条件下,直接遍历字符串,若出现大写字母,则false,反之,则true
代码如下:
int isBigger(char c)
{
return c>='A'&&c<='Z';
}
bool detectCapitalUse(char * word){
int i,flag1=0,flag2=0;
int len=strlen(word);
if(isBigger(word[0]))//首字母大写
{
if(isBigger(word[1]))//第二个字母大写
{
for(i=0;i<len;++i)
{
if(isBigger(word[i]))flag1++;//全部字母大写
}
if(flag1==len)return true;
return false;
}
if(!isBigger(word[1]))//第二个字母小写
{
for(i=1;i<len;++i)
{
if(!isBigger(word[i]))flag2++;//除首字母外,全部小写
}
if(flag2==len-1)return true;
return false;
}
}
if(!isBigger(word[0])) //首字母小写
{
for(i=0;i<len;++i)
{
if(isBigger(word[i]))return false;
}
}
return true;
}