NOI Error Trace - 整理药名【1.7 编程基础之字符串 13】
作者: xtlsoft
时间: 2017-06-13 16:39:41
分类: 旧稿
原题:
- 12.整理药名【1.7编程基础之字符串13】
- 医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。
- 输入:
- 第一行一个数字n,表示有n个药品名要整理,n不超过100。
- 接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和-组成。
- 输出:
- n行,每行一个单词,对应输入的药品名的规范写法。
- 样例输入:
- 4
- AspiRin
- cisapride
- 2-PENICILLIN
- Cefradine-6
- 样例输出:
- Aspirin
- Cisapride
- 2-penicillin
- Cefradine-6
错误代码:
- #include <cstdio>
- #include <iostream>
- #include <cstring>
- using namespace std;
- int main(){
- char s[101][101];
- int count;
- cin>>count;
- for (int i = 0; i < count; i++) {
- cin>>s[i];
- }
- for (int i = 0; i < count; i++) {
- for(int j=0; j<strlen(s[i]); j++){
- if(j==0 && s[i][j]>=97 && s[i][j]<=122 ){
- s[i][j] -= 32;
- }else if(s[i][j]>=65 && s[i][j]<=90 ){
- s[i][j] += 32;
- }
- printf("%c",s[i][j]);
- }
- cout<<endl;
- }
- }
正确代码:
- #include <cstdio>
- #include <iostream>
- #include <cstring>
- using namespace std;
- int main(){
- char s[101][101];
- int count;
- cin>>count;
- for (int i = 0; i < count; i++) {
- cin>>s[i];
- }
- for (int i = 0; i < count; i++) {
- for(int j=0; j<strlen(s[i]); j++){
- if(j==0 && s[i][j]>=97 && s[i][j]<=122 ){
- s[i][j] -= 32;
- }else if(j!=0 && s[i][j]>=65 && s[i][j]<=90 ){
- s[i][j] += 32;
- }
- printf("%c",s[i][j]);
- }
- cout<<endl;
- }
- }
更改:18行。
整理时补充:这个系列可能还会再写。