C语言上课教案.docx
《C语言上课教案.docx》由会员分享,可在线阅读,更多相关《C语言上课教案.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言上课教案.docx](https://file1.bdocx.com/fileroot1/2022-11/29/6d6221f4-f640-4372-814e-c1f7dddf952a/6d6221f4-f640-4372-814e-c1f7dddf952a1.gif)
C语言上课教案
第一课C语言入门
1.1什么是C语言
简单的说,C语言就是一门计算机编程语言,它的作用呢就是按照咱们的要求去控制计算机。
既然C语言能控制计算机,那么它到底能干什么呢?
大家想一下,在《骇客帝国》等美国电影中,经常会看到一些黑客对着电脑,框框一顿乱敲,就控制某个大楼或者某个飞机等;再如咱们身边的智能设备:
智能手机、智能手表、智能手环、智能路由等等,这些都是C语言可以搞定的。
说了那么多羡慕吧O(∩_∩)O哈哈~,我们可以简单的认为,如果想做到像上面描述的那样,咱们就可以使用C语言这门编程语言来完成咱们的心愿。
为了能尽快的认识C语言到底是什么样子的,请看示例HelloWord,这可是每本编程类书籍的第一个例子,然后运行看看大名鼎鼎的“你好世界”的效果。
#include
intmain()
{
printf("HelloWorld\n");
return0;
}
程序输出
HelloWorld
1.2HelloWord和学习建议
从众多研发工程师的角度来看,学好C语言其实是完全能够实现的,有以下几点需要给大家传授一下:
Ø从最简单的开始
Ø不要眼高手低
Ø每当写完一个程序,要对其进行理解
Ø坚持不懈,每天进步一点点,你的收获会很多
Ø刚开始学习C语言不要去搭建复杂的开发环境,比如VI、GCC
还记得上次说的HelloWord程序吗?
有同学可能是第一次学习C语言,那么首先要给大家讲一下HelloWord这个程序。
#include
这句话的意思是,包含一个文件这个文件的名字叫:
stdio.h,咱们可以简单的理解为用来辅助接下来C语言执行的
intmain()
如果咱们写好了一个C语言程序,比如说有1万行的代码量,那么这个程序执行的时候到底从哪一行开始执行能?
main就是程序在运行的时候,第一句要执行的语句;其实这个main是一个函数(函数后面咱们会讲到)。
{……}
在main()后面接下来的必须要有一个对花括号{},它的作用我们可以理解为:
一个范围,比如长江以北这就是个范围,在这个范围里面,即在{}里面输入咱们要具体执行的代码。
printf(“HelloWorld“);
它的作用是输出信息到咱们的终端(就是一个可以看得见的地方,比如咱们那个黑框)。
在printf的()中写什么,那么将来执行到这句话的时候终端就会出现什么,但要记住,要使用双引号””把要输出的信息包裹起来。
return0;
不知道大家有没有遇到过在windows中运行一个软件的时候,突然屏幕上弹出一个黑框上面写着error……其实这就是说刚刚运行的程序出现了问题,对吧;那么return和这些有什么关系呢?
是这样的,main函数中的这个return用来告诉系统刚刚的程序已经结束,只不过后面的数字0一般都代表着正常结束程序。
Ø现在自己输出一下自己的姓名:
#include
intmain()
{
//在下一行进行输入yourname
printf("yourname\n");
return0;
}
1.3完整的C语言程序长啥样
自己在电脑上学习C语言,需要建立.c文件和.h文件、然后对文件进行编译、调试、运行等。
需要说明的是咱们学习的重心应该放在学习C语言上,而不是花大量时间在建立C语言文件以及编译上,O(∩_∩)O是不是很高兴啊……,那么一个C语言程序到底长啥样呢?
看以下示例:
/*
*输入身高,计算标准体重
*成年:
[身高(cm)-100]×0.9=标准体重(kg)
*/
这里是注释
1.使用/*这里写注释内容*/
2.一般放在文件的开头用来说明本程序的代码意图
3.这里并不是必须的,但是最好加上,因为这样可以让其他的研发人员更能读懂程序
#include
使用include来包含头文件
1.stdio.h就是一个头文件
2.头文件的作用就是告诉程序可以使用哪些函数;scanf和printf是在stdio.h中说明的,所以咱们就需要在本C程序开头添加
3.#include这样类似的语句一般放在程序的开头
intmain()
{
intheight;
printf(“请输入身高:
\n”);
scanf(“%d”,&height);
if(height<=100){
printf(“输入的身高错误\n”);
return1;
}
printf(“当身高为:
%d(cm),理论标准身高为%f(kg)\n”,height,(height-100)*0.9);
return0;
}
程序运行后,提示从键盘输入一个整数作为人的身高,如果输入的身高小于或等于100cm,则在终端显示:
输入的身高错误;如果输入的身高大于100cm,程序根据公式:
身高减100,再乘以0.9计算标准体重,然后在终端显示。
例如当身高为:
185cm时候,在键盘输入185回车后,在屏幕显示:
当身高为:
185(cm),理论标准体重为76.500000(kg)。
1.4C语言中的一些习惯
为了从开始就培养大家良好的编程习惯,在这里呢为大家说几点开发中,咱们需要注意的地方。
所有的代码的编写要确保在英文输入法下面进行(没办法我也想输入中午……没办法啊,C语言不是咱们中国人发明的,其实还好了,咱们从小就学习英语,至少也认识26个字母吧,O(∩_∩)O~)。
一条语句的末尾由分号(;)组成,所以如果要编写语句的时候不要忘记添加。
intnum=23;
num=32+11;
一般情况下一条语句独立占用一行。
intmain()
{
printf(“HelloWorld.”);
return0;
}
定义变量或者函数的时候(当然了这个后面学习),给它们起个好的名字,即见名知意,比如:
Ønum一看就是和数量相关
Østunum就是学生的数量
这里需要给大家强调一下,关于命名是有一些规则的,请看下节“命名规则”。
1.5命名规则
在编程过程中养成良好的命名习惯是很有必要的。
在变量命名中,我们经常会遇到两个甚至更多的单词来联合表达命名规则的情况。
如何表现,展现什么样的风格是不少同学的疑问。
对于编程过程中的变量名称大小写问题,对于几乎所有的语言,大家都坚持所谓:
驼峰惯例。
它是按照让代码更优美、可读性更好、不易出错的原则来设定的。
一般有三种类型:
Ø小驼峰式命名法(lowercamelcase):
第一个单词以小写字母开始;第二个单词的首字母大写,例如:
myName、aDog等。
Ø大驼峰式命名法(uppercamelcase):
每一个单词的首字母都采用大写字母,例如:
FirstName、LastName等。
Ø下划线法:
在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词。
例如:
my_name、int_sutdent_number等。
这些方式都是可读性比较好的,编写过程中我们可以根据实际需要来使用不同的规则,保持前后一致性就可以了。
在后续的课程中我们使用“小驼峰式命名法”的规则,想想看如果按照“小驼峰式命名法”下列变量名应该如何修改?
命名规则就是一个编程习惯,希望在编程中,能够养成这样的好习惯。
1.6注释
注释的作用其实很重要,还记得初中时候学习文言文,很多容易忘记的词语咱们可以对其进行标记一下,比如“尔”的意思是你,这样当咱们在看到“尔”这个文言文汉字时,就很快能想起来了……
注释,就是为了让看代码的人能够很快的想明白这段代码的意思。
好了,现在请大家看下面这段代码是什么意思?
#include
intmain()
{
inti;
intnum=1;
for(i=1;i<=5;i++)
{
num=num*i;
}
printf(“%d”,num);
return0;
}
再来看看添加了注释后的程序,是不是很容易就能读懂了呢?
#include
/**********************
*这是带有注释的程序示例*
*版本V1.2*
************************/
intmain()
{
inti;
/*用来存储结果*/
intnum=1;//用来存储结果
/*下面的for用来完成5的阶乘的计算*/
for(i=1;i<=5;i++)
{
num=num*i;
}
/*使用printf来进行输出数据,%d的意思是把num按照十进制进行显示*/
printf(“%d”,num);
return0;
}
在C语言中,注释是使用/*开始,*/结束的,可以注释多行。
如果只需要注释一行,可以使用//为开始进行注释。
第二课变量和常量
2.1什么是变量
在C语言程序中,有时我们需要对一些数据求平均值,比如计算一个班计算机平均分数。
其实求平均值的原理大家应该都知道:
平均值=总数÷个数。
大家想一想如果想完成上面的要求,除了计算的原理之外还需要什么呢?
1.怎样保存每一个学生的分数?
2.怎样计算总分数?
3.怎样求平均值?
4.怎样像类似于输出HelloWorld一样把平均分数输出呢?
答:
1.在C语言中,要想把一些数据给存起来,那么咱们就需要一个所谓的空间,这个存放数据的空间就是“变量”。
就好像超市的菜篮子,变量就是用来装东西的,它有一定的大小,用之前要去拿过来,用完要还回去。
比如:
intA=33;那么A就是变量,intmySpace=123中mySpace就是变量(对于int是什么东西先不要考虑,一会咱们介绍)。
注意:
A=33的意思是给A这个变量赋值33,而不是把A给33,如果要给A赋值100,那么就是A=100;
2.接下来给几个变量进行求和。
想想我们在超市结账时候,是不是要把所有篮子进行过称?
对,为了把几个变量求和,那么只需要再定义一个变量,比如:
intsum;,然后用这个sum这个变量来保存变量A和变量B的和。
sum=A+B;(注意:
C语言中需要加上;用来代表这句话代码的结束)
3.在C语言中的加(+)减(-)乘(*)除(/)大家都用过,因此要计算平均值只需要使用/(除)即可。
average=sum/2;
4.想一下HelloWorld打印的时候咱们用了一个printf这样的东东,接下来还是一样的,要想把sum/2的值打印出来,需要使用printf来完成,但是要修改一下。
printf(“%d”,sum/2);
而不是printf(“sum/2”);
Ø练习:
请根据注释中的提示补全代码,完成对计算机平均分的输出。
#include
intmain()
{
intsum;
//请定义int类型变量A,并且赋值为12
//请定义int类型变量B,并且赋值为22
//请在这里把A+B的和赋值给sum
printf("%d\n",sum/2);
return0;
}
答案:
#include
intmain()
{
intsum;
//请定义int类型变量A,并且赋值为12
intA=12;
//请定义int类型变量B,并且赋值为22
intB=22;
//请在这里把A+B的和赋值给sum
sum=A+B;
printf("%d\n",sum/2);
return0;
}
2.2什么是常量
上节说的是“变量”,这节咱们学习一下新的知识“常量”。
所谓的常量就是说在程序运行过程中,自始至终都不会变化的量叫做常量。
比如:
A=33;
B=”helloworld”;
这里的33和”HelloWorld”就是所谓的常量。
思考一个问题,如果有如下操作:
33=A;
请问程序能正常执行吗?
33是常量,A是变量,变量是可以变化的,但是常量不能变化,所以上面的语句是错误的。
这是很多刚开始学习C语言的同学常常会犯的错误。
切记
变量=常量
意识是说,把常量赋值给变量。
运行下面的代码
#include
intmain()
{
intA=0;
//33=A;这是错误的
A=33;
printf("A=%d\n",A);
return0;
}
终端显示结果
A=33
2.3变量定义
结合上堂课,大家想一下:
超市里存放东西的篮子是不是有很多不一样,有蓝色的、红色的、大的、小的、带轮子的、能放Baby的。
。
。
其实在C语言中,为了更加充分利用内存空间,我们把变量的大小和主要的作用进行划分,从大小的角度上来讲(32bit平台):
char占1Byte
short占2Byte
int占4Byte
float占4Byte
double占8Byte
注意:
1Byte即1个字节,1Byte=8bit(比特),1bit有2种情况1或者0,所以1Byte能有2的8次方种情况,即1Byte能够存放数值的范围是0~255,至于数据在内存中具体的存储咱们在后面专门用一章来进行讲解。
从作用的角度上讲:
char——除了能够保存数值之外还可以保存字符,比如字母A
short和int——保存数值,比如123
float和double——保存小数数值,比如3.14
现在我们一起来定义变量吧
charA=11;
shortB=22;
intC=33;
floatD=44.123;
doubleE=55.123456;
大家有没有发现刚刚给大家的示例中没有对负数的定义,那么怎么定义一个负数呢?
上面提到的5种变量类型,其实每一种又分为有符号和无符号,这两兄弟有是干什么的呢?
有符号即可以保存正负数
无符号即只能保存正数
表示方法:
有符号,signedchar或者short、int、float、double
无符号:
unsignedchar或者short、int、float、double
大家有没有发现之前咱们示例中没有signed也是可以的,这又是怎么回事呢?
以int类型为例:
intA=33;等价于signedintA=33;
即如果变量类型前面没有写signed或者unsigned,那么默认是signed,即有符号。
只要有符号那么就肯定是可以保存负数的变量啦。
到现在为止我们都在谈论变量类型的问题,那么变量的名字该怎样定义呢?
在C语言中变量的名字由3部分组成:
英文字符abc…z或者ABC…Z
数字0123456789
下划线_
并且数字不能开头,请看下面的示例
正确
mengma
mengma123
mengma_123
_123
M123
A
b
错误
123
123mengma
123_mengma
变量
-hello
*你好
小结:
变量的名字必须是由英文字母、数字、下划线组成,而且数字不能开头。
Ø练习:
请按照上面讲过的变量定义规则,定义变量,注意变量的名字命名方式为小驼峰
//num是有符号char类型,其值为-123
//weight是无符号short类型,其值为11
//score是有符号int类型,其值为-188
signedintscore=-188;
//phoneNum是无符号int类型,其值为188
unsignedintphoneNum=188
//carNum是有符号float类型,其值为-13.1
signedfloatscore=-13.1;
//average是无符号float类型,其值为13.1
unsignedfloataverage=13.1
//likeNum是有符号double类型,其值为-123.22
signeddoublescore=-123.22;
//mengmaId是无符号double类型,其值为123.22
unsigneddoublemengmaId=123.22;
答案
signedcharnum=-123;
unsignedshortweight=11;
2.4变量的输入——scanf
咱们在银行ATM机器前取钱时,肯定需要输入密码,对不?
那么,怎么才能让程序知道咱们刚刚输入的是什么呢?
O(∩_∩)O想一下上面的两个问题,大家应该知道了,如果要完成ATM机取钱这件事,需要先从键盘输入一个数据,然后用一个变量来保存,是不是很好理解啊!
在C语言中,获取键盘输入的数据方法是采用scanf函数(至于什么是函数,咱们后面章节中讲解),那么这个scanf怎么用呢?
给大家展示一下:
intmyScore;
scanf(“%d”,&myScore);
注意:
scanf中的%d指的是给myScore变量输入数据的时候是按照整型类型存放的
&是取地址符,&myScore可以理解为myScore这个变量在内存中的地址
练习:
从键盘输入自己的计算机成绩、自己的年龄。
#include
intmain()
{
intmyAge;
floatmyScore;
//通过scanf获取整型的数据,并且存放到myAge变量中
//通过scanf获取浮点型的数据,并且存放到myScore变量中
printf("ageis%d,scoreis%f\n",myAge,myScore);
}
scanf(“%d”,&myAge);
scanf(“%f”,&myScore);
Ø练习1:
我今年几岁了?
编写一个C程序,通过scanf获取整型的数据【我的年龄】,将我的年龄输出到控制台
样本输入:
25
样本输出:
我今年25岁了
Ø练习2:
编写一个程序,通过scanf获取两个整型的数据【我的年龄,妈妈的年龄】,将我的年龄和妈妈的年龄输出到控制台
样本输入:
2552
样本输出:
我今年25岁了妈妈今年52岁了
2.5变量的输出——printf
上节课中,咱们说到了变量的输入,其实就是从键盘中输入一个数据,用一个变量来保存,那么什么是变量的输出呢?
大家可以试想一下,就是把一个变量打印出来对不对,是不是想到了printf()呢?
那么printf到底是个什么呢?
printf其实它是一个函数(函数后面会讲)
用来进行输出信息到屏幕上,主要用来打印数据信息和提示信息
不仅可以打印整数、小数、还可以打印英文字母。
。
。
使用printf(“%d”,myScore);其中的%d就是一种输出数据的格式,比如你是想按照整数输出还是小数输出,这里给大家列举几种常见的输出数据的格式:
%d以十进制显示
%f以小数显示
%s打印字符串
%c以字符的形式显示(只显示一个字符,比如A)
Ø练习:
在%后添加合适的字母完成输出
#include
intmain()
{
printf("%d\n",3);
printf("%f\n",3.14);
printf("%s\n","HelloMengma");
printf("%c\n",'M');
return0;
}
2.6综合练习
作为本章的总结,咱们以一个练习把之前所讲到的与变量相关的知识点进行巩固。
要求:
1.使用scanf和printf函数来为变量进行赋值和输出;并且打印相关的提示信息
2.提示用户输入本月工资(以5000元至8000之间为例)
3.获取本月工资数
4.计算本月的实际收入
5.纳税额=(工资薪金所得–3500)×10%-105
答案:
#include
intmain()
{
inttax;
intmoney;
//printf("请输入工资(5000至8000元)\n");
//获取工资
scanf("%d",&money);
//计算计税额
tax=(money-3500)*0.1-105;
//计算实际工资
money=money-tax;
//打印工资
printf("%d\n",money);
return0;
}
Ø另外一个练习
编写一个C程序,接收输入正方形的边长(整数),打印正方形的面积。
样本输入:
2
样本输出:
4
答案:
#include
intmain()
{
inta,b;
scanf("%d",&a);
b=a*a;
printf("%d",b);
return0;
}
Ø最后一个练习
编写一个c程序,通过scanf获取3个整型的数据【我的年龄,妈妈的年龄,爸爸的年龄】,将我家的平均年龄输出到控制台。
样本输入:
255250
样本输出:
我家的平均年龄42
答案:
#include
intmain()
{
inta,b,c;
intd;
scanf("%d%d%d",&a,&b,&c);
d=(a+b+c)/3;
printf("%d",d);
return0;
}
注意:
连续输入3个用空格隔开的整数时候,%d%d%d之间加空格和不加空格这里效果是一样的。
第三课控制语句
3.1控制语句学习说明
控制语句从其名字我们能够想到,就是在C语言中起到控制的作用的一些语句,比如if、if-else、for、switch等等前面咱们学习了变量、常量、scanf、printf等,其基本的方式是从程序的上面往下面一次执行,其实在C语言中有3种程序执行的模式:
顺序、循环、选择。
顺序执行(从上往下执行,这就是顺序执行)
printf(“我是1号\n”);
printf(“我是2号\n”);
循环执行(即对模块代码执行多次)
while(i<=3)
{
printf(“我是%d号\n”,i);
}
选择执行(根据实际的判断条件,来进行有选择的执行代码)
if(age>=30)
{
printf(“成年人”);
}
else
{
printf(“未成年人”);
}
Ø本节练习:
运行下面的程序,分析程序的运行流程。
#include
intmain()
{
inti=1;
intage=19;
//顺序执行
printf("我是1号\n");
printf("我是2号\n");
//循环执行
while(i<=3)
{
printf("我是%d号\n",i);
i++;
}
//选择执行
if(age>=18)
{
printf("成年人\n");
}
else
{
printf("未成年人\n");
}
return0;
}
3.2基本的if语句
初次见到if语句,大家一定想知道它有什么用对不?
咱们可以打个比方,大家应该去过网吧对吗?
想想看正规的网吧如果看到未成年人是不让其上网的对吧。
。
。
if就是在程序中对某些事情的判断,比如:
if(A
{//这里写其他语句}
在C语言程序开发过程中经常需要来对某些数据进行判断