C语言 字符串中大小写字母转换
题目是:输入一个字符串,将其中的大写字母换成小写,小写字母换成大写,其他的字符不变。这个是我编写出的一个程序,可是总是输出不了,想问问是哪里出现问题了呢?#include...
题目是:输入一个字符串,将其中的大写字母换成小写,小写字母换成大写,其他的字符不变。
这个是我编写出的一个程序,可是总是输出不了,想问问是哪里出现问题了呢?
#include "stdio.h"
#include "string.h"
void inv(char *s)
{
int i;
for(i=1;i<=strlen(s);i++)
{
if(*(s+i)>=65 && *(s+i)<=92)
*(s+i)+=32;
else if (*(s+i)>=97 && *(s+i)<=122)
*(s+i)-=32;
}
}
void main()
{
char *string;
gets(string);
inv(*string);
puts(string);
} 展开
这个是我编写出的一个程序,可是总是输出不了,想问问是哪里出现问题了呢?
#include "stdio.h"
#include "string.h"
void inv(char *s)
{
int i;
for(i=1;i<=strlen(s);i++)
{
if(*(s+i)>=65 && *(s+i)<=92)
*(s+i)+=32;
else if (*(s+i)>=97 && *(s+i)<=122)
*(s+i)-=32;
}
}
void main()
{
char *string;
gets(string);
inv(*string);
puts(string);
} 展开
7个回答
展开全部
就是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码。
推荐于2017-10-04 · 知道合伙人教育行家
关注
展开全部
思路:先定义字符串,并输入,然后对字符串进行遍历,并判断是否是大写字母,如果是则其ASCII加32,如果是小写字符则其ASCII减去32,最后输出字符串即可。
#include <stdio.h>
int main()
{
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
else if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
puts(a);
return 0;
}
/*运行结果:
abc23DEF
ABC23def
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正确的如下:
#include "stdio.h"
#include "string.h"
void inv(char *s)
{
int i;
for(i=0;i<strlen(s);i++)//此处要从0开始计数,因为字符串第一个字符是s[0]
{
if(*(s+i)>=65 && *(s+i)<=92)
*(s+i)+=32;
else if (*(s+i)>=97 && *(s+i)<=122)
*(s+i)-=32;
}
}
void main()
{
char string[100];//给string数组分配100个空间
gets(string);
inv(string);//string 就已经是char*类型了
puts(string);
}
#include "stdio.h"
#include "string.h"
void inv(char *s)
{
int i;
for(i=0;i<strlen(s);i++)//此处要从0开始计数,因为字符串第一个字符是s[0]
{
if(*(s+i)>=65 && *(s+i)<=92)
*(s+i)+=32;
else if (*(s+i)>=97 && *(s+i)<=122)
*(s+i)-=32;
}
}
void main()
{
char string[100];//给string数组分配100个空间
gets(string);
inv(string);//string 就已经是char*类型了
puts(string);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路:利用对应大小写字符的ASCII码相差32,则遍历输入的字符串,判断每个字符是大写字母还是小写字母,如果是大写字母则自加32就是对应的小写字母,如果是小写字母则自减32就是其对应的大写字母。
参考代码:
#include <stdio.h>
int main()
{
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')//表示是大写字母
a[i]+=32;
else if(a[i]>='a'&&a[i]<='z')//表示是小写字母
a[i]-=32;
puts(a);
return 0;
}
/*
输出:
asfDJY435
ASFdjy435
*/
参考代码:
#include <stdio.h>
int main()
{
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')//表示是大写字母
a[i]+=32;
else if(a[i]>='a'&&a[i]<='z')//表示是小写字母
a[i]-=32;
puts(a);
return 0;
}
/*
输出:
asfDJY435
ASFdjy435
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言 字符串中大小写字母转换程序:
#include <stdio.h>
int main()
{
charstr[10];
int i=0;
gets(str);
while(str[i])
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
else if(str[i]>='A'&&str[i]<='Z')
str[i]=str[i]+32;
i++;
}
puts(str);
return 0;
#include <stdio.h>
int main()
{
charstr[10];
int i=0;
gets(str);
while(str[i])
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
else if(str[i]>='A'&&str[i]<='Z')
str[i]=str[i]+32;
i++;
}
puts(str);
return 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询