问题 A: 习题7-5 字符串逆序存放
题目描述
写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。
输入
一行字符串。
输出
输入字符串反序存放后的字符串。单独占一行。
样例输入 Copy
abcd
样例输出 Copy
dcba
解法一:
#include<bits/stdc++.h>
char reserve(char a[]){
int k = strlen(a);
char b[k];//要另存为数组
for(int i = strlen(a)-1; i >= 0; i--){
b[k-1-i] = a[i];//b和a的下标不一样
}
for(int i = 0; i < strlen(b); i++){
printf("%c",b[i]);
}
}
int main(){
char a[20];
gets(a);
reserve(a);
}
解法二:
#include<bits/stdc++.h>
using namespace std;
void reserve(char a[]){
char c;//交换
int k = strlen(a)-1;
for(int i = 0; i <= k/2; i++){//i的范围是一半
c = a[i];
a[i] = a[k-i];
a[k-i] = c;
}
}
int main(){
char a[20];
gets(a);
reserve(a);
puts(a);
return 0;
}
问题 B: 习题7-7 复制字符串中的元音字母
题目描述
写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。
输入
一个字符串(一行字符)。
输出
该字符串所有元音字母构成的字符串。行尾换行。
样例输入 Copy
CLanguage
样例输出 Copy
auae
提示
可以采用如下函数原型
void vowels(char s1[], char s2[]);
#include<bits/stdc++.h>
using namespace std;
void vowels(char s1[],char s2[]){
//把s1中的元音(a\e\i\o\u\A\E\I\O\U)复制到s2
int j = 0;
for(int i = 0 ; i < strlen(s1); i++){
if(s1[i]=='a'||s1[i]=='e'||s1[i]=='i'||s1[i]=='o'||s1[i]=='u'||s1[i]=='A'||s1[i]=='E'||s1[i]=='I'||s1[i]=='O'||s1[i]=='U'){
//将s1中符合的依次放在s2的顺序中,要给s2的数组另开变量!!!!
s2[j]=s1[i];
j++;
}
}
s2[j]='\0';//新生成的数组以\0作为结束符!!!!
//生成返回值
// for(int i = 0; i < strlen(s2); i++){
// printf("%c",s2[i]);
// }
}
int main(){
char a[20],b[20];
gets(a);
vowels(a,b);
//主函数再输出
puts(b);
return 0;
}
将s1中符合的依次放在s2的顺序中,要给s2的数组另开变量!
新生成的数组以\0作为结束符!!!!