1 2 3 4 5 6 7 char *s1 = "Ctest" char s2[] = {'C' ,'t' ,'e' ,'s' ,'t' };char s3[20 ] = "Chest" ;char s4[10 ];s1 = "chest" ;
C语音中不能将字符串常量直接赋给数组。但在赋初值时可以。
// 通过终端读入字符串, 由于可能输入的字符串包含空格, 需要使用 getline 函数
1 2 3 const int N = 100 ;char str[N];cin.getline (str, N);
增强函数 #include <iostream>
习题
题目内容:
编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母。
注意,不在函数中输出。输入输出应在主函数中进行。
输入格式:
待转换的字符串,字符串间会包含空格,长度不超过200。
输出格式:
转换后的字符串
注意:本题应使用字符数组实现,不能使用字符串处理库函数,不能使用string类。
输入样例:
happy new year!
输出样例:
HAPPY NEW YEAR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include <iostream> #include <cstring> using namespace std;char toUpperCase (char c) { if (c >= 'a' && c <= 'z' ) { c = c - 'a' + 'A' ; } return c; } int main () { const int N = 201 ; char array[N]; cin.getline (array, N); int i; int j = 0 ; int len = strlen (array); char str[N] = "" ; for (i = 0 ; i < len; i++) { if ((array[i] >= 'a' && array[i] <= 'z' ) || (array[i] >= 'A' && array[i] <= 'Z' )) { str[j] = toUpperCase (array[i]); j++; } else if (array[i] == ' ' ) { str[j] = array[i]; j++; } } cout << str << endl; for (int i = 0 ; i < N; i++) { cout << i << str[i] << endl; } return 0 ; }
题目内容:
编写函数计算一个英文字符串中的单词个数。
输入格式:
一个最长 500 个字母的英文字符串,不包含数字和特殊字符,但可能包含一些英文标点符号(逗号、句点、问号)。标点符号独立出现时不视为一个单词。单词间可能包含一个或多个空格。
输出格式:
该句子的单词个数
注意:本题应使用字符数组实现,不能使用字符串处理库函数,不能使用string类。
输入样例:
We hope everyone watches them with warmth.
输出样例:
7
根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。
不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。
算法设计:
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include <iostream> #include <cstring> using namespace std;bool isAlpha (char c) { return (c >= 'a' && c <= 'z' ) || (c >= 'A' && c <= 'Z' ); } int main () { const int N = 501 ; char str[N]; cin.getline (str, N); bool flag = false ; int count = 0 ; int n = strlen (str); for (int i = 0 ; i <= n; i++) { if (flag) { if (!isAlpha (str[i])) { count++; flag = false ; } } else { if (isAlpha (str[i])) { flag = true ; } } } cout << count << endl; return 0 ; }