算法笔记习题 2-6小节

算法笔记@Ada_Lake

算法笔记代码保留地~~~

2.6小节——C/C++快速入门->函数

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

  1. 题目描述 ,写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。
  2. 输入,一行字符串。
  3. 输出,输入字符串反序存放后的字符串。单独占一行。
  4. 样例输入, abcd
  5. 样例输出, dcba

我的理解
1.用一个数组存放一个字符串
2.调用函数,函数实现的功能是将字符串反序
3.输出整个字符串

**以下是代码**
// Ada
#include<stdio.h>
#include<string.h>

void change(int n, char a[]){
	int i = 0;
	char temp;
	while(a[i] != '\0'){
		if(i <= n / 2){
			temp = a[i];
			a[i] = a[n - i];
			a[n - i] = temp;	
		}
		i++;
	}
}

int main(){
	char str[20];
	gets(str);	
	int i = 0, n;
	while(str[i] != '\0'){
		n = i++;
	}
	change(n, str);
	
	for(int i = 0; i <= n; i++){
		printf("%c", str[i]);
	}
	
	
	return 0;
}
**函数先声明后使用。觉得逻辑没问题但又做错,十有八九临界点有问题,一定要试数!!!**

** 优化 **
长度直接用strlen()可以得到

**以下是代码**
// Ada
#include<stdio.h>
#include<string.h>

void change(int n, char a[]) {
	int i = 0;
	char temp;
	
	for(int  i = 0; i < n / 2; i++){
			temp = a[i];
			a[i] = a[n - i - 1];
			a[n - i - 1] = temp;
	}
}

int main(){
	void change(int n, char a[]);
	char str[20];
	int n;
	
	gets(str);
	n = strlen(str);
	change(n, str);
	puts(str); 
	
	return 0;
}

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

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

  2. 输入,一个字符串(一行字符)

  3. 输出,该字符串所有元音字母构成的字符串。行尾换行。

  4. 样例输入, CLanguage

  5. 样例输出, auae

  6. 提示, 可以采用如下函数原型 void vowels(char s1[], char s2[]);
    我的理解
    1.输入一个字符串,调用函数
    2.调用的函数只需要把字符串的元音字母都找出来然后放置到另一个字符串中既可

    以下是代码

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

void vowels(char s1[], char 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')){
			s2[j] = s1[i];
			j++;
		}
		s2[j] = '\0';
	}
}

int main(){
	void vowels(char s1[], char s2[]);
	char str1[20], str2[20];
	
	gets(str1);
	vowels(str1, str2); 
	puts(str2);
	
	return 0;
}

你可能感兴趣的:(算法笔记)