问题 A: 习题7-5 字符串逆序存放
题目描述
写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。
输入
一行字符串。
输出
输入字符串反序存放后的字符串。单独占一行。
样例输入
abcd
样例输出
dcba
解题思路
和有序插入类似,定义一个reserve函数,再通过中间变量实现逆序排序。
代码实现
#include <stdio.h>
#include <string.h>
void reserve(char str[]){
int len = strlen(str);
for (int i = 0; i < (len/2); i++) //定义中间变量逆序输出
{
int temp = str[i];
str[i] = str[len-1-i];
str[len-1-i] = temp;
}
}
int main()
{
char str[50];
gets(str);
reserve(str);
puts(str);
return 0;
}
问题 B: 习题7-7 复制字符串中的元音字母
题目描述
写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。
输入
一个字符串(一行字符)。
输出
该字符串所有元音字母构成的字符串。行尾换行。
样例输入
CLanguage
样例输出
auae
解题思路
创建一个copy函数,将元音字母 a e i o u / A E I O U 复制到另一个字符串中 :
str1[i]=='a'||str1[i]=='e'||str1[i]=='i'||str1[i]=='o'||str1[i]=='u'||str1[i]=='A'||str1[i]=='E'||str1[i]=='I'||
str1[i]=='O'||str1[i]=='U'
代码实现
#include <stdio.h>
#include <string.h>
void copy(char str1[]){
int len = strlen(str1);
for (int i=0; i < len; i++)
{
if(str1[i]=='a'||str1[i]=='e'||str1[i]=='i'||str1[i]=='o'||
str1[i]=='u'||str1[i]=='A'||str1[i]=='E'||str1[i]=='I'||
str1[i]=='O'||str1[i]=='U')
{
printf("%c", str1[i]);
}
}
}
int main()
{
char str1[50];
scanf("%s",str1);
copy(str1);
return 0;
}