大小写互换

来源:互联网 发布:toyama钢琴如何 知乎 编辑:程序博客网 时间:2024/06/07 23:26

大小写互换
时间限制: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()里边必须是数组名!不能是数组最大长度


原创粉丝点击