第一次培训的内容是C语言基础,按照“C语言引述”——“C语言基础知识及语法讲解” ——“国庆大礼包讲解”的顺序展开。同时本次培训“安装IDE & 配置环境(CodeBlocks)”的工作已经于培训前全部完成。下面按照培训顺序进行总结和扩充。
目录
一、C语言引述
二. C语言基础知识及语法讲解
三. 国庆大礼包讲解
四. 总结
一、C语言引述
1. 什么是编程?
- 一句话概括,“编程就是指导计算机执行任务的行为”。
- 许多事情都是有规律可寻的,这是我们能够编程解决问题的基础。
- 计算机需要从我们这里获得指令。它并不能理解我们人类的语言,我们需要整理归纳我们的思想,从具象的事物之中抽象出对象个体与相关的规律,来“教会”计算机思考与处理分析问题。
- 在程序中,我们用各种数据来表示各个对象个体,而那些提炼出的按照有限步骤解决某一类问题的方法即为算法。
- 编程换言之即程序设计。从某种意义上来说,“程序 = 数据结构 + 算法”。
2. C语言的地位如何?
- C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。当今使用C语言进行程序设计仍然是软件开发的一个重要方向。
- C语言可以大大缩短系统开发周期,便于程序的改进、拓充与移植。
- C语言效率非常高,一般只比汇编程序生成的目标代码效率低10%—20%。
3. 我们为什么选择学习编程?
- 物联网工程学院的所有专业都离不开扎实的编程能力:硬件控制、信号处理、软件开发……所有这些的基础都离不开编程。
- 随着科技的发展与人类社会的不断进步,计算机在人类社会中的地位将会越来越重要,编程会是人类未来的基本技能之一。
- 编程将人从繁琐的重复的劳动之中解放出来,解放了生产力,是现代社会的基石之一。
4. 怎样学习编程?
- 学习一门编程语言,这是编程的工具。
- 听课入门,重点是看书,看博客,看论文,想提高编程能力离不开自学。
- 多看大牛的代码,学习他们的优点,编程是有模板的。
- 多写代码,提高代码的质量,量变引起质变。
- 目标驱动。不论是完成一个软件项目还是竞赛获奖,目标会带给你方向。
- 工欲善其事,必先利其器。学习编程前你还需要一个好的开发环境(IDE)。
二. C语言基础知识及语法讲解
先看第一个小程序:
#include<stdio.h>
//头文件, 想要使用函数,必须先申明包含它的头文件
int main() //主函数main是程序入口
{
printf ("Hello World! \n"); //输出HelloWorld(格式化输出)
return 0; //返回值
}
别看人家短,人家就是一个正经的小程序啦!一个C程序必要的头文件、主函数、输入输出流、返回值都在这一个小小的程序中有所体现。
1. 基础知识介绍
1.1关于printf:
- printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。
- 格式化字符串包含三种对象,分别为:
(1)字符串常量;
(2)格式控制字符串:类型是格式控制字符串中的重中之重!
(3)转义字符:
接下来我们举个栗子介绍一下最简单的赋值语句:
int a = 3;
上面这个语句中,‘3’ 是常量。 ‘=’ 是运算符。‘a’是变量。
a = 3; 就是一个完整的表达式。
申明变量其实是向内存中申请一部分存储空间。
1.2语言常用的数据类型介绍:
1.3 C语言中的逻辑运算
- 逻辑与:&&
<表达式1> && <表达式2>
当且仅当 <表达式1> 以及 <表达式2> 全部为真的时候,整个逻辑表达式为真。
逻辑与运算的“短路”规则:
如果 <表达式1> 为假,<表达式2> 不会被执行
例如:
int a = 0;
int b = 2;
if(a && (b = 10))
printf(“啊啦啦啦啦\n”);
printf(“%d”, b);
输出的b即为2。
- 逻辑或:||
<表达式1> || <表达式2>
当且仅当 <表达式1> 和 <表达式2> 全部为假的时候,整个逻辑表达式为假。
逻辑或运算的“短路”规则:
如果 <表达式1> 为真,<表达式2> 不会被执行
例如:
int a = 1;
int b = 2;
if(a || (b = 10))
printf(“啊嘿嘿嘿嘿\n”);
printf(“%d”, b);
输出的b值仍然为2。
- 逻辑非:!
! <表达式>
当 <表达式> 为真的时候,!<表达式> 为假,
当 <表达式> 为假的时候,!<表达式> 为真;
逻辑变换:
!(<表达式1> && <表达式2>) 等价于
!<表达式1> || !<表达式2>
!(<表达式1> || <表达式2>) 等价于
!<表达式1> && !<表达式2>
2. 基础语句和语法介绍
2.1 if-else语句
if (条件表达式) {
......
} else if (条件表达式) {
......
} else if (条件表达式) {
......
} ......
else {
......
}
从上到下,依次对每个条件表达式进行判断,哪一个条件表达式为true,则执行哪一个对应的分支。至多只会执行一个分支。
2.2 switch语句
switch(表达式){
case 常量1:
<语句块1>
break;
case 常量2:
<语句块2>
break;
......
......
default:
<语句块n>
}
switch语句非常有用,但在使用时必须谨慎。只能针对基本数据类型中的某些类型使用switch,例如int、char等。对于其他类型,则必须使用if语句。并且case标签必须要是常量表达式。
2.3 循环相关语句
2.3.1 while()语句(第一种循环语句)
使用while()循环的注意事项:
(1)()中的表达式不可以为空,表达式为空不合法;
(2)表达式可以用非0代表逻辑值真(true),用0代表逻辑值假(false);
(3)循环体中必须有改变条件表达式状态的语句,否则成为死循环。
例如:
while(1){......} //是一个无限循环语句。
while(0){......} //是一个不会进行循环的语句。
2.3.2 for()语句(第二种循环语句)
函数表现形式:for(循环初始值;循环条件;循环参数)
(1)若循环初始值省略并且在for循环之前已经初始化过了,则不影响循环体的执行。
(2)若循环初始值、循环条件、循环参数三者都省略,则循环体会一直执行下去,变成一个死循环。
(3)for循环里面是分号不是逗号(初学者很容易犯错哦)。
常用for循环的写法:
for( i = 0; i < n; i++){
<代码块>
}//共循环n次,n的值依次位[0, 1, 2, …, n - 1]
for( i = 0; i != n; i++){
<代码块>
}//共循环n次,n的值依次位[0, 1, 2, …, n - 1]
for( i = n - 1; i >= 0; i--){
<代码块>
}//共循环n次,n的值依次位[n - 1, n - 2, …, 0]
2.3.3 continue-break循环控语句(结合for()和while()使用)
- break 语句
功能:跳出当前所在循环,用在循环语句和开关语句中,通常总是与if 语句联合使用,即满足一定条件时跳出循环。
当break 用于switch-case 中时,可使程序跳出switch-case 而执行switch-case 后面的语句。
当break 用于do-while、for、while 循环语句中时,可使程序终止循环而执行循环后面的语句。
例如:
for(i = 0; i <= 100; i++)
{
if(i == 1)
break; //跳出for语句
}
printf(“%d”, i);
输出结果为1
- continue语句
功能:结束本次循环,继续下次循环;
例如:
for(i = 0; i <= 100; i++)
{
if(i==1)
continue; //此时直接结束i == 1时的循环
printf(“%d”, i);
}
输出结果为0 2 3 4 … 100,即跳过了i==1时的printf()
三. 国庆大礼包讲解
国庆大礼包的题解已经打包发送至科协新生群,每道题的代码均以txt文本文件的形式保存,可以将代码直接复制进工程,编译运行。很多题目都提供了多种解法和思路,供同学们参考。其中有一些题目的解法由于涉及到本次培训还未讲解的知识点,所以本次现场培训时将其跳过,但这些题目的代码也在题解当中,同学们感兴趣的可以提前学习和探究。
现场培训时跳过的题目的题号如下:
基础9(常规法)(位运算法)【涉及数组、字符和字符串处理】
基础10(法一)【涉及数组、字符和字符串处理】
提高8(素数筛法)【涉及数组】
提高10(递归法)【涉及自定义函数、函数递归】
每道题的解法都不唯一,但不同的解法有优劣之分。同学们可以自己探索更好的解法,修改优化自己的程序。
四. 总结
本次培训的内容是C语言程序设计的基础内容,但这的确是迈出了编程路上的第一步。虽然是开始,但无论做任何事,打好基础都十分重要。学习过程中轻易退缩与急功近利都是不可取的。希望同学们能继续努力,认真学习消化所讲知识,结合课内学习,巩固基础,不断提升自己。良好的开端是成功的一半,同学们,继续加油吧!