C语言程序设计基础教程.docx
《C语言程序设计基础教程.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础教程.docx(51页珍藏版)》请在冰点文库上搜索。
C语言程序设计基础教程
C语言程序设计
谢利东
绪论
一、课程简介
课程内容:
C语言程序设计基础知识
适用对象:
程序设计初学者
二、课程目标
1、了解程序设计的相关知识
2、掌握C编程
3、理解程序设计语言的基本构成要素
4、掌握算法设计
第01讲C语言概述
一、程序设计语言的发展
1、机器语言:
是唯一能被计算机直接解释和执行的语言
2、汇编语言:
与机器语言相似,但加入了助记符Adda,ba+b
3、面向过程的语言:
自助游,需理解细节;Basic、C
4、面向对象的语言:
找旅行社,无需理解细节;C++、Java、C#
二、C语言简介
三、编写实例:
Hello
main()
{
printf(“Hello,C!
”);
}
四、在Turboc中编写运行C程序的步骤
1、启动TC
2、执行Alt+F,进入File菜单,执行New,新建源文件
3、输入代码并保存——编辑
执行Alt+F,进入File菜单,执行Save,保存源文件
4、执行Alt+C,进入Compile菜单,执行“CompiletoOBJ”
若代码有错,需纠错——编译
5、
Ctrl+F9
执行Alt+C,进入Compile菜单,执行“MakeEXEFile”
若代码有错,需纠错——连接
6、执行Alt+R,进入Run菜单,执行“Run”——执行
7、执行Alt+F5,查看运行结果,查看完后按下Enter,返回编辑环境
说明:
(1)编写C程序的步骤:
P4
(2)实际运行中,可通过快捷键简化一些操作
五、C程序的基本构成
包含头文件,即函数库
#include“*.h”
main()
{
……/*注释*/
代码
……
}
Main函数,所有C程序必须有且只能有一个main函数
第02讲基本数据类型
一、数据类型简介
1、什么是数据类型?
对数据的“抽象”12、13、45、1.2、1.56、0.4e6、RuiLi、DaLi
2、为什么要有数据类型
20040102可以代表学号,属于字符
可以代表整数,属于数值
可以代表日期,属于日期时间
3、C语言中有哪些数据类型?
P16
4、基本数据类型
数值型、字符型、枚举型
二、变量和常量
1、变量:
程序运行期间,值可能改变的量(Variation)
2、常量:
程序运行期间,值不会改变的量(Const)
例如:
计算机出10道加法练习题
形式:
7+5=?
、8+9=?
第1个加数加号第2个加数等号
op1+op2=result
第1次:
op1=6,op2=7:
6+7
第2次:
op1=5,op2=8:
5+8
……
控制题目数量:
OPNUM=10
3、常量类型
符号常量:
通过#define定义的常量
字面常量(直接常量):
与变量相似,字面常理有整型、实型、字符型
3.14、3、RuiLi
三、整型类型
1、整型常量
形如3、4、67、890、5632的数据,可以赋给整型变量
2、整型变量
(1)短整型(short)
声明:
shorta;
声明一个变量的格式:
“数据类型变量名;”
范围:
占16位,范围为-32768—32767
(2)整型(int)
声明:
inta;
范围:
占16位,范围为-32768—32767
(3)长整型(long)
声明:
longa;
范围:
占32位,范围为-2147483648——2147483647
3、
Main函数
实例练习1
main()
声明3个整型变量,a、b、sum
{
让a的值等于312
inta,b,sum;
让b的值等于789
a=312;
计算a加b的结果
b=789;
sum=a+b;
将结果显示到屏幕上
printf(“Thesumofaaddbis:
%d\n”,sum);
}
4、实例练习2——对上例的改进
main()
{
inta,b,sum;-----------------声明整型变量a,b,sum
printf(“Pleaseinputtwointegers(aandb):
\n”);----------------提示输入两个整数
scanf(“%d,%d”,&a,&b);---------要求输入两个整数,分别给a、b,两数间用逗号隔开,例如3,5
sum=a+b;-------------计算a、b之和
printf(“Sum=%d\n”,sum);-----------将结果输出到屏幕上
}
四、实型类型
1、实型常量
形如1.2、0.5、0.0023、1.0、2.0的数据,可以赋给实型变量
2、实型变量
(1)单精度(float)
声明:
floata;
范围:
占32位,-3.4*10-38—3.4*1038,6位精度
(2)双精度(double)
声明:
doublea;
范围:
占64位,-1.7*10-308—1.7*10308,16位精度
3、实型常量的表示
十进制小数:
如.123、123.、0.123、123.0、0.0
指数形式(规范化):
1.23e6或1.23E6——1.23*106
0.123e7或0.123E7非规范化
12.3e5或12.3E5非规范化
4、实例练习——输入3个数(整数或小数均可),求平均
分析:
输入的3个数可以是整数,也可是小数,故只能声明为实型
整数:
1.0
代码:
main()
{
floatx1,x2,x3,average;-------------------声明4个实型变量,分别输入的3个数和平均值
printf(“Pleaseinputthreefloatdata:
\n”);-----------提示输入3个实型数据
scanf(“%f,%f,%f”,&x1,&x2,&x3);------输入3个实型数据,分别给x1、x2、x3,逗号隔开
average=(x1+x2+x3)/3;-------求平均值
printf(“Average=%f\n”,average);--------输出结果
}
五、字符型
1、字符常量
表示:
’x’(用单引号,不能是双引号;只能有一个字符)
例如:
’a’、’b’表示字符常量a和b
转义字符:
系统定义,有特殊含义的字符
\n——换行;\b——退格,前移一列
\t——下跳一制表位,后移8列
2、字符串常量
表示:
”adog”(用双引号,不能用单引号;可以放多个字符)
例如:
”adog”表示字符串adog,由5个字符组成
3、字符变量
声明:
charc;
注意:
一个字符变量只能存放一个字符常量,即
c=’a’,正确;
c=”adog”,错误
4、实例1——字符常量及转义字符的使用
main()
{
printf(“\n\n”);--------------将当前屏幕换行2次,以方便查看结果
printf(“nobreak:
adog”);------------不加\n的效果
printf(“\n”);------------换行,以便比较结果
printf(“abreak:
a\ndog”);------加\n的效果
printf(“\n”);------------换行,以便比较结果
printf(“noreback:
adog”);-------不加\b的效果
printf(“\n”);------------换行,以便比较结果
printf(“areback:
a\bdog”);-------加\b的效果
printf(“\n”);------------换行,以便比较结果
printf(“atab:
a\tdog”)-----------------加\t的效果
}
5、实例2——字符变量的使用
main()
{
charc;--------------声明字符变量c
c=’a’;--------------c赋值为’a’
printf(“\ncharc=%c”,c);----------将变量c以字符变量的形式输出,结果应为a
printf(“\ncharc=%d”,c)-----------将变量c以整型变量的形式输出,结果为97
c=c+1;
printf(“\nchar(c+1)=%c”,c);----将变量c以字符变量的形式输出,结果应为b
printf(“\nchar(c+1)=%d”,c);-----------将变量c以整型变量的形式输出,结果为98
}
第03讲运算符
一、运算符简介
1、什么是运算符
表示运算形式的符号称为运算符
如:
1+2、2*3、6/8、7%2
对数据的加工称为运算
2、C语言中有哪些运算符?
P29
在C语言中共有13类运算符,约有45个
二、算术运算符
1、算术运算符有:
+、-、*(shift+8)、/(除)、%(求余数)
2、运算规则
(1)优先级:
*、/、%优先级为3、
+、-、优先级为4
(2)结合性:
自左至右
2+6*7-8/2+9%5
3、实例练习1
main()
{
inta,b,m,f,n;------------------a、b为输入的整数m=a*b、f=a/b、n=a%b
printf(“Pleaseinputtwointegers(aandb):
\n”);--------提示输入整数
scanf(”%d,%d”,&a,&b);-----------输入,形式为5,3
m=a*b;------------*运算结果为15
f=a/b;-----------/运算结果为1
n=a%b;-----------%运算结果为2
printf(“m=a*b=%d\n”,m);-----------输出m
printf(“f=a/b=%d\n”,f);-----------输出f
printf(“n=amodb=%d\n”,n);-----------输出n
getch();---------Win-TC额外要求,查看结果
}
对/和%的理解:
/:
结果与承载变量的类型相关
inta,b,f;
f=a/b;因为承载结果的变量f是整型,故结果都是整数,不带有小数
如a=3、b=5,则f=3/5=0,结果为0,不是0.6
如果想让除的结果为小数,则需要把f声明为float型
floata,b,f;
f=a/b;如a=3.0,b=5.0,则f=3.0/5.0,结果为0.6
%:
求余,求余运算要求两侧的数据类型必须是整型(int)
inta,b,f;
f=a%b;如a=5,b=3,则f=5%3=2商1余2
如a=3,b=5,则f=3%5=3商0余3
floata,b,f;
f=a%b;编译出错
4、实例2——除运算练习
main()
{
inta,b;
intf1;
floatf2;
printf("Pleaseinputtwointegers:
(aandb):
\n");
scanf("%d,%d",&a,&b);
f1=a/b;
floatc,d;
c=(float)a;
d=(float)b;
f2=c/d;
printf("intf1=a/b=%d\n",f1);
printf("intf2=a/b=%f\n",f2);
getch();
}
5、实例3——求余运算练习
main()
{
inta,b,f;
printf("Pleaseinputtwointegers(aandb):
\n");
scanf("%d,%d",&a,&b);
f=a%b;
printf("f=%d",f);
getch();
}
三、关系运算符
1、关系运算符:
>(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)、==(等于)、
!
=(不等于)
2、运算规则:
优先级:
均为6,比算术运算符低
结合性:
自左至右
3、关系运算的结果:
关系运算只会有两种结果:
真(成立)、假(不成立),
编程时可用1代表真,0代表假
例如:
a>=b,若a=4,b=3则表达式结果为真,即值为1
若a=3,b=4则表达式结果为假,即值为0
4、对关系运算的几点理解
(1)a≤x≤b:
不能表达为:
a<=x<=b,只能表达为:
a<=x&&x<=b
(2)9>1>=6>8>4:
数学中是错误的,而C程序设计中是对的
9>1结果为1,表达式变为:
1>=6>8>4
1>=6结果为0,表达式变为:
0>8>4
1>8结果为0,表达式变为:
0>4
0>4结果为0
5、实例1
main()
{
inta,b,result;----------------声明整型变量,result用来承接a、b运算的结果
printf(“Pleaseinputtwointegers(aandb):
\n”);---------------提示输入两整数
scanf(“%d,%d”,&a,&b);---------接受输入分别给变量a、b,输入形式为3,4
result=(a>b);--------a>b运算
printf(“result=(a>b)=%d\n”,result);-------------输出结果
result=(a
printf(“result=(a
result=(a==b);------------a==b运算
printf(“result=(a==b)=%d\n”,result);-------------输出结果
result=(a!
=b)-----------a!
=b运算
printf(“result=(a!
=b)=%d\n”,result);-------------输出结果
}
四、逻辑运算符
1、逻辑运算符:
&&(与运算):
a&&b——a=1、b=1,表达式为真,结果为1并且
a=1、b=0,表达式为假,结果为0
a=0、b=1,表达式为假,结果为0
a=0、b=0,表达式为假,结果为0
||(或运算):
a||b——a=1、b=1,表达式为真,结果为1或
a=1、b=0,表达式为真,结果为1
a=0、b=1,表达式为真,结果为1
a=0、b=0,表达式为假,结果为0
!
(非运算):
!
a——a=1,表达为假,结果为0否
a=0,表达式为真,结果为1
例:
(4>6)&&(7>3):
0&&1,表达式结果为0
(4>6)||(7>3):
0||1,表达式结果为1
!
(4>6):
!
0,表式结果为1
2、运算规则
优先级:
!
优先级为2(高于算术运算、关系运算)
&&、||优先级为8(低于算术运算、关系运算)
结合性:
自左至右
3、实例
main()
{
intresult;
result=!
(1<3)||(2<5);
printf(“result=!
(1<3)||(2<5)=%d\n”,result);
result=!
(4<=6)&&(3<=7);
printf(“result=!
(4<=6)&&(3<=7)=%d\n”,result);
}
理解:
result=!
(1<3)||(2<5);result=!
0||0;result=1||0;result=1;
result=!
(4<=6)&&(3<=7);result=!
1&&1;result=0&&1;result=0;
五、自加、自减运算符
1、自加、自减运算符
++、--
前缀:
++i、--i:
先增减后引用
后缀:
i++、i--:
先引用后增减
2、运算规则:
优先级:
均为2
结合性:
自右至左
3、实例
main()
{
inta,b,x1,y1,x2,y2;
a=3;
b=3;
x1=a++;
y1=a;
x2=++b;
y2=b;
printf(“a=%d\nx1=%d\ny1=%d\n”,a,x1,y1);
printf(“b=%d\nx2=%d\ny2=%d\n”,b,x2,y2);
}
理解:
a=3;
x1=a++;相当于x1=a;a=a+1;则x1=3,a=4
y1=a;y1=4;
b=3;
x2=++b;相当于b=b+1;x2=b;则b=4,x2=4;
y2=b;y2=4;
六、赋值运算符
1、赋值运算符
=
组合赋值运算符:
+=:
a+=1相当于a=a+1;
-=:
a-=1相当于a=a-1;
*=:
a*=2相当于a=a*2;
/=:
a/=2相当于a=a/2
%=:
a%=2相当于a=a%2
2、运算规则
优先级:
均为10,除逗号运算符外,优先级是最低的
结合性:
自右至左
3、实例
main()
{
inta=4,b=4,c=4,d=4,e=4;
printf(“a=%d\tb=%d\tc=%d\td=%d\te=%d\t\n”,a,b,c,d,e);
a+=2;
b-=2;
c*=2;
d/=2;
e%=3;
printf(“a=%d\tb=%d\tc=%d\td=%d\te=%d\t\n”,a,b,c,d,e);
getch();
}
第04讲流程控制
一、流程控制简介
1、什么是流程控制?
流程控制是指按一定的顺序执行语句
2、C中有哪些流程?
根据结构化程序设计原理,任何一个程序都可以由三种控制结构组装而成,
这三种控制结构是:
顺序结构、选择(分支)结构、循环结构
二、顺序结构
自然结构(以前所写实例均为顺序结构),就是按语句顺序一条一条地执行
三、选择结构
1、简介:
所解决的是判断问题,根据判断结果执行相应的操作,相当于汉语中
的“如果……,就……,否则……”
在C语言中,选择结构主要有两种:
if……else……
Switch
2、if……else……结构
基本形式:
if(exp1)
{……op1……}
else
{……op2……}
执行逻辑:
如果exp1为真,则执行op1,否则执行op2
exp1:
可以是算术、关系、逻辑运算表达式;
op1、op2:
可以是多条语句,放在{}里
扩展形式:
(1)if(……)
{……}
(2)if(……)
{……}
elseif(……)
{……}
elseif(……)
{……}
else
{……}
(3)if(……)
{if(……)
{……}
else
{……}
}
else
{
if(……)
{……}
else
{……}
}
3、Switch结构
4、实例1——if……else结构练习
main()
{
charsex;----------------------------------声明字符型变量,用来接受输入的性别
printf(“Pleaseinputyoursex(MorF):
\n”);-------------------输入提示
scanf(“%c”,&sex);---------------------输入语句,将输入的字母赋给sex
if(sex==’M’||sex==”m”)-----------------判定sex是否等于M或m
{
printf(“Aboy!
\n”);---------------如果sex等于M或m,就执行
}
else
{
printf(“Agirl!
\n”);----------------如果sex不等于M或m,则执行本条
}
}
5、实例2——if……else扩展形式练习
要求:
输入分数,输出等级
90-100A;80-89B;70-79C;60-69D;60以下E
main()
{
intscore;
chargrade;
printf(“Inputscore:
\n”);
scanf(“%d”,&score);
if(score>=90)
{grade=’A’;}
elseif(score<=89&&score>=80)
{grade=’B’;}
elseif(score<=79&&score>=70)
{grade=’C’;}
elseif(score<=69&&score>=60)
{grade=’D’;}
else
{grade=’E’;}
printf(“score=%d,grade=%c”,score,grade);
}
6、实例练习3——if……else输入5个数字,找出最大值和最小值并输出
算法设计:
从以下5个数12,3,9,21,4中找出最大值max和最小值min
第一步:
max=12min=12
第二步:
max、min和第二个数3作比较
如果第二个数大于max,说明max应为第二个数,否则不变
如果第二个数小于min,说明min应为第二个数,否则不变
3和max、min(12,12)比较:
max=12min=3
第三步:
max、min和第三个数9作比较
如果第三个数大于max,说明max应为第三个数,否则不变
如果第三个数小于min,说明min应为第三个数,否则不变
9和max、min(12,3)比较:
max=12min=3
第四步:
max、min和第四个数21作比较
如果第四个数大于max,说明max应为第四个数,否则不变
如果第四个数小于min,说明min应为第四个数,否则不变
21和max、min(21,3)比较:
max=21min=3
第五步:
max、min和第五个数4作比较
如果第五个数大于max,说明max应为第五个数,否则不变
如果第五个数小于min,说明min应为第五个数,否则不变
4和max、min(21,3)比较:
max=21min=3
第六步:
输出结果
max=21min=3
源代码:
main()
{
intx1,x2,x3,x4,x5,min,max;
printf("Number1:
\n");/*第一步*/
scanf("%d",&x1);
max=min=x1;
printf("Number2:
\n");/*第二步*/
scanf("%d",&x2);
if(x2>max)
{max=x2;}
if(x2{min=x