4402: 【例7-6】自动修正加强版
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:12
解决:11
题目描述
设计一个函数,将一个string类型的字符串中的小写字母转换为大写字母。输出原字符串和新字符串。
样例输入 复制
hello world!
样例输出 复制
hello world!
HELLO WORLD!
提示
分析:
定义并实现了to_upper 的函数,传人的参数是一个 string 字符串s,经过处理后返回它。之前介绍过了如何将字母转换成大写,这里不再赘述。代码如下:
#include<bits/stdc++.h>
using namespace std;
string to_upper(string s) {
for(int i=0;i<s.length();i++)
if('a'<=s[i]&&s[i]<='z')
s[i] -='a'-'A';
return s;
}
int main(){
string s1,s2;
getline(cin,s1);
s2=to_upper(s1);
cout<<s1<<endl<<s2<<endl;
return 0;
}
有些读者会有疑惑:原来的字符串s1并没有变化。字符串不就是一个“加强版”的字符数组吗?为什么可以直接向函数传输实际参数而不是传递地址?这正是sting 类型的一个高明之处——将字符数组封装起来成为一个整体,传进函数就是从原来的字符串复制了一份新的字符串,所有的改动都在新的字符串上进行。而字符数组的本质还是数组,只能传递一个地址。