codeup刷题 2.6小节——C/C++快速入门->函数 ——《算法笔记》(胡凡)

  • Post author:
  • Post category:其他



注:



本小节多使用gets()输入事先不知道长度大小的字符串。

————————————分割线————————————



习题7-5 字符串逆序存放


题目描述


写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。


输入


一行字符串。


输出


输入字符串反序存放后的字符串。单独占一行。


样例输入


abcd


样例输出


dcba


程序

#include<stdio.h>
#include<string.h>

void reverse(char str[]){
	int flag, length = strlen(str);
	char temp;   //交换的中间变量 
	
	//以flag作为数组长度单双数的标志 
	if(length%2 == 0)   flag=0;
	else				flag=1;
	
	//对数组元素进行反序交换 
	//只需要一层循环即可 
	for(int i=0; i<length/2; i++){
		temp = str[i];
		str[i] = str[length-i-1];
		str[length-i-1] = temp;
	}
	puts(str);
	
	//结果出不来时可以再多定义一个字符串,存放反序结果。 
}

int main(){
	char str[20];
	gets(str);     //在不知道字符串大小的前提下可以用gets函数输入字符串
	reverse(str);
} 

———————————————————————————



习题7-7 复制字符串中的元音字母


【OJ内表示答案错误】


———————————————————————————


题目描述


写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。


输入


一个字符串(一行字符)。


输出


该字符串所有元音字母构成的字符串。行尾换行。


样例输入


CLanguage


样例输出


auae


提示


可以采用如下函数原型

void vowels(char s1[], char s2[]);


程序

#include<stdio.h>
#include<string.h>

void vowels(char s1[], char s2[]){ 
	int i, j;
	for(i=0, j=0; i<strlen(s1); i++){
		//大写元音字母 
		if(s1[i] == 'A'||s1[i] == 'E'||s1[i] == 'I'||s1[i] == 'O'||s1[i] == 'U'){
			s2[j]=s1[i];
			j++;
			continue;
		}
		//小写元音字母 
		if(s1[i] == 'a'||s1[i] == 'e'||s1[i] == 'i'||s1[i] == 'o'||s1[i] == 'u'){
			s2[j]=s1[i];
			j++;
			continue;
		}
	}
	s2[j]='\0';     //字符串必须有'\0'作为结束标志,而s1不需要加是因为调用gets函数,函数里会自动加。 
	for(i = 0; i < strlen(s2); i++)		printf("%c",s2[i]);
	printf("\n");
}

int main(){
	char s1[50], s2[50]; 
	gets(s1);     //在不知道字符串大小的前提下可以用gets函数输入字符串
	vowels(s1, s2);
	return 0;
}



版权声明:本文为LJFjy_fighting原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。