此笔记是几年前为了本人考试而学而写,今日回首感慨良多,便把尘封多年在旧电脑中的学习笔记翻出来分享给大家
此笔记参考书籍:
根据前九章内容主要知识点进行梳理
如果有什么要补充或者修改的,欢迎下方评论区留言。
1份赞许 = 100分的认可,如果有帮助你,请动动手指点个赞👍 支持一下吧 ~
分享你所想!欢迎订阅关注我的博客 ,期待我们的思想碰撞!
转载内容请标明原文链接
笔记内容均为个人记录,小部分内容借鉴了优秀文章/笔记(均已标明原文链接),如有雷同未标明原文链接,请联系我审核!
目录
第一章.C语言概述
1.1 C语言概述
1.1.1 什么是计算机程序和计算机语言
计算机程序定义:所谓程序就说一组计算机能识别并执行的指令
计算机语言定义:人和计算机交流的语言--指令
-
计算机语言经历了三个阶段
-
机器语言
-
计算机能直接识别和接受的二进制代码称为机器指令
计算机工作基于二进制,从根本上来说,计算机只能接收由0和1组成的指令
-
机器语言难学,难写,难记,难检查,难修改
-
-
符号语言
-
一条符号语言的指令对应转换一条机器指令,称之为符号汇编语言或者汇编语言
-
比机器语言好记一些,通用性低
-
-
高级语言
-
高级语言接近于人习惯使用的自然语言和数学语言
-
普及性高,通用性高
-
高级语言经历了三个发展阶段
-
非结构化语言
-
代码随意,风格随意,难以维护
-
-
结构化语言
-
为了解决非结构化语言提出的方法,程序必须有结构化,不允许随意更改
-
-
面向对象语言
-
c++,c#,Java,VB
-
-
-
-
1.2 C语言的特点
(1)语言简洁、紧凑、使用方便灵活
(2)运算符丰富
(3)数据类型丰富
(4)具有结构化的控制语句(if else语句、while语句、switch语句)
(5)语法限制不太严格,程序设计自由度更大
(6)可移植性好,效率高
1.3 我的第一个C语言程序
1.3.1 输出第一个c语言程序
#include <stdio.h> //这是预处理指令,也就是头文件
int main() //这是主函数,由于定义的是int类型所以在代码体里边还需要定义一个返回值
{
/* 输出*/
printf("这是我的第一个c \n"); //\n是占位符
return 0; //主函数的返回值
}
1.3.2 C语言赋值运算
定义两个数,把两个数相加的结果输出
/**
函数赋运算程序
这是我的第一个c语言程序
*/
#include <stdio.h> //这里是头文件,里边规范了相关结构化
int main() //主函数,一个源文件只能有一个主函数
{
int a,b,sum; //定义了三个整形int类型的变量
a=1314; //给变量赋值1314
b=520; //给变量赋值250
sum=a+b; //把赋值的a和b相加,结果给到sum整型变量
printf("sum is %d\n",sum); //输出,%d是占位符,sum输出到占位符里边去,\n是换行
return 0; //因为主函数是int类型所以必须要有返回值
}
1.3.3 函数比较大小运算
使用max函数给输入的两个数比较大小
/**
max函数比较大小
这是我的第一个c语言程序
*/
#include <stdio.h> //这里是头文件
int main() //这里是主函数
{
int max(int x,int y); //定义了一个max的函数,里边的参数是整数型int类型
int a,b,c; //这里定义开了三个整数int类型的变量
scanf("%d,%d",&a,&b); //输入函数scanf ,输入了整数类型a和b,用作了等会的最大值比较
c=max(a,b); //之前不是定义了一个max的最大值函数吗?我们还需要跳转到max函数里边去比较完了,把最大值给到c整数类型
printf("max=%d\n",c); //最后输出max最大值是哪个
return 0 ; //给到返回值
}
int max(int x,int y) //从c=max(a,b); 跳到这来后进行比较
{
int z; //再max函数里边定义了整数类型z
if (x>y) //如果输入的x>y,就把x的值=z,换句话说就是 如果x大于y就把x的值放到z
{
z=x;
}else{ //否则就把y的值放到z来
z=y;
}
return (z); //把值返回给max函数,然后max把这个返回给c整数类型
}
1.4 C程序的基本构件——函数。
1、一个函数由函数首部和函数体两部分构成。
Ø 函数首部一般包括函数类型、函数名、函数参数等。
Ø 函数体一般包括声明部分和执行部分。其中:在声明部分中定义所用到的变量;执行部分则由若干个语句组成。
3、C程序只有一个main函数,且总是从main函数开始执行。
4、C语言语句必须以“;”结束。
5、用/* */作为注释。
6、C编译器一般自顶向下顺序编译C源程序,如果被调函数定义在主调函数之后位置时,要在主调函数前,给出被调函数的原型说明。以便编译器在编译被调函数的调用语句时,对调用语句进行参数检查。
如果不进行原型说明,则无法通过编译检查。
原型说明:类型说明 函数名(参数类型,参数类型,……)
7、头文件——头文件包含了C语言的标准函数库的原型说明。
C语言通过使用#include <>预处理命令,将库函数的原型说明插入到源文件中。
1.5 C程序上机步骤17
1、编辑源文件 .c;
2、编译成目标文件.obj;
3、连接——将目标程序和库函数及其他目标程序连接起来,生产可执行文件,文件扩展名为.exe;
4、执行。
课后习题:
1.什么是程序?什么是程序设计?
答,(1)程序是可在计算机上运行的一组指令,程序是由一组指令或者一行指令组成,通过指令编译成计算机可识别的语言,进行运行。
(2)程序设计是在计算机上对相关指令进行统一化,结构化,组成功能不同的程序
2.为什么需要计算机语言?高级语言有哪些特点?
答,(1)人与人需要沟通,动物于动物也需要沟通,有语言,那么我们人类于计算机也需要语言,让机器执行我们的指令。
(2)高级语言的特点:
-
语言丰富如符号语言、数字类型丰富
-
代码紧凑,C语言的代码都很紧凑小型,简洁
-
可移植性好
-
代码具有结构化如(if eles,while,switch等等)
-
语言控制自由,设计程序时更方便
3.正确理解一下名词及其含义:
(1)源程序,目标程序,可执行程序
(2)程序编辑,程序编译,程序连接
(3)程序,程序模块,程序文件
(4)函数,主函数,被调用函数,库函数
(5)程序调试,程序测试
4.编写一个C程序,运行时输出
我的第一个c
#include <stdio.h> //这是预处理指令,也就是头文件
int main() //这是主函数,由于定义的是int类型所以在代码体里边还需要定义一个返回值
{
/* 输出*/
printf("这是我的第一个c \n"); //\n是占位符
return 0; //主函数的返回值
}
5.编写一个C程序,运行时输出以下图形(我超前学习使用了for循环,这里只需要死输出图形即可)
/*
第一章的课后习题
输出以下图形:
*****
*****
*****
*****
解题思路:
可以看到*号是逐渐向右移的,也就是说*号前面的空格是逐渐递增的,每一次递增空格就把*号向右挤一个占位符
那么我们是不是可以把空格递增写出来?
然后把*号跟着递增的空格输出就行了?
第一步给定一个循环范围,定义第一层for循环
第二步递增输出空格符号
第三步固定5个*跟随着空格符输出
*/
#include <stdio.h>
void main()
{
//第一步给定一个循环范围,定义第一层for循环,因为整个循环有五次
for (int i = 1; i <= 5; i++)
{
printf("\n"); //每输出一次循环就换一行
//因为要同时输出空格符和*所以这里需要用到两个for循环进行输出
//第二步递增输出空格符号
for (int j = 1; j <= i; j++)
{
printf(" ");
}
//第三步固定5个*跟随着空格符输出
for (int k = 0; k <= 5; k++)
{
printf("*");
}
}
}
6.编写一个c程序,输入abc并输出最大值
/*
编写一个c程序,输入abc并输出最大值
*/
#include <stdio.h>
void main()
{
int max(int x,int y,int k);
int a,b,c,max2;
printf("请输入三个数并用逗号隔开:");
scanf("%d,%d,%d\n",&a,&b,&c);
max2=max(a,b,c);
printf("最大值是: %d\n",max2);
}
int max(int x,int y,int k)
{
int e;
if (x > y)
{
if (x>k)
{
e=x;
}else{
e=k;
}
}else if (y>k)
{
e=y;
/* code */
}else
{
e=k;
}
return (e);
}
第二章.算法
2.1 程序=算法+数据结构
-
数据结构的定义:对数据的描述。
-
在程序中指定要用到哪些数据,以及这些数据的类型和数据的组织的形式。
-
-
算法的定义:对操作的描述。
-
即要求计算机对操作进行的步骤。
-
-
算法——指为求解某一问题而采用的具体方法和步骤。
2.2 算法的五大特性
-
有穷性:一个算法的操作不应该是无限的,或者说运行1万年的,这些都不符合常理,算法的操作应该是在我们常理范围内
-
确定性:算法的每一个步骤都是确定的,而不是摸棱两可的,比如:我们要告诉计算机,张三吃饭就不能定义算法为他今天吃饭了,他是谁?是张三嘛?吃什么东西了?这是不严谨的
-
有多个输入或者零个输入
-
有一个或者多个输出
-
有效的,算法应该在每一个步骤都能有效的执行
2.3 怎么表示一个算法
常用的方法有:
2.3.1 自然语言
-
自然语言就是人们常用的语言来表示算法,通俗易懂,但是文字冗长,容易出现歧义
2.3.2 传统流程图
-
用图形表示算法,直观形象,易于理解。
2.3.3 结构化流程图
-
顺序结构
-
即执行完第一步后必须执行规定的下一步
-
-
选择结构:此结构必定包含一个判断框,根据给定的条件是否成立从而选取进行哪一部分
-
循环结构:又称重复结构,即反复执行某一部分的操作
-
有两类循环结构
-
当型循环结构:给定一个判断条件,执行算法必须经过判断条件,通过就一直循环判断,一直到不通过为止
-