有三种方式可以解决c语言大小写字母的转换
1使用C语言提供的函数:toupper(),tolower()
使用这两个函数需要引入头文件:#include<ctypeh>
示例代码:
输入如下
2自己编写转换函数:
因为大小写之间的ASCII码值的差值是固定的,因此可以使用‘a’-‘A’来获取差值。
实例代码:
输出如下:
3异或0x20来实现转换:
0x20是16进制,表示为2进制是00100000,这样可能还是不明显,转换为10进制,其实就是32
对了,还是利用32
异或:相同为0,不同为1 也就是说,任何数字与0异或都是它本身。
所以将其他位都设为0,把第6位(从左向右)设置为1,也就是0x20
如果第6位是1,则异或结果为0
如果第6位是0,则异或结果为1
实现了加减32的 *** 作。
示例代码:
输入如下:
希望可以帮到你。。。
#include <stdioh>
int isletter(char c)
{
return c>='a'&&c<='z'||c>='A'&&c<='Z';
}
int isdigit(char c)
{
return c>='0'&&c<='9';
}
int isblank(char c)
{
return c==' ';
}
int main()
{
char c;
int letters,digits,blanks,others;
for(letters=digits=blanks=others=0;(c=getchar())!='\n';)
if(isletter(c))
letters++;
else if(isdigit(c))
digits++;
else if(isblank(c))
blanks++;
else
others++;
printf("letters:%d blanks:%d digits:%d others:%d\n",letters,blanks,digits,others);
return 0;
}
下面的程序用不同的代码输出两次,你可以选择其中一种。#include<stdioh>
#define P(a,b) printf("%c%c",a,b)
void main()
{
for(int i=0;'a'+i<'z';i+=2)
P('A'+i,'a'+i+1);
char a='A'-2;
while((char)(a+=2)<'Z')
P(a,a+33);
}#include<stdioh>
int main(void)
{
char ch;
int flag=0;
while((ch=getchar())!='\n')
{
if(ch>='A' && ch <='Z')
{
printf("%c",ch);
flag=1;
}
}
if(!flag) printf("Not Found");
}#include<stdioh>
#include<ctypeh>
#include<stringh>
void main()
{
char a[100],p,y;
int x,i,num;
gets(a);
p=a;
x=strlen(a);
//不知道你中间这一段有啥用 我全删了
for(i=0;i<x;i++)
if((p+i)>=65&&(p+i)<=90)
printf("%c",(p+i));
}
FONTNAME and FONTAMEL
FONTNAMEFONTAMEL
Press any key to continue你好,A的ASCII码是65,Z的ASCII码是90,所以,你可以定义个整型变量i,取值为65~90(就是从A到Z的ASCII码),然后输出ASCII对应的字母就是从A到Z了,代码如下:
#include "stdioh"
void main()
{
int i=65;
for(;i<=90;i++) printf("%c",i);
getchar();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)