大小写互换
时间限制:1000 ms | 内存限制:65535 KB
难度:0
描述
现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。
输入
第一行只有一个整数m(m<=10),表示测试数据组数。
接下来的m行,每行有一个字符串(长度不超过100)。
输出
输出互换后的字符串,每组输出占一行。
样例输入
2
Acm
ACCEPTED
样例输出
aCM
accepted
#include"stdio.h"
#include"string.h"
#define MAXN 100
char a[MAXN];
int main()
{
int m,i;
scanf("%d",&m);getchar();
if(m<=10)
while(m--)
{
memset(a,0,MAXN);//fputs(a,stdout);
fgets(a,sizeof(a),stdin);
for(i=0;i<MAXN;i++)
{
if(a[i]>=65 && a[i]<=90)
a[i]=a[i]+32;
else if(a[i]>=97 && a[i]<=122)
a[i]=a[i]-32;
}
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
}
return 0;
}
鼓捣了大半天,先是用fgets和fputs来控制输入输出字符串,但是输出结果总是不对,后来干脆改成最基本的方法,用for来控制,之后突然发现fgets的长度控制好像不对,由size(MAXN)改成了sizeof(a),然后提交,AC了!所以我估计,一定是sizeof所接收的长度太大导致错误,改成了实际情况下的a就好了
如下是使用较为生疏的fputs语句和isupper和islower函数所编写的,也AC了!
#include"stdio.h"
#include"ctype.h"
#include"string.h"
#define MAXN 100
char a[MAXN];
int main()
{
int m,i;
scanf("%d",&m);getchar();
if(m<=10)
while(m--)
{
memset(a,0,MAXN);//fputs(a,stdout);
fgets(a,sizeof(a),stdin);
for(i=0;i<MAXN;i++)
{
if(isupper(a[i]))
a[i]=a[i]+32;
else if(islower(a[i]))
a[i]=a[i]-32;
}
fputs(a,stdout);
}
return 0;
}
总结就是,在使用fputs语句时,sizeof()里边必须是数组名!不能是数组最大长度