一个自学编程的大三猿之C语言篇(7)

学习的路上是孤单的,但也是开心的

在前面我也是给大家说过了,基本上我都是在周内完成自己的学习,之后将所有的东西记录下来,通过周末的零散时间将它进行修缮,并且发表出来。

要及时分享自己的开心和不开心

在这几周的时间,我基本上每周都会自学完成一到两个c语言必须进行上手,也是值得上手的小项目的学习,通过先自行构思一个小项目的框架和逻辑思维,之后通过对于相关函数的学习,来自行构造这些函数体,之后进行整体的搭建,以及后期的一个调试,每当小项目能够正式运行的时候,内心那种开心和喜悦是真的装不出来了,这或许是我一直学习c语言最大的开心了吧,所以我也想将这样的心情分享给大家,希望大家和我一样,学的开心,也懂得分享开心,毕竟开心是会传染的。

不要将它当作一种需要完成的任务,而是一种目标

前面提到了我每天都会进行GitHub的上传项目,有时候也会因为只完成了一两个的代码而感觉到了很不好意思上传,看着那些比较浅的颜色,就感觉到很不舒服,每天晚上我舍友他们都在玩的时候,我都能想起来今天我的GitHub还没有上传,今天写的那几个代码还需要调试和修改,以前对于很多作业我都认为它是一种为了完成任务而完成任务的作业,可是对于每天需要敲写的代码,我都在给自己计算着离我的目标还差多少行,之后平均每一天需要敲出来多少有质量的代码,我坚定的认为这不是为了完成任务,而是为了我自己所设定的那个目标。加油,luckily!

代码块来了

1.0 **不使用递归的斐波那契数列**

#include <stdio.h>
#include <stdlib.h>

int main(){
	int f1 = 1, f2 = 1,f3;
	int i;
	printf("%12d\n%12d\n", f1, f2);
	for (i = 1; i <= 38; i++){
		f3 = f1 + f2;
		printf("%12d\n", f3);
		f1 = f2;//将2的值给1;
		f2 = f3;//将3的值给2;
	}
	system("pause");
	return 0;
}

1.1 **使用递归的斐波那契数列**

#include <stdio.h>
#include <stdlib.h>

int Sum(int n){
	if (n <= 2){
		return 1;
	}
	return Sum(n-1)+Sum(n-2);
}

int main(){
	printf("%d",Sum(6));
	system("pause");
	return 0;
}

2.0**使用递归实现n的k次方**

#include <stdio.h>
#include <stdlib.h>

int Pow(int n,int k){
	if (k <= 1){
		return n;
	}
	return (n*Pow(n,k-1));
}

int main(){
	printf("%d", Pow(6,3));
	system("pause");
	return 0;
}

3.0**递归函数,将输入的一个数,按位进行求和**

#include <stdio.h>
#include <stdlib.h>

int DigitSum(int n){
	int i,sum=0;
	for (i = n; i; i /= 10){//数字遍历,将每一位数计算出来
		sum += i % 10;
	}
	return sum;
}

int main(){
	printf("%d", DigitSum(1279));
	system("pause");
	return 0;
}

4.0 **递归与非递归计算strlen**

#include <stdio.h>
#include <stdlib.h>

int StrlenNr(const char *str){//非递归
	int i;
	for (i = 0; str[i]; i++);
		return i;
}

int StrlenNR(const char *str){//递归
	if (*str){
		return 1 + StrlenNR(str + 1);
	}
	return 0;
}

int main(){
	printf("%d\n",StrlenNr("caixukun"));
	printf("%d\n",StrlenNR("caixukun"));
	system("pause");
	return 0;
}

5.0**递归将一个字符串进行反向**

#include <stdio.h>
#include <stdlib.h>
int Strlen(const char *str){
	if (*str){
		return 1 + Strlen(str + 1);
	}
	return 0;
}


void reverse_string(char *str){
	if (*str){
		int i = Strlen(str)-1;
		char temp;

		temp = str[0];
		str[0] = str[i];
		str[i] = '\0';
		reverse_string(str + 1);
		str[i] = temp;
	}
}

int main(){
	char str[20] = "qiaobiluo";
	reverse_string(str);
	puts(str);
	system("pause");
	return 0;
}

//这个程序已经用到堆栈的概念,所以在学习的时候还是有着很多的疑惑和不懂的地方存在,也是请教了老师关于这一方面的一些问题。
6.0 **用递归来求阶乘**

#include <stdio.h>
#include <stdlib.h>

int Jiecheng(int n){
	int sum = 0;
	if (n == 1){
		return 1;
	}
	sum=n*Jiecheng(n - 1);
	return sum;
}

int main(){
	printf("%d", Jiecheng(5));
	system("pause");
	return 0;
}

7.0**递归输出一个整数的每一位**

#include <stdio.h>
#include <stdlib.h>

int PrintfNum(int n){
	while (n==0){
		return;
	}
	PrintfNum(n / 10);//递归
	printf("%d ", n % 10);
}

int main(){
	int n;
	scanf("%d", &n);
	PrintfNum(n);
	system("pause");
	return 0;
}

发布了18 篇原创文章 · 获赞 12 · 访问量 965

猜你喜欢

转载自blog.csdn.net/Luckily0818/article/details/103440134