题目:
编写一个函数,对于一行字符串,返回其中的非空格字符的个数,将所有小写字母转化为大写字母,并输出转换后的字符串。
程序如下:
#include <iostream>
using namespace std;
int to_upper(char* s)
{
int count = 0; //统计非空格字符的个数的变量count置初值0
while (*s) //相当于"while(*s!='\0')",即指针没移到字符串末尾
{
if (*s != ' ')
count++; //统计非空格字符的个数
if (*s >= 'a' && *s <= 'z') //*s是小写字母
*s = *s - ('a' - 'A'); //将*s转换成大写字母
//大写字母比对应小写字母的ASCII码小32,更通用的表示是'a'-'A'
s++; //指针向后
}
return count;
}
int main()
{
char* str = new char[200]; //申请动态存储空间,能存放199个字符
strcpy(str, "I am a student .My age is 20 years.");
//调用字符串复制函数,给字符串str赋值
cout << "转换前:" << str << endl;
int Len = to_upper(str);
cout << "转换后:" << str << endl;
cout << "该字符串包含非空格字符" << Len << "个."<<endl;
return 0;
}