头歌C语言实验 辅助练习10:使用字符串

第1关:加密字符串

问题描述
对于用户输入的一个字符串,按照以下的规则进行加密,并输出加密后的字符串。

对于小写字母a到x、大写字母A到X,用其后的第二个字母替换,例如a换成c;
对于小写字母y和z、大写字母Y和Z,相应地替换为小写字母a和b以及大写字母A和B;
其它字符不作任何变换。
输入
输入一行:待处理的字符串,字符串长度小于等于80。

输出
输入共包括两行:
第一行是原始字符串;
第二行是加密后的字符串。

输入示例
Hello, World!

输出示例
Hello, World!
Jgnnq, Yqtnf!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<string.h>
int main(){
int i;
char str[81]={0};
gets(str);
printf("%s\n",str);
for(i=0;str[i]!='\0';i++){
if((str[i]<='x'&&str[i]>='a')||(str[i]>='A'&&str[i]<='X'))
printf("%c",str[i]+2);
else if((str[i]>='Y'&&str[i]<='Z')||(str[i]>='y'&&str[i]<='z'))
printf("%c",str[i]-('Y'-'A'));
else
printf("%c",str[i]);
}
return 0;
}

第2关:首字母大写

问题描述
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
注意:每个单词之间可以用除了字母以外的其它任意字符分割开来。

输入
输入一行:待处理的字符串,字符串长度小于等于80。

输出
输出一行:经过转换后的字符串,字符串中的每个单词都是首字母大写的。

提示
注意单词之间的分隔符可以是除了字母以外的任意字符,包括空格、标点符号或者数字等。

输入示例
if so, you already have a google account. you can sign in on the right.

输出示例
If So, You Already Have A Google Account. You Can Sign In On The Right.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
int i;
char str[81];
gets(str);
for(i=0;str[i]!='\0';i++){
if(isalpha(str[i])){
str[i]=toupper(str[i]);
while(isalpha(str[i])){
i++;
}
}
}
for(i=0;str[i]!='\0';i++){
printf("%c",str[i]);
}
return 0;
}

问题描述
输入4行主要由大写字母构成的字符串,绘制出一个垂直直方图,给出每个大写字母出现的次数。

输入
输入包括4行主要由大写字母构成的字符串,每行上字符的数目不超过80个。

输出
输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。
注意:输出的第一行不能是空行。

输入示例

1
2
3
4
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!

输出示例

1
2
3
4
5
6
7
8
9
10
11
                           *       
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
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
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char str[4][81];
char alpha='A';
int count[26]={0};
int i,j;
int max=0;
for(i=0;i<4;i++){
gets(str[i]);
}
for(i=0;i<4;i++){
for(j=0;str[i][j]!='\0';j++){
if(str[i][j]>='A'&&str[i][j]<='Z'){
count[str[i][j]-'A']++;
}
}
}
for(i=0;i<26;i++){
if(count[i]>max){
max=count[i];
}
}
for(i=max;i>0;i--){
for(j=0;j<26;j++){
if(count[j]>=i){
printf("* ");
}else{
printf(" ");
}
}
printf("\n");
}
for(i=0;i<26;i++){
printf("%c",alpha+i);
if(i!=25)
printf(" ");
}
return 0;
}