已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,程序设计基础,总结与提高,之,一、基本概念与理念,问题、算法、程序、结构化程序 把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内 程序的功能结构、程序设计、程序设计方法与过程、程序设计语言 设计程序要从程序的三大功能入手,告诉计算机要做什么事情及如何做。 程序的描述方法 C语言程序的组织与结构 程序调试、语法与语义问题,一、基本概念与理念,数据、数据类型 类型的定义与声明 常量、变量、变量的地址、变量的使用 标准类型与自定义类型 程序算法数据结构,一、基本概念与理念,C语言中的常用运算及表达式 C语言中的基本语句及其使用 阅读如下程序,画出程序流程图、说明功能与执行结果,程序1,#include main() int i,j; for (i=1;i=9;i+) printf(“I =%2d “,i); ,程序2,main() int i=1; int sum=0; while(i100) sum+=i; i+; printf(“The sum is:%d“,sum); ,程序3,main(void) int i; for(i=1;i=10;i+) if(i%3=0) break; printf(“i=%dn“,i); printf(“when loop interruped,i=%dn“,i); ,程序4,#include void main() int i=1; int p=1; while(i+5) p*=i; printf(“The p is:%d“,p); ,程序5,Main() int a; For(n=100;n=200;n+) if (n%3=0) continue; printf(“%d “,n); ,一、基本概念与理念,模块化程序与函数 源程序(文件)由多个函数组成,是一个编译单位;C程序又由多个源文件组成; 有:C程序源文件函数 菜单程序是组织程序模块的一种方法 函数调用的作用与过程 C函数之间的接口方式 函数阅读示例,示例1,#include int max(int,int); int main(void) int a,b; printf(“First number:“); scanf(“%d“, ,示例2,#include main() int a=3,b=5; void swap(int,int); printf(“a=%d,b=%d“,a,b); swap(a,b); printf(“a=%d,b=%d“,a,b); void swap(int a,int b) int temp; temp=a;a=b;b=temp; printf(“a=%d,b=%d“,a,b); ,示例3,#include void func(void); int main(void) auto int a=100; printf(“In Main(),a=%dn“,a); func(); printf(“In Main(),a=%dn“,a); void func(void) int a=300; printf(“In func(),a=%dn“,a); ,示例4,#include void func(void); int main(void) func(); func(); func(); void func(void) static int a=100; printf(“In func(),a=%dn“,a); a+=200; ,示例5,#include static int a; void odd(void); int main(void) printf(“Input an integer:“); scanf(“%d“, ,示例6,#define CUBE(x) (x)*(x)*(x) int b=0,a=3; int cube(int x) return x*x*x; 函数调用b=cube(a+)后,b、a为?; 而宏调用b=CUBE(a+)后,b、a为?。,一、基本概念与理念,数组的概念、数组定义的意义 数组、下标、维数、数组名与存储问题 可以认为数组的目的在于表示及控制处理的方便; 数组元素的使用及与循环控制的关系 弄清选择排序与冒泡排序的原理及过程 字符、字符串、字符数组、字符串数组及应用 阅读如下程序,示例1,void main() int add(int m,int n,int arr); int total,a34=5,3,6,8,-2,-4,-7,9,1,0,7,2; total=add(3,4,a0); printf(“total=%d“,total); int add(int m,int n,int arr) int i,j,sum=0; for(i=0;im;i=i+m-1) for(j=0;jn;j+) sum+=arri*n+j; for(j=0;jn;j=j+n-1) for(i=1;im-1;i+) sum+=arri*n+j; return (sum); ,示例2,#include void func(int); main(void) int a=13; printf(“In main(),a=%d,address=%pn“,a, ,示例3,#include main(void) char a=“My friend“; char b=c; char str=“c“; printf(“sizeof(a)=%dn“,sizeof(a); printf(“sizeof(b)=%dn“,sizeof(b); printf(“sizeof(str)=%dn“,sizeof(str); ,示例3,#include int main(void) char name310=“David“,“Jane Wang“,“Tom Lee“; int i; for(i=0;i3;i+) printf(“name%d=%sn“,i,namei); printf(“n“); for(i=0;i3;i+) printf(“address of name%d=%pn“,i, ,一、基本概念与理念,地址、指针、指针变量及基定义与使用 指针与函数 指针与数组 指针数组与指向数组的指针 定义一个指针变量;注意:*与指针变量名的关系;指明基类型; 如何使一个指针变量指向另一个变量:地址赋值;,示例1,#include #define N 10 void main( ) double xN = 1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.0,9.9; int i; double *pf,*pt; void swap(double *,double *); for(pf = x, pt = ,示例2,#include int main(void) int i; char *name3=“David“,“Jane Wang“,“Tom Lee“; for(i=0;i3;i+) printf(“name%d=%sn“,i,namei); 另请显示每个串的首字符,示例3,Main() int *p1,*p2,*p,a=5,b=9; P1= ,一、基本概念与理念,结构体、共用体、枚举类型与应用 结构体数组与应用 结构体指针 结构体传递,示例1,main() struct data char name20; int no; int num; s 3=“Li”,0,0”Zhang”,1,0,”Fun”,2,0; int x,i; for (I=1;I=10;I+) scanf(“input no(0,1,2)=%d”, ,示例2,main() struct data char name20; int no; int num; *p, s 3=“Li”,0,0”Zhang”,1,0,”Fun”,2,0; int I,x; for (I=0;I.no,p-num); ,示例3,struct mydata char na15; int ma; int en; ; float avg(struct mydata *p); int main(void) struct mydata num=“Alice“,70,80; printf(“%ss Ma score=%dn“,num.na,num.ma); printf(“En score=%dn“,num.en); printf(“average=%.2fn“,avg( ,一、基本概念与理念,数据的静态与动态存储 链表及其组织结构、单链表 建立简单链表、输出结点数据、处理结点数据的方法与过程,二、问题思考,main() int a,b;a=32767;b=a+1;printf(“%d”,b) 结果? 3+6.5 ,6.5%3 ,(int)6.5%3 ; 它们合法? I=3;printf(“%d,%d”,+I,I+) 结果为? a=3*5,a*4; 结果为?,二、问题思考,Int num 2与num2=6中的2意义如何? define max 5;与int tempmax;分别做了什么? 建立一整形数组并输出;输入一整数,在数组中查找与之相等的元素,并输出其位置。 为什么可以把二维看作一维? 定义A34与引用A34的差异;,二、问题思考,注意:int *p=) 设p是指向一数组元素的指针变量,则*p=1的意义是什么?P+1的意义? (表示对p所指的元素赋值1)。 理解作为变址运算符的意义 (系统对a5处理成(a+5) 引用数组元素可用下标法:aI,也可用指针法:(a+I),或*(p+I)或pI(带下标的指针)。,二、问题思考,*(p+)与*(+p)的区别? 前者先取*p的值,再使p加1,后者相反。 (p)+与*(P+)的区别? 前者使元素*p的值加1。 有定义:int a34;则a是整个二维数组的首地址,即第0行地址(首地址),如二维数组的首地址为2000,则a1为多少? 2008; a0,a1是一维数组名,因此分别为a00与a10的地址,a0+1值为多少? a0+1则为a01的地址,值为2002。,二、问题思考,如何实现“指向”? 说明INT I;INT *P的意义; 编程完成主函数输入两整数,地址作参数调用函数求其和后返回输出; 如何理解*(p+i)=*(a+i)=ai=pi是等价的? *(*(p+i)+j)*(*(a0+i)+j)*(ai+j)aij (*p)4表示p是一个指向有4个元素的一维数组的指针变量。相对比p4是有4个元素的指针数组。 注意a0在一维与二维数组中的不同意义! 在二维数组中:a+i=ai=*(a+i)=&ai=&ai0,二、问题思考,编写程序,由键盘输入学生数据,其项目有:学号、姓名、平时成绩期中成绩、期终成绩、,而学期成绩由期中、期终各占30%,平时40%计算。输出学生的各项数据。 同上题,但一次可输入10个学生的数据,同时输入学号即可显示该生所有数据。 同上题,将学生数据以下列方式输出在屏幕上: 1)以学号由小到大的顺序; 2)学期成绩由高到低的顺序。,二、问题思考,请描述你对“结构体”的理解。 编写函数print打印有5个学生数据的数组,每个记录有学号、姓名、三门成绩,数据在主函数中输入。 在上题基础上,用函数input输入学生数据。 在上题基础上,计算每个学生的平均成绩、总的平均成绩,及最高分学生的所有数据。,二、问题思考,居民数据包括:姓名(name)、出生时间(birthday)、性别(sex)、身份证号(num)、民族(nation)、文化程度(education)、住址(address)、电话号码(telNum)、电子邮件地址(email)。 (1)设计一个用成员运算符“.”处理单个居民数据的C语言程序。 (2)设计一个用指针处理单个居民数据的C语言程序。 (3)设计一个用间接引用处理单个居民数据的C语言程序。,二、问题思考,居民数据包括:姓名(name)、出生时间(birthday)、性别(sex)、身份证号(num)、民族(nation)、文化程度(ed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职(汽车维修技术)发动机维修试题及答案
- 2025年高职机械制造及自动化(数控加工工艺)试题及答案
- 2025年大学化学(有机化学)试题及答案
- 2025年中职(乐器修造)乐器维修基础试题及答案
- 2025年中职计算机与网络技术(网络故障排除)试题及答案
- 2025年中职安全(规避技巧)试题及答案
- 2026年棒球用品营销(营销规范)试题及答案
- 2025年中职畜牧兽医(常见疾病防治)试题及答案
- 2025年大学休闲体育服务与管理(健身课程设计)试题及答案
- 2025年中职(铁道运输服务)铁路货运组织试题及答案
- 舞台灯光效果课件
- 艺术史课件教学课件
- ARDS患者肺保护性机械通气方案
- 2025-2026学年北师大版二年级上册数学期末试卷及答案(三套)
- 2026年吉林工程职业学院单招职业技能考试必刷测试卷必考题
- 2025年中国泥炭生物肥项目创业投资方案
- 浙江省金华市2024-2025学年九年级上学期期末科学试题(学生版)
- 教育部人文社科一般课题申报书
- 串联谐振耐压试验原理讲解
- 企业副总工作总结
- YDT 5102-2024 通信线路工程技术规范
评论
0/150
提交评论