C语言大小写字母转换
#include<stdio.h>voidmain(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;p...
#include<stdio.h>
void main()
{
char c1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
教教我,解释下。还有我看不到上面代码根据什么来实现大小写转换的 展开
void main()
{
char c1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
教教我,解释下。还有我看不到上面代码根据什么来实现大小写转换的 展开
38个回答
展开全部
就是ASCII码的加减,字母的大写和小写的ASCII码的差值是一样的。
小写的字母ASCII码为 97('a')到 122('z'),转换成大写字母则ASCII减32,变成从65('A')到90('Z')
每个字母对应一个ascii码,查ascii码表就可以一目了然。输入字母,转换为int类型,看其值是在什么范围,就可以知道输入的是大写还是小写。
ASCII码:美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。ASCII码于1968年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。
ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。
展开全部
下面的代码演示了如何把字符串转换为全部大写、全部小写:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
// 把字符串转换为小写
char* str2lower(char *str)
{
char *p = str;
while (*str){
*str = tolower(*str);
str++;
}
return p;
}
// 把字符串转换为大写
char* str2upper(char *str)
{
char *p = str;
while (*str){
*str = toupper(*str);
str++;
}
return p;
}
/* 使用方法:
* command [A|a] string
* 参数说明:
* string是要转换的字符串
* [A|a]表示将字符串string转化为大写还是小写
*/
int main(int argc, char *argv[])
{
if (argc != 3 || strlen(argv[1]) != 1){
printf("usage: command [A|a] string\n");
return EXIT_FAILURE;
}
if (isupper(argv[1][0]))
printf("字符串的大写是:%s\n", str2upper(argv[2]));
else if (islower(argv[1][0]))
printf("字符串的小写是:%s\n", str2lower(argv[2]));
else
printf("原始的字符串是:%s\n", argv[2]);
return EXIT_SUCCESS;
}
编译该代码并运行,结果如下:
[287@~/c-cpp]$ gcc --std=c99 -o string-in-case string-in-case.c
[288@~/c-cpp]$ ./string-in-case A "This is a String."
字符串的大写是:THIS IS A STRING.
[289@~/c-cpp]$ ./string-in-case a "This is a String."
字符串的小写是:this is a string.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
// 把字符串转换为小写
char* str2lower(char *str)
{
char *p = str;
while (*str){
*str = tolower(*str);
str++;
}
return p;
}
// 把字符串转换为大写
char* str2upper(char *str)
{
char *p = str;
while (*str){
*str = toupper(*str);
str++;
}
return p;
}
/* 使用方法:
* command [A|a] string
* 参数说明:
* string是要转换的字符串
* [A|a]表示将字符串string转化为大写还是小写
*/
int main(int argc, char *argv[])
{
if (argc != 3 || strlen(argv[1]) != 1){
printf("usage: command [A|a] string\n");
return EXIT_FAILURE;
}
if (isupper(argv[1][0]))
printf("字符串的大写是:%s\n", str2upper(argv[2]));
else if (islower(argv[1][0]))
printf("字符串的小写是:%s\n", str2lower(argv[2]));
else
printf("原始的字符串是:%s\n", argv[2]);
return EXIT_SUCCESS;
}
编译该代码并运行,结果如下:
[287@~/c-cpp]$ gcc --std=c99 -o string-in-case string-in-case.c
[288@~/c-cpp]$ ./string-in-case A "This is a String."
字符串的大写是:THIS IS A STRING.
[289@~/c-cpp]$ ./string-in-case a "This is a String."
字符串的小写是:this is a string.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<string.h>
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]<'A') //判断b[i]>'a' <'A'?
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}
main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符???
printf("%c",c);
}
}
修改版:
#include<stdio.h>
#include<string.h>
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}
else if(b>='A' && b<='Z')
{
b=b+32;
}
return b;
}
int main(void)
{
char a(char b);
char s[10];
char c;
int i;
gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}
return 0;
}
#include<string.h>
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]<'A') //判断b[i]>'a' <'A'?
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}
main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符???
printf("%c",c);
}
}
修改版:
#include<stdio.h>
#include<string.h>
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}
else if(b>='A' && b<='Z')
{
b=b+32;
}
return b;
}
int main(void)
{
char a(char b);
char s[10];
char c;
int i;
gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
void main()
{
char c;
scanf("%c",&c); //输入一个字母。
if ((c>='A')&&(c<='Z')) c+=32;
//判断是否为大写字母,是则转换为小写字母。
else if((c>='a')&&(c<='z')) c-=32;
//否则判断是否为小写字母,是则转换为大写字母。
else //否则,该字符不是字母,则输出“该字符不是字母”并结束程序。
{
printf("该字符不是字母\n");
exit(0);
}
printf("%c\n",c); //输出转换后的字母字符。
}---------------摘自 百度用户 锅钢5
#include<stdlib.h>
void main()
{
char c;
scanf("%c",&c); //输入一个字母。
if ((c>='A')&&(c<='Z')) c+=32;
//判断是否为大写字母,是则转换为小写字母。
else if((c>='a')&&(c<='z')) c-=32;
//否则判断是否为小写字母,是则转换为大写字母。
else //否则,该字符不是字母,则输出“该字符不是字母”并结束程序。
{
printf("该字符不是字母\n");
exit(0);
}
printf("%c\n",c); //输出转换后的字母字符。
}---------------摘自 百度用户 锅钢5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//小写转大写
char aA(char a)
{
if (a >= 'a' && a <= 'z') return a - 'a' + 'A';
}
//大写转小写
char Aa(char A)
{
if (A >= 'A' && A <= 'Z') return A - 'A' + 'a';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询