初遇!C语言 —— 第一章 C语言概述

目录

前言

一、C语言程序的设计过程

二、第一个C语言程序

三、算法

1.算法的特征

2.算法的表示

(1)传统流程图

(2)N-S图(盒图)

四、C语言编程环境

小彩蛋

(1)爱心代码

(2)滚动字幕代码

总结


前言

        本篇收录于专栏《初遇!C语言》,该专栏将会持续更新。从本篇开始由浅到深带各位学习C语言的相关知识。该篇主要带领大家熟悉一下C语言的相关基础概念,以及所用到的编译器环境等。

        在本阶段的学习过程中,可能会涉及到暂未接触到的方法,望广大读者多多容纳,难懂的就先记于心中,再耐心消化。等到一定时候就自然能够理解明白了。在本系列专栏中若遇到不理解的问题,可以及时评论留言或私信,点出详细的问题,并说出自己的想法。问问题就要问到点子上。

        在正式学习C语言之前,这里回答一下大家普遍存在的困惑:

Q1:为什么要学习C语言?

A1:学习并掌握一门编程语言,可以促进日后自身的发展,锻炼自己的逻辑思维能力。我们知道在编写程序来实现相关功能时,要从多个方面思考,这是能够提升自己的多角度解决问题的能力的。

Q2:C语言与其他语言相比,有哪些优势?

A2:C语言是当今在国际上最为流行的高级程序设计语言。和其他高级语言相比,C语言对硬件的控制及能力和运算表达能力较强,且具有较高的可移植性,以及高效性。且C语言也算是其他语言的“鼻祖”,学好了C语言,也就自然能够学好其他的编程语言。

Q3:缺乏计算机的基础知识,英语也不是很好,能否学好C语言?

A3:对计算机不熟悉,可以从日后的学习中积累一些方法和技巧,现阶段只要能够熟练敲键盘即可。对于英语水平不高的来说,其实编写代码更重要的是逻辑思维能力,英语好也有着一定的优势,可以更快速的读懂某些语句的意思。但要知道,C语言中特定的关键字(标识符)也就那二十多个,理解这些单词的意思即可。重点还是在于解决问题的方案上。要学会思考学会尝试,在一步步的试错中,得到更好的解决方案。

Q4:如何才能更好地学习并掌握C语言?

A4:在学习C语言的理论知识之后,少不了动手实践的过程。每学习一节内容,应该主动去编译器内敲写代码并进行调试运行,以巩固自己所学的知识。有能力的同学可以去相关的学习网站去做一些题目。

这里给大家分享几个好用的学习网站:

力扣:leetcode.cn

炼码:www.lintcode.com

        希望上面的问答能够为大家带来一定的帮助。好了,现在让我们进入正题,学习C语言!


一、C语言程序的设计过程

        在设计C语言程序之前,我们要理清C语言的程序设计过程。

        下面用一个流程图来表示:

        应对一个问题,首先要对该问题进行问题分析与描述,即将问题抽象为“数学模型”。其次再通过所学的代码来实现,此步为解决问题的编写程序代码阶段。最后进行编译、运行与调试,来验证代码是否能够正确运行并得到满意的结果。

        其中.c、.obj、.exe文件都会在运行后由编译器自动生成。


二、第一个C语言程序

#include<stdio.h>
int main()
{
    printf("HelloWorld\n");
    return 0;
}

         让我们通过这个“著名”的“输出HelloWorld”的程序来基本了解C语言代码的组成。

        首先,C语言以函数为程序的基本单位。在这段代码中只有一个main()函数,这个它被称之为主函数。要明确一条:C语言规定必须用main作为主函数名,且其后的括号不可被省略,但可以为空。这就意味着C程序有且只有一个主函数,并且主函数作为程序的入口与出口(即从main函数开始,最后从main函数结束),且main函数在程序中的位置是任意的。

        从第一行开始读起。#include<stdio.h>是一条预处理命令,用“#”开头,末尾不加冒号“;”(include表示“包含”的意思),即表示包含stdio.h这个头文件。这个头文件由系统提供,内部包含有关输入输出函数的信息。

        stdio.h即标准输入输出库,全称为standard input & output。.h为头文件的后缀名

        此外,该include语句也可以写成 #include"stdio.h",将原来的一对尖括号改成双引号(要注意符号都是英文状态下输入)。这两句的不同之处在于:用双引号表示编译时,首先从项目当前路径搜索该头文件,如果没有找到,再去系统目录下搜索;而用尖括号表示直接到系统目录下搜索。故后者的优先指定范围更广。

        再看第二行,main()函数前面已经介绍过,在main()前面的int表示该主函数的数据类型是整型(当然也有别的类型,后期会讲到),int即英文单词integer的缩写。

       第三行与第六行的一对花括号,其内是函数体。左花括号表示函数体开始,右花括号表示函数体的结束,二者同时出现,不可缺一半少一半。在编写代码时,一定要检查括号是否一一对应,否则会出现程序编译错误。
        第四行与第五行的语句在花括号内,要注意:每一条语句都必须以英文分号“;”结束。printf()函数(print function)是典型的输出函数,表示在屏幕上打印出括号里的内容,将双引号里的内容原样输出。具体用法后面再做展开。return 0; 表示函数的返回值为0,这个记住即可,深层原理不在此阐述。


三、算法

        所谓算法,即解决问题的方法和步骤。要写出正确的程序,就必须有两个基本条件:①掌握一门计算机高级语言的语法;②掌握解决问题的方法和步骤。我们知道,对于同一件事情,有着不同的方法来解决,只是可能花费的时间和精力不同。

        另外,计算机语言只是一种工具。这就像数学一样,是为物理等其他科学做基础的。所以简单地掌握语言的语法是远远不够的,重要的是针对不同问题,如何制定出有效的解题方法和步骤的算法。

1.算法的特征

(1)可行性。每一个逻辑块必须由可以实现的语句来完成;

(2)确定性。算法中每个步骤都必须有明确定义,不可模棱两可或多义性;

(3)有穷性。算法必须在有限时间内完成,不能造成死循环;

(4)输入。一个算法有0个或多个输入

(5)输出。一个算法至少有1个输出,否则该算法是没有意义的。

2.算法的表示

(1)传统流程图

        作为最常用的表示算法流程的方法之一,各位应该十分的熟悉了。下面列举一些常用的流程图符号。以及特定的结构表示。

①顺序结构

②分支结构

 

③循环结构

1)当型循环结构

2)直到型循环结构

(2)N-S图(盒图)

①顺序结构

自上而下执行,执行完步骤1,再执行步骤2,直至执行到步骤n。

 ②分支结构

如果条件成立,则执行语句1,否则执行语句2。

③循环结构 

 1)当型循环结构

2)直到型循环结构

         N-S图有着框架清晰,可读性高的特点,所以一般用来在写出完整代码前,搭好思路的框架,可以方便阅读与理解。此外这三种模块常常会同时使用,像拼图一样按顺序拼在一块一块的下方。


四、C语言编程环境

        所谓“工欲善其事必先利其器”,在学习编写C语言程序前,应该搭建一个趁手的编译环境,这样才能让自己代码敲得又快又好,达到事半功倍的效果。

        现在编写C程序的编译器有很多种,常见的有Visual C++ 6.0、DevC++、Visual Studio、Clion等。

        对于初学者来说,前两个编译器应该是接触的最多的。本人现阶段使用的是Visual Studio 2022,故在后续的代码调试中,将主要使用该编译器为大家进行代码演示。当然Visual C++ 6.0与DevC++的功能也足以满足初学者的需求,功能也较为完善。

        关于Visual C++ 6.0和DevC++的安装包、安装方法及基础使用本人会另写一篇文章来专门说明。


小彩蛋

这给大家附送两个有趣的代码,感兴趣的同学们可以自己复制到编译器里,运行一遍看看吧!

(1)爱心代码

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


int main(int argc, char* argv[]) {
	float x, y, a;
	for (y = 1.5; y > -1.5; y -= 0.1) {
		for (x = -1.5; x < 1.5; x += 0.05) {
			a = x * x + y * y - 1;
			putchar(a * a * a - x * x * y * y * y <= 0.0 ? '*' : ' ');
		}
		system("color 0c");
		putchar('\n');
	}
	printf("祝愿各位一帆风顺\n");
	printf("前程似锦!\n");
	return 0;
}

(2)滚动字幕代码

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main() {
	int num[100] = { 0 };
	int i;
	while (1) {
		for (i = 0; i < 100; i++) {
			if (num[i] > 10) {
				Sleep(10);
				printf("%s", num[i] % 2 ? "祝各位一帆风顺" : "前程似锦");
				//printf里后面两个双引号内的文字可以替换
			}
			else
				printf("      ");
			if (num[i]-- < 0)
				num[i] = rand() % 20;
		}
		system("color 0E");
		//这里是设置文字的颜色(可以修改)
		//0A是绿色,0B是青色,0C是红色,0E是黄色,0F是白色
	}
	printf("\n");
    return 0;
}

总结

        本章至此就结束了,其中主要为大家介绍了C语言的基础知识。希望能通过这个系列带大家打开C语言的大门,吸引各位的兴趣,再一步一步地带领各位学习C语言,走上成功之路,登上胜利之巅。

        学习的过程是漫长的,这里即是开始。保持初心,一步一个脚印,学会C语言不再是难事。在学习之前一定要有兴趣,就如我写这篇文章一样,有个良好的开端,终能结下收获的果实。

        如果有发现错误, 或者有疑惑和建议的同学可以积极评论留言,本人会定期地查看和更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶光°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值