C程序设计讲义届.docx
- 文档编号:26511271
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:100
- 大小:74.46KB
C程序设计讲义届.docx
《C程序设计讲义届.docx》由会员分享,可在线阅读,更多相关《C程序设计讲义届.docx(100页珍藏版)》请在冰豆网上搜索。
C程序设计讲义届
C程序设计
引入:
冯·诺依曼原理
文件存储位置:
磁盘、文件夹
1、关于C语言
功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、有高级语言的优点、有低级语言的特点。
可以编写系统软件、应用软件。
2、面向过程的程序设计语言。
3、以编程为主线,要求能读程序和编程。
4、本课程内容:
1)程序设计和C语言;
2)算法;
3)顺序程序设计;
4)选择结构程序设计;
5)循环结构程序设计;
6)数组;
7)函数;
8)指针;
9)建立数据类型;
10)文件输入输出;
11)错误分析。
第一章程序设计和C语言
1.1计算机程序
计算机最主要的特点:
存储程序和程序控制
每个操作都根据人们事先指定的指令进行。
程序:
一组计算机能识别和执行的指令。
1.2什么是计算机语言
人机交流的语言。
1、机器语言
0和1组成的指令,称为机器指令。
机器指令的集全称为机器语言。
难学、难写、难记、难检查、难修改
执行效率高,可移植性差。
2、符号语言(汇编语言)
英文字母和数字表示指令,如ADD,A,B
由汇编程序转换为机器指令。
可移植性差。
前两种语言称为低级语言。
3、高级语言
第一个高级语言:
FORTRAN语言。
语句和指令用英文单词表示,运算符用数学式子表示,输出为英文和数字。
不依赖机器,可移植性好。
源程序:
高级语言编写的程序。
目标程序:
源程序通过编译程序转换成的机器指令程序。
三个发展阶段:
(1)非结构化语言。
(2)结构化语言,如C:
顺序、分支、循环结构。
(3)面向对象的语言。
处理大规模的问题。
C++,Java等。
BCPL、B、C语言。
1989:
公布第一个C语言标准,C89;
C99:
C语言特点:
(1)语言简洁、紧凑,使用方便灵活。
只有37个关键字,主要用小写字母表示。
(2)运算符丰富。
共有34种运算符。
+-*/^
<=,<>
(3)数据类型丰富。
整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型、复数浮点类型、超长整型、布尔类型等。
(4)具有结构化控制语句:
if…else,while,do…while,switch,for语句。
(5)语法限制不太严格,程序设计自由度大。
(6)允许直接访问物理地址,可直接对硬件操作。
(7)程序可移植性好。
(8)目标代码质量高,程序执行效率高。
1.4最简单的C语言程序
核心:
阅读程序,编写程序。
1.4.1最简单的C语言程序举例
例1.1屏幕显示一行信息。
#include
intmain()
{
printf(“ThisisaCProgram!
\n”);
return0;
}
操作步骤:
1、安装C++;
2、打开程序;
3、文件/新建,在“文件”选项卡选“C++sourceFile”,选择文件存放位置(不要使用默认文件夹),输入文件名,确定;
4、编辑程序;
5、组建/编译;
6、组建/组建;
7、组建/运行。
编程,原样显示“我叫李灵慧!
”
#include
intmain()
{
printf(“我叫李灵慧!
\n”);
return0;
}
standard
rand()
#include
intmain()
{
printf("*****************************\n\n");
printf("Verygood!
\n\n");
printf("*****************************\n\n");
return0;
}
作业:
编程:
显示字符串”我是奉新技工班的学生!
”
程序分析:
#include编译预处理指令
stdio.h标准输入输出函数的头文件
#include
intmain()int整型main()主函数
执行主函数后得到一个函数值,“return0”,主函数返回0值,每个程序必须有一个main()函数,以{}为分隔符。
printf():
输出函数,””原样输出。
\n换行符,可以连用多个
每个语句以;结束
注释:
1)块式注释:
以/*开始,以*/结束,可以包含多行,也可以单独一行。
2)单行注释
//可以在程序右侧,也可以单独占一行,以//开始,以换行符结束,一行写不下可以写多行。
#include
intmain()
{
inta,b,sum;
a=123;
b=456;
sum=a+b;
printf(“sumis%d\n”,sum);
return0;
}
简单编辑练习:
1、求两个整数的差。
2、求两个整数的积。
3、从键盘输入两个整数,求他们的平均值。
ave
4、求两整数的较小值。
5、求三个整数的最大值。
6、根据输入的身高(cm)和体重(kg)数值判断体型:
如果身高-体重>100,显示“瘦”,如身高-体重<80,显示“胖”,否则显示“标准”。
#include
intmain()
{
intsg,tz,sub;
scanf("%d,%d",&sg,&tz);
sub=sg-tz;
if(sub>100)
printf("瘦!
\n");
else
if(sub<80)printf("胖!
\n");
else
printf("标准!
\n");
return0;
}
1参考答案:
1)
#include
intmain()
{
inta,b;
intc;
scanf("%d,%d",&a,&b);
c=(a+b)/2.0;
printf("平均值是:
%f\n",c);
return0;
}
2)
#include
intmain()
{
floata,b;
floatc;
scanf("%f,%f",&a,&b);
c=(a+b)/2.0;
printf("平均值是:
%f\n",c);
return0;
}
求三个数的较大值.
#include
intmain()
{
intmax(intx,inty,intz);
inta,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
return0;
}
intmax(intx,inty,intz)
{
intu,v;
if(x>y)v=x;
else
v=y;
if(v>z)u=v;
else
u=z;
return(u);
}
简单程序1.2分析:
第4行:
声明,定义a,b,sum为整型变量
第5、6行:
赋值语句
第7行:
求和
第8行:
sumis%d\n,输出格式字符串,%d指定输出格式,d表示十进制整数,第二个参数“sum”的值取代%d,\n换行符。
例:
1.3
#include
intmain()
//主程序
{
intmax(intx,inty);
inta,b,c;
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“max=%d\n”,c);
return0;
}
//子函数
intmax(intx,inty)
{
intz;
if(x>y)z=x;
elsez=y;
return(z);
}
程序分析:
两个函数
(1)主函数main
(2)被调用函数max(子函数),取x、y中较值赋给变量z,其返回值通过函数名max返回主程序调用处。
scanf:
输入函数
&:
地址符,&a指定量a的地址
练习:
求两个数中的最小值。
#include
intmain()
//主程序
{
intmin(intx,inty);
inta,b,c;
scanf(“%d,%d”,&a,&b);
c=min(a,b);
printf(“min=%d\n”,c);
return0;
}
//子函数
intmin(intx,inty)
{
intz;
if(x elsez=y; return(z); } 练习: 从键盘输入三个整数,求最大数并输出。 #include intmain() { intmax(intx,inty,intz); inta,b,c,d; scanf("%d,%d,%d",&a,&b,&c); d=max(a,b,c); printf("max=%d\n",d); return0; } intmax(intx,inty,intz) { intu,v; if(x>y)v=x; elsev=y; if(v>z)u=v; elseu=z; return(u); 作业: 从键盘输入三个整数,求最小的数并输出。 我国例: 求三个整数中最大的数并显示. #include intmain() //主函数 { intmax(intx,inty,intz); inta,b,c,d; scanf("%d,%d,%d",&a,&b,&c); d=max(a,b,c); printf("最大数是: %d\n",d); return0; } //子函数 intmax(intx,inty,intz) { intm,n; if(x>y)m=x; elsem=y; if(m>z)n=m; elsen=z; return(n); 练习及讲解: 1、求两个数的商。 float%f #include intmain() { floata,b,c; scanf(“%f,%f”,&a,&b); c=a/b; printf(“c=%f\n”,c); return0; } 2、讲述作业: 求三个数中最小值并输出。 #include intmain() { intmin(intx,inty,intz); inta,b,c,d; scanf("%d,%d,%d",&a,&b,&c); d=min(a,b,c); printf("min=%d\n",d); return0; } intmin(intx,inty,intz) { intu,v; if(x elsev=y; if(v elseu=z; return(u); } 3.10上机要求: 1、显示字符串,课本15页第5题编程。 (有空行) 2、求两个数中的最大值和最小值。 3、求两数的和、差、积、商、平均值。 %f、float 4、根据输入身高和体重值判断体型: d>120,显示“瘦”;d<70,显示“胖”,其它显示“标准”。 if…else嵌套。 5、从键盘上输入三个整数,判断最大数和最小数。 1.4.2C语言程序的结构 (1)一个程序由一个或多个源程序文件组成。 一个源程序文件有一个或多个函数。 1)预处理指令。 如#include 预处理得到的结果与程序其他部分一起组成一个完整的,可以用来编译的最后的源程序,再由编译程序对源程序进行编译,得到目标程序。 2)全局声明 全局变量: 在函数外面声明的变量。 局部变量: 在函数中声明的变量。 3)函数定义 如main(),max() (2)函数是C程序的主要组成部分 函数是C程序的基本单位,C编程就是编写函数,函数分为库函数和自定义函数。 (3)一个函数包括两个部分 1)函数首部 函数的第1行,包括函数名,函数类型,函数属性,函数参数(形式参数)名,参数类型。 例: intmax(intx,inty) 函数名后面必须跟一对圆括号,括号内写参数名及类型,无参数可写void或为空括号。 2)函数体。 {}中的部分。 声明部分: 变量声明,inta,b,c; 对调用函数声明: intmax(intx,inty); 执行部分: 由若干语句组成。 空函数: 无声明和执行部分,如: voiddump() (4)程序总是从main()函数开始执行; (5)程序中对计算机的操作是由函数中C语句完成的; (6)在各个数据声明和语句最后必须有一个分号; (7)C语言本身不提供输入输出语句,由函数完成输入和输出; (8)程序应当包含注释. 1.5运行C程序的步骤与方法 (1)上机输入和编辑源程序. 生成源程序文件: .c 注意保存位置 (2)对源程序进行编译 先用C编译系统提供的”预处理器”对程序中的预处理指令进行编译预处理,再与程序其他部分一起,组成一个完整的,可用来正式编译的源程序,并进行编译,得到目标程序,.obj。 (3)进行连接处理 一个程序可能包括若干个源程序文件,编译时各源程序文件得到相应的目标文件,将这些目标模块连接装配起来,再与函数据库连接成一个整体,生成一个计算机可执行的目标程序称为可执行程序。 .exe (4)运行可执行程序,得到结果。 f.c→f.obj→f.exe 编译: 连接、运行C程序要有编译系统,现在很多使用集成环境的(IDE)。 VisualC++6.0可编译C程序。 练习: 输入一个任意数,显示它的绝对值。 思考1: 输入一个长方体的边长,求体积。 思考2、输入两个数,将他们的值互换。 思考3: 根据三根小棍的长度判断能否构成一个三角形.(CX4) 方法一: #include intmain() { inta,b,c,d; printf("输入a,b,c的值(整数): \n"); scanf("%d,%d,%d",&a,&b,&c); if(a>b) ; else { d=a; a=b; b=d; } if(a>c) ; else { d=a; a=c; c=d; } if(a<(b+c)) printf("可以构成三角形! \n"); else printf("不能构成三角形! \n"); return0; } 方法二: (CX5) #include intmain() { inta,b,c,d; printf("输入a,b,c的值(整数): \n"); scanf("%d,%d,%d",&a,&b,&c); if(a<(b+c)) { if(b<(a+c)) { if(c<(a+b)) printf("可以构成三角形! \n"); else printf("不能构成三角形! \n"); } else printf("不能构成三角形! ! \n"); } else printf("不能构成三角形! ! \n"); return0; } 练习: 对两个变量交换数据。 #include intmain() { printf(“输入两个整数a,b的值: \n”); inta,b,c; scanf(“%d,%d”,&a,&b); c=b; b=a; a=c; printf(“a=%d,b=%d\n”,a,b); return0; } 如果输入a,b的值是6,5,则显示的结果是什么? a=5,b=6 1.6程序设计的任务 程序设计: 从确定任务到得到结果、写出文档的全过程。 (1)问题分析 建立模型。 (2)设计算法 设计解题方法和具体步骤。 (3)编辑写程序 用高级语言写源程序。 (4)编辑、编译、连接 得到可执行程序。 (5)运行程序、分析结果 调试: 通过上机发现和排除程序中的故障。 测试: 设计多组数据,检查程序的运行情况,尽量发现漏洞,并修改程序,使之适应各种情况。 (6)编写程序文档 包括: 程序名称、功能、运行环境、程序装入和启动、需要输入的数据,使用注意事项等。 软件: 计算机程序和程序文档的总称。 #include intmain() { inta,b; printf("a=,b=\n"); scanf("%d,%d",&a,&b); a=b; b=a; printf("a=%d,b=%d",a,b); return0; } 练习: 从键盘输入两个变量x,y的值(可以是小数),进行变量值的互换。 本部分编程练习: 1、输入两个变量的值,将它们的值互换并显示。 2、从键盘上输入任意一个数(可以是小数),显示其绝对值。 3、输入三个边长,求长方体的体积。 4、已知三条线段的长度,判断它们能否构成三角形。 方法一: 先找出最大长度,判断是否小于另两条线段的和。 方法二: 条件的嵌套,连续判断三次两边之和大于第三边。 思考: 从键盘输入a,b,c的值,解一元二次方程ax2+bx+c=0,显示它的解。 sqrt #include 从键盘输入a,b,c的值,解一元二次方程ax2+bx+c=0,显示它的解。 #include #include intmain() { floata,b,c,d,x1,x2; scanf("%f,%f,%f",&a,&b,&c); d=b*b-4*a*c; if(d>0) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } else { if(d==0) { x1=(-1*b)/(2*a); printf("x1=x2=%f\n",x1); } else printf("无解! \n"); } return0; 编程练习: 根据用户的用电量计算电费: 如果月用电量不多于400度,每度0.6元,如果多于400少于800度,每度0.7元,如果高于800度,每度0.9元。 #include intmain() { floata,b; scanf("%f",&a); if(a<=400) { b=a*0.6; printf("b=%f\n",b); } else { if(a<=800) { b=400*0.6+(a-400)*0.7; printf("b=%f\n",b); } else { b=520.0+(a-800)*0.9; printf("b=%f\n",); } } return0; } 练习: 1、求两个数中最小数; 2、从键盘输入两个数,求它们的商; 3、编程,在屏幕上显示一个图形(星号构成,形状为三角形。 4、根据身高和体重判断体型: 身高-体重>130时显示“体型瘦,加强营养;如果身高-体重<60则显示“体型胖,注意控制饮食! ”. 思考: 编程序,从键盘输入一个整数,判断它能否同时被3和5整除,显示结果. x%3==0 第二章算法—程序的灵魂 1)数据结构 2)算法 程序设计员应具备的知识: 卡尔·马克思 1)算法; 2)数据结构;X1,X2……Xn 3)程序设计方法; 4)语言工具 2.1什么是算法 算法分类: 1)数值运算算法; 2)非数值运算算法。 第二章算法----程序的灵魂 一个程序主要包括两方面信息: (1)对数据的描述: 数据的类型和组织形式,即数据的结构. (2)对操作的描述: 要求计算机进行操作的步骤,即算法. 算法+数据结构=程序 程序设计员应具备的知识: 1)算法; 2)数据结构; 3)程序设计方法; 4)语言工具. 循环结构: 求1+2+3+……+100的结果。 #include intmain() { ints=0;//s是累加器 inti=1; while(i<=100) { s=s+i; i=i+1; } printf("s=%d\n",s); return0; } 判断平年和闰年: #include intmain() { intyear,leap=0; printf(“enteryear: \n”); scanf(“%d”,&year); if(year%4==0) { if(year%100==0) { if(year%400==0) leap=1; else leap=0; } else leap=1; } else leap=0; if(leap==1) printf(“%disaleapyear! \n”); else printf(“%disnotaleapyear! \n”); return0; } 2.2简单的算法举例 例2.1求1*2*3*4*5的值. 方法一: 直接计算; 方法二: 利用算法计算,设p为被乘数,i为乘数. S1: 1p; S2: 2i; S3: p*ip; S4: i+1i; S5: i不大于5返回s3,否则结束,输出p的值. 相关例题: 求5+10+15+20+…+1000的值。 例2.2有50个学生,输出80分以上学生学号和成绩。 学号: ni,成绩: gi。 例2.3判定2000-2500年中每年是否为闰年,输出结果。 #include intmain() { intyear=2000,leap; while(year<=2500) { if(year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; else leap=0; if(leap==1) printf("%d是闰年! ",year); else printf("%d是平年! ",year); year++; } return0; } 思考: 如果税收标准为: 收入3500元/月以下的不交税,3500-5000交1%,如果在5000-10000的交5%,大于10000的交10%。 #include intmain() { intgz; floatss; printf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 讲义