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 类型的一个高明之处——将字符数组封装起来成为一个整体,传进函数就是从原来的字符串复制了一份新的字符串,所有的改动都在新的字符串上进行。而字符数组的本质还是数组,只能传递一个地址。