资源描述
绪论
一、 课程简介
课程内容:C语言程序设计基础知识
适用对象:程序设计初学者
二、 课程目标
1、 了解程序设计的相关知识
2、 掌握C编程
3、 理解程序设计语言的基本构成要素
4、 掌握算法设计
第01讲 C语言概述
一、 程序设计语言的发展
1、 机器语言:是唯一能被计算机直接解释和执行的语言
2、 汇编语言:及机器语言相似,但加入了助记符 Add a,b a+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菜单,执行“Compile to OBJ”
若代码有错,需纠错 ——编译
Ctrl+F9
5、 执行Alt+C,进入Compile菜单,执行“Make EXE File”
若代码有错,需纠错 ——连接
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)
声明: short a ;
声明一个变量的格式:“ 数据类型 变量名 ;”
范围:占16位,范围为-32768—32767
(2) 整型(int)
声明:int a;
范围:占16位,范围为-32768—32767
(3) 长整型(long)
声明:long a;
范围:占32位,范围为-2147483648——2147483647
Main函数
3、 实例练习1
main()
声明3个整型变量,a、b、sum
{
让a的值等于312
int a,b,sum ;
让b的值等于789
a=312;
计算a加b的结果
b=789;
sum=a+b;
将结果显示到屏幕上
printf(“ The sum of a add b is : %d \n”,sum);
}
4、 实例练习2——对上例的改进
main()
{
int a,b,sum; -----------------声明整型变量a,b,sum
printf (“ Please input two integers(a and b):\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)
声明:float a;
范围:占32位, -3.4*10-38— 3.4*1038 ,6位精度
(2) 双精度(double)
声明:double a;
范围:占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()
{
float x1,x2,x3,average; -------------------声明4个实型变量,分别输入的3个数和平均值
printf(“Please input three float data:\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、字符串常量
表示:”a dog” (用双引号,不能用单引号;可以放多个字符)
例如:”a dog” 表示字符串a dog,由5个字符组成
3、字符变量
声明:char c;
注意:一个字符变量只能存放一个字符常量,即
c=’a’ ,正确;
c=”a dog”,错误
4、实例1——字符常量及转义字符的使用
main()
{
printf(“\n\n”); --------------将当前屏幕换行2次,以方便查看结果
printf(“no break:a dog”); ------------不加\n的效果
printf(“\n”); ------------换行,以便比较结果
printf(“ a break:a \n dog”); ------加\n的效果
printf(“\n”); ------------换行,以便比较结果
printf(“no reback:a dog ”); -------不加\b的效果
printf(“\n”); ------------换行,以便比较结果
printf(“a reback:a\bdog ”); -------加\b的效果
printf(“\n”); ------------换行,以便比较结果
printf(“a tab:a \t dog”)-----------------加\t 的效果
}
5、 实例2——字符变量的使用
main()
{
char c; --------------声明字符变量c
c=’a’; --------------c赋值为’a’
printf(“\nchar c=%c”,c); ----------将变量c以字符变量的形式输出,结果应为a
printf(“\nchar c=%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()
{
int a,b,m,f,n;------------------a、b为输入的整数 m=a*b、f=a/b、n=a%b
printf(“Please input two integers(a and b):\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=a mod b=%d\n”,n); -----------输出n
getch(); ---------Win-TC额外要求,查看结果
}
对 / 和 % 的理解:
/ :结果及承载变量的类型相关
int a,b,f;
f=a/b;因为承载结果的变量f是整型,故结果都是整数,不带有小数
如a=3、b=5,则f=3/5=0,结果为0,不是0.6
如果想让除的结果为小数,则需要把f声明为float型
float a,b,f;
f=a/b;如a=3.0,b=5.0,则f=3.0/5.0,结果为0.6
%:求余,求余运算要求两侧的数据类型必须是整型(int)
int a,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
float a,b,f;
f=a % b;编译出错
4、 实例2——除运算练习
main()
{
int a,b;
int f1;
float f2;
printf("Please input two integers:(a and b):\n");
scanf("%d,%d",&a,&b);
f1=a/b;
float c,d;
c=(float)a;
d=(float)b;
f2=c/d;
printf("int f1=a/b=%d\n",f1);
printf("int f2=a/b=%f\n",f2);
getch();
}
5、 实例3——求余运算练习
main()
{
int a,b,f;
printf("Please input two integers(a and b ):\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
0> 8结果为0,表达式变为:0>4
0>4 结果为0
5、 实例1
main()
{
int a,b,result ; ----------------声明整型变量,result用来承接a、b运算的结果
printf (“Please input two integers(a and b ):\n”); ---------------提示输入两整数
scanf(“%d,%d”,&a,&b); ---------接受输入分别给变量a、b,输入形式为3,4
result=(a>b); --------a>b 运算
printf(“result=(a>b)=%d\n”,result); -------------输出结果
result=(a<b); -----------a<b运算
printf(“result=(a<b)=%d\n”,result); -------------输出结果
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()
{
int result;
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()
{
int a,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()
{
int a=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(……)
{ …… }
else if (……)
{ …… }
else if (……)
{ …… }
else
{……}
(3) if(……)
{ if(……)
{……}
else
{……}
}
else
{
if(……)
{……}
else
{……}
}
3、 Switch结构
4、 实例1——if……else结构练习
main()
{
char sex; ----------------------------------声明字符型变量,用来接受输入的性别
printf(“Please input your sex(M or F):\n”);-------------------输入提示
scanf(“%c”,&sex); ---------------------输入语句,将输入的字母赋给sex
if(sex = =’M’ || sex= =”m”) -----------------判定sex是否等于M或m
{
printf(“A boy!\n”); ---------------如果sex等于M或m,就执行
}
else
{
printf(“A girl!\n”); ----------------如果sex不等于M或m,则执行本条
}
}
5、 实例2——if……else 扩展形式练习
要求:输入分数,输出等级
90-100 A ;80-89 B; 70-79 C;60-69 D;60以下 E
main()
{
int score;
char grade;
printf (“Input score:\n”);
scanf(“%d”,&score);
if(score>=90)
{grade=’A’;}
else if(score<=89 && score>=80)
{grade=’B’;}
else if(score<=79 && score>=70)
{grade=’C’;}
else if(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=12 min=12
第二步:max、min和第二个数3作比较
如果第二个数大于max,说明max应为第二个数,否则不变
如果第二个数小于min,说明min应为第二个数,否则不变
3和max、min(12,12)比较:max=12 min=3
第三步:max、min和第三个数9作比较
如果第三个数大于max,说明max应为第三个数,否则不变
如果第三个数小于min,说明min应为第三个数,否则不变
9和max、min(12,3)比较:max=12 min=3
第四步:max、min和第四个数21作比较
如果第四个数大于max,说明max应为第四个数,否则不变
如果第四个数小于min,说明min应为第四个数,否则不变
21和max、min(21,3)比较:max=21 min=3
第五步:max、min和第五个数4作比较
如果第五个数大于max,说明max应为第五个数,否则不变
如果第五个数小于min,说明min应为第五个数,否则不变
4和max、min(21,3)比较:max=21 min=3
第六步:输出结果
max=21 min=3
源代码:
main()
{
int x1,x2,x3,x4,x5,min,max;
printf("Number 1:\n"); /* 第一步 */
scanf("%d",&x1);
max=min=x1;
printf("Number 2:\n"); /*第二步*/
scanf("%d",&x2);
if(x2>max)
{max=x2;}
if(x2<min)
{min=x2;}
printf("Number 3:\n"); /*第三步*/
scanf("%d",&x3);
if(x3>max)
{max=x3;}
if(x3<min)
{min=x3;}
printf("Number 4:\n"); /*第四步*/
scanf("%d",&x4);
if(x4>max)
{max=x4;}
if(x4<min)
{min=x4;}
printf("Number 5:\n"); /*第五步*/
scanf("%d",&x5);
if(x5>max)
{max=x5;}
if(x5<min)
{min=x5;}
printf("Max=%d\tMin=%d",max,min); /*第六步*/
getch();
}
四、 循环结构
1、循环结构简介
循环即重复,循环结构就是让计算机重复执行一段代码
在C语言中,循环结构主要有三种:
while、do-while、for
2、while循环
基本形式:
while(exp)
{
……
op
……
}
执行逻辑:
运算exp,若值为真则执行op,否则退出循环
应用方法:
需要设置一个计数器,控制循环结束
实例理解:
i=0; ---------------计数器初始化
while(i<10) -----------循环条件 i<10
{
printf(“i=%d\n”,i); ---------循环代码体,输出i的值
i++; ------------计数器自加,相当于i=i+1
}
执行过程:
i=0 — 判定条件i<10为真 — 执行循环代码:输出i,i自加变为1
i=1 — 判定条件i<10为真 — 执行循环代码:输出i,i自加变为2
i=2 — 判定条件i<10为真 — 执行循环代码:输出i,i自加变为3
……
i=9 — 判定条件i<10为真 — 执行循环代码:输出i,i自加变为10
i=10— 判定条件i<10为假 — 退出循环
3、do-while循环
基本形式:
do
{
……op……
}while(exp);
执行逻辑:
执行一次循环代码op,判定exp,若为值则接着循环,否则退出循环
应用方法:
需要设置一个计数器,控制循环结束
及while循环的区别:
x=1; x=1;
while(x<1) do
{ {
printf(“x=%d”,x); printf(“x=%d”,x);
} }while(x<1);
不会输出x=1 会输出x=1
先判定后执行 先执行后判定
4、for循环
基本形式:
for(exp1;exp2;exp3)
{ ……op…… }
执行逻辑:
exp1:计数器初始化;exp2:循环判定条件;exp3:计数器自加
先执行exp1,接着判定exp2,若为真则执行循环体,并执行exp3使计数器加
1,否则退出循环
应用方法:
需要设置一个计数器,控制循环结束
实例理解:
int i; int i;
简化
i=0;
for(i=0;i<5;i++) while(i<5)
{ {
printf(“i=%d”,i) printf(“i=%d”,i)
} i++;
}
5、实例——while循环理解
main()
{
int i;
i=0;
while(i<10)
{
printf(“i=%d\n”,i);
i++;
}
}
6、实例——用while循环改写5数中找最大值和最小值
main()
{
int x,min,max,i;
printf("Number 1:\n"); /* 第一步 */
scanf("%d",&x);
max=min=x;
i=2;
while(i<=5)
{
printf("Number %d:\n",i); /*第二步 第三步 第四步 第五步*/
scanf("%d",&x);
if(x>max)
{max=x;}
if(x<min)
{min=x;}
i++;
}
printf("Max=%d\tMin=%d",max,min); /*第六步*/
getch();
}
7、实例——do-while及while的区别
main()
{
int x;
x=1;
printf("The result of while:\n");
while(x<1)
{
printf("x=%d",x);
}
printf("The result of do-while:\n");
do
{
printf("x=%d",x);
}while(x<1);
getch();
}
8、实例——用do-while循环改写5数中找最大值和最小值
main()
{
int x,min,max,i;
printf("Number 1:\n"); /* 第一步 */
scanf("%d",&x);
max=min=x;
i=2;
do
{
printf("Number %d:\n",i); /*第二步 第三步 第四步 第五步*/
scanf("%d",&x);
if(x>max)
{max=x;}
if(x<min)
{min=x;}
i++;
} while(i<=5);
printf("Max=%d\tMin=%d",max,min); /*第六步*/
getch();
}
9、实例——for循环理解
main()
{
int i;
for(i=0;i<10;i++)
{
printf("i=%d\n",i);
}
getch();
}
10、实例——用for循环改写5数中找最大值和最小值
main()
{
int x,min,max,i;
printf("Number 1:\n"); /* 第一步 */
scanf("%d",&x);
max=min=x;
for(i=2;i<=5;i++)
{
printf("Number %d:\n",i); /*第二步 第三步 第四步 第五步*/
scanf("%d",&x);
if(x>max)
{max=x;}
if(x<min)
{min=x;}
}
printf("Max=%d\tMin=%d",max,min); /*第六步*/
getch();
}
第05讲 数组
一、数组
1、什么是数组?
数组是一种组合的数据类型,是一组同类型数据组成的序列
例如:1,2,9,,8,7 这5个数构成一个整型数组
3.4,7.0,8.2,9.1 这4个数构成一个实型数组
‘a’ , ’ ’, ’d’ , ’o’ , ’g’ 这5个字符构成一个字符数组
1, 3.4 ,’a’ 因为元素类型不同,不能构成数组
同一数组中的所有元素必须属于同一种数据类型
2、为什么要用数组?
把具有同一性质或同一用途的数据组合在一起,以便引用
例如,要求输入10名学生的学号,如果不使用数组,只能定义
10个变量:x1、x2、……x10来承接;如果使用数组,则只
需定义一个字符数组stuNo[9],stuNo[0]=stu_1,stuNo[1]=stu_2
…… stuNo[i]
二、一维数组的定义及引用
1、声明:int a[9]; -------定义int型数组,可有元素10个
float a[9]; ------定义float型数组,可有元素10个
char a[9]; ------
展开阅读全文