大小写互换-"数字字符串"转换成数字
今天穿着hacker浑浊马甲在百度编程课堂实训习题中发现了这个很简单的问题,就做了下。
为了考虑输入的是否是数字,结果写好后竟然超时了。
不过里面用到的将字符串装换成数字的方法,感觉是个收获,因此在此做下笔记。
大小写互换时间限制:1000 ms | 内存限制:65535 KB难度:0描述现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。输入第一行只有一个整数m(m<=10),表示测试数据组数。
接下来的m行,每行有一个字符串(长度不超过100)。输出输出互换后的字符串,每组输出占一行。样例输入2AcmACCEPTED
样例输出aCMaccepted
超时解题报告:
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char *n,m,s[27]; int a,i,len; scanf("%s",&m); n=&m; a=atoi(n); if(a)//输入的是数字 { while(a--) { scanf("%s",s); len=strlen(s); for(i=0;i<len;i++) { if(s[i]>=65&&s[i]<=90)//大写时候 { printf("%c",s[i]+32); } else if(s[i]>=97&&s[i]<=122)//小写时候 printf("%c",s[i]-32); else printf("\nerror!\n"); } printf("\n"); } } else //输入的不是数字 { printf("data error!\n "); } return 0; }
程序截图:
如果我按照一般思路来这样写,虽然结果不超时但是感觉不够严谨诶。
#include<stdio.h> #include<string.h> int main() { int m,i,len; char s[101]; scanf("%d",&m); while(m--) { scanf("%s",s); len=strlen(s); for(i=0;i<len;i++) { if(s[i]>=65&&s[i]<=90)//大写时候 { printf("%c",s[i]+32); } else if(s[i]>=97&&s[i]<=122)//小写时候 printf("%c",s[i]-32); else printf("\nerror!\n"); } printf("\n"); } return 0; }
程序截图:
*********************
交流即分享,分享才能进步!
不对之处,还请各位前辈多多指教。
by 星云
********************