当前位置:主页 > 查看内容

【C语言基础学习笔记】一、初始C语言(总结篇)

发布时间:2021-06-16 00:00| 位朋友查看

简介:说明我是一个初学c语言的小白很多地方都不是很理解所以就会自己动手敲代码进行相应的推理验证希望可爱的你在看到这些步骤时不要嫌弃我啰嗦。近期有很多小可爱给我私发消息问我怎么学习编程怎么学好c语言等问题所以在这里我统一进行解答和回复希望可以帮到大……

说明:我是一个初学c语言的小白,很多地方都不是很理解,所以就会自己动手敲代码进行相应的推理验证,希望可爱的你在看到这些步骤时,不要嫌弃我啰嗦。(近期有很多小可爱给我私发消息,问我怎么学习编程,怎么学好c语言等问题,所以在这里我统一进行解答和回复,希望可以帮到大家。)


本章内容:
1、如何学好编程,编程学习方法分享(小白必看~)
2、编程学习路径分享(C++/Java)
3、初始C语言总结思维导图(复习+提高 专用)
4、初始C语言知识补充(查漏补缺)
5、编程练习题(巩固加深所学知识)



一、如何学好编程

相信有很多小伙伴都跟我一样,刚接触编程,刚接触C语言,担心自己学不会或者学不好(也有一些同学可能在学校中已经接触过C语言,但是限于自己学习的渠道和方法,导致自己对编程学习的兴趣和自信直线下降,备受打击,陷入深深的自责和懊悔。)。所以近期我收到很多小可爱们给我的私信问:“张同学,你是怎么学编程的?有没有好的编程学习方法?我该怎么做才能学好编程呢?”等等诸如此类的问题。在这里我结合自己的学习经历,以及身边一些自学编程成功同学的经历,统一回复帮助大家解决这些烦恼和问题。
1、调整好自己的心态:在你每次学习编程质疑自己的时候请一定要记住这句话:”每一个人都可以,也有能力学好编程”。编程学习并不是一个需要多高的智力,高超的技巧才能学会的东西。它和我们从小到大经历过的每一种新的知识一样,需要熟能生巧,需要刻意练习!
2、学会一些好的学习方法:①电脑记笔记+知识夹整理:编程学习涉及到的知识内容会比较多,理解的东西也会很多,很多时候需要有相应的图例+代码+额外知识链接(比如网站、博客等),个人建议用电脑或者平板去记笔记,最好能支持同步上传,这样就不用担心自己的笔记丢失。不建议线下手写记笔记的方式,太慢,效率低,不方便复习查看,易丢失。推荐软件:OneNote、有道云笔记、印象笔记等等。
②学会定期总结和复习:总结是对自己所学知识的一个提高和整理,建议学习的过程中要定期去进行总结和复习(比如我自己采用章节总结的方式,每学完一章节进行总结和复习)。建议总结和复习方式:思维导图 推荐软件:xmind
3、养成写博客的习惯:学习的过程是一个输入知识的过程,而写博客则是将自己所学知识输出的一个过程。自己在写博客的过程中会不断的向自己提问,能真正发现学习过程中没搞懂或者有疑惑的地方。此外,写博客代表你是一个敢于分享,乐于分享的人,这样你不但可以在学习过程中体会到快乐,还能在分享学习知识的过程中体会快乐(双重快乐,快乐翻倍!)。每一个厉害的牛人也都是一步一个脚印从菜鸟过来的,所以不要去害怕自己写的不好,不敢去分享。
4、养成每天敲代码,上传代码的习惯:推荐代码上传网站GitHub(国外),Gitee(国内)。GitHub服务器在国外,所以在使用过程中网速受限,Gitee是国内的代码托管平台,界面风格和使用几乎和GitHub一致,但是网络访问速度更快,使用体验更好。


上面说的这些都是学习编程的前期准备环节,接下是编程学习过程中的具体方法
(1)c语言被称为编程之本,是一门非常值得学,也适合去学的编程语言!(c语言也是最好的编程入门学习语言!)
(2)学习不能叫苦叫累,抱怨没时间:与戴皇冠,必承其重,真正牛逼的人都是合理安排时间,把自己有限的时间花在他觉得最重要的事情上面。
(3)拒接做伸手党:学习编程最重要的过程就是“要学会自己尝试去解决遇到的各种问题,因为在尝试解决问题的过程中,你才会去想尽各种各样的方法,从多个角度思考,才能真正的提高自己的编程能力”(不要转牛角尖,这里不是说不管遇到什么问题都不要请教别人,在我们的学习中,生活中,以及今后的人生中,向他人学习是非常重要的。只是要注意在请别人帮忙之前要花心思去想想,去尝试自己解决,不要一有问题就甩给别人,别人解决了,你并不能获得解决问题过程中的提升!)


二、编程系统学习路径

学好C语言不代表学好编程,二者不是等价的!编程的学习包括:编程语言、数据结构和算法、操作系统、计算机网络及网络编程、数据库、脚本语言。 在学习的计算中,一定要自己多去实践!多敲代码!
C++/Java编程系统学习路径分享:
在这里插入图片描述
①编程语言的学习:选一门经典语言深入学习,多敲代码多实践。
②数据结构和算法:建立在掌握编程语言的基础上,听懂 / 看懂 + 实践。
③操作系统、计算机网络和网络编程:上课认真听讲,理解 + 看书(几本好书),实践
④数据库、脚本语言:相对简单


三、初始C语言总结篇

该部分内容是对初始C语言(1)(2)(3)的总结,建议在阅读之前先看一下之前的三篇文章,对照阅读效果更佳!
在这里插入图片描述


四、初始C语言知识补充

(1)C语言是一门通用计算机编程语言,广泛应用于底层开发。那么什么叫做底层开发呢?
在这里插入图片描述
一般我们所购买的电脑都是硬件设备,需要在电脑上安装操作系统,比如windows / Linux / macos等,但是操作系统并不是直接控制电脑硬件,而是通过中间层-- - 驱动(各种驱动软件),来间接操控硬件设备。在操作系统安装完成后,如果我们需要丰富多彩的体验和功能,就需要安装应用软件,比如社交聊天用的QQ、微信、网络资源管理和共享的云盘网盘、娱乐放松的电脑游戏,这些都存在与应用层。通常我们将应用层往下称为底层。
(2)常见文件后缀.c-- - 源文件 (c语言格式source).h-- - 头文件(head).cpp-- - 源文件(c++格式).exe-- - 可执行程序
(3)一个工程中有且仅能有一个main函数(主函数),一个工程中可以有多个.c源文件,多个.h头文件,但是多个.c文件中有且仅能有一个main函数。分析理解:main函数是整个工程程序执行的入口,如果出现了多个main函数,那么程序就不知道该从哪个入口进去,不知道执行哪个main函数,就会出错!
(4)变量的声明和定义、函数的声明和定义可以放到main函数外面,但是执行类的语句不能放到main函数外面
例如:全局变量a的声明和定义可以放到main函数外面,但是打印a的值这条执行语句不能放到main函数外面。
在这里插入图片描述
(5)转义字符中的’(单引号)"(双引号)什么时候使用呢? ‘(单引号)"(双引号)之所以要进行转义,是为了解决’ ’ 和 " " 配对的问题。
例1:如果我们要打印输出单引号’ ,若不加\进行转义,则出现’ ‘异常配对,加上\后进行转义可以解决’ ‘异常配对的问题
在这里插入图片描述
在这里插入图片描述
例2:如果我们要打印输出双引号’ ,若不加\进行转义,则出现" “异常配对,加上\后进行转义可以解决” "异常配对的问题
在这里插入图片描述
在这里插入图片描述
(6)计算机中键盘上敲出的字符:比如 a b ` 1 @ 等等,这些字符都是按照ASCII码表上对应的ASCII码值进行存储的,并不会直接对字符进行存储。所以说字符类型也算整型。

五、编程练习题(牛刀小试)

1、写代码将三个数按从大到小输出

#include<stdio.h>
//1、写代码将三个数按从大到小输出
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	printf("please input three numbers:>>\n");
	scanf("%d%d%d", &a, &b, &c);
	//算法分析  将最大数放到a,次大值给b,最小值给c
	if (a < b)//如果a小于b,交换a,b两者的值
	{
		int temp = a;
		a = b;
		b = temp;
	}
	if (a < c)//如果a小于c,交换a,c两者的值
	{
		int temp = a;
		a = c;
		c = temp;
	}
	if (b < c)//如果b小于c,交换b,c两者的值
	{
		int temp = b;
		b = c;
		c = temp;
	}
	printf("%d  %d  %d\n", a, b, c);//不管输入的三个数的大小,均按照a,b,c的顺序打印
	return 0;
}

结果展示:
在这里插入图片描述


2.写一个代码打印1 - 100之间所有3的倍数的数字

//方法一
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;//计数
	for (i = 1; i <= 100; i++)
	{
		if ((i % 3) == 0)
			printf("%d  ", i);
		count++;
	}
	printf("1-100之间3的倍数的个数为 %d\n", count);
	return 0;
}

//方法二
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 3; i <= 100; i += 3)
	{
		printf("%d ", i);
	}
	printf("1-100之间3的个数为:%d\n", i);
	return 0;
}

结果展示:
在这里插入图片描述


3.给定两个数,求这两个数的最大公约数 //最大公约数又称最大公因数
首先要知道什么时约数 / 因数, 例如:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
辗转相除法:
比如说求 24 18 的最大公约 数,24 % 18 = 6 != 0 ,18 % 6 = 0 ,那么这个6就是24和18的最大公约数 m % n = r != 0 , m = n, n = r , r = m % n, 判断r是否为0 若r为0, 则n为最大公约数,若不为0,继续循环执行。

#include<stdio.h>
//3.给定两个数,求这两个数的最大公约数
int main()
{
	int m = 0;
	int n = 0;
	int r = 0;
	printf("请输入两个正整数求它们的最大公约数:>>\n");
	scanf("%d%d", &m, &n);
	while (m % n)
	{
		r = m % n;
		m = n;
		n = r;
	}
	printf("最大公约数是:%d\n", n);
	return 0;
}

结果展示:
在这里插入图片描述


4.打印1000年到2000年之间的闰年
闰年的判断条件有两个
1)能被4整除,不能被100整除是闰年
2)能被400整除是闰年

#include<stdio.h>
int main()
{
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
			printf("%d ", year);
	}
	return 0;
}

结果展示:
在这里插入图片描述


5.写一个代码:打印100 - 200之间的素数
素数:也叫做 “质数”,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,也就是不能再整除其他数。

#include<stdio.h>
//方法一:试除法       效率较低
int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i < 200; i++)
	{
		//试除法 从2到i-1试除
		int j = 0;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
				break;
		}
		if (j == i)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount = %d\n", count);
	return 0;
}

结果展示:
在这里插入图片描述
这种方式效率比较低,我们注意到如果一个数是素数,那么它可以分解成两个因数相乘的形式 如素数 n = a * b 且a, b中至少有一个数是小于或等于 开平方n的 sqrt(n), 那么我们在试除的时候就没有必要除到i - 1 只需要除到 开平方i就行,开平方函数sqrt(),头文件为math.h 代码优化后:

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i < 200; i++)
	{
		//试除法 从2到sqrt(i)试除
		int j = 0;
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
				break;
		}
		if (j > sqrt(i))
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount = %d\n", count);
	return 0;
}

6.编写程序数一下1到100的所有整数中出现多少个数字9
要判断出现数字9的情况有两种 x % 10 == 9, x / 10 == 9

#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 1; i <= 100; i++)
	{
		if ((i % 10) == 9)
			count++;
		if ((i / 10) == 9)
			count++;
	}
	printf("count = %d\n", count);
	return 0;
}

结果展示:
在这里插入图片描述

;原文链接:https://blog.csdn.net/QIYICat/article/details/115603341
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:原地置换法寻找数组中重复的数 下一篇:没有了

推荐图文


随机推荐