c语言程序设计13(上)

上传人:宝路 文档编号:48188254 上传时间:2018-07-11 格式:PPT 页数:57 大小:412.07KB
返回 下载 相关 举报
c语言程序设计13(上)_第1页
第1页 / 共57页
c语言程序设计13(上)_第2页
第2页 / 共57页
c语言程序设计13(上)_第3页
第3页 / 共57页
c语言程序设计13(上)_第4页
第4页 / 共57页
c语言程序设计13(上)_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《c语言程序设计13(上)》由会员分享,可在线阅读,更多相关《c语言程序设计13(上)(57页珍藏版)》请在金锄头文库上搜索。

1、编程就是不断编程!1高级语言程序设计主讲教师:贾彩燕 计算机与信息技术学院 计算机科学与技术系 2课程内容第一章 程序设计和C语言 第二章 数据对象与计算 第三章 变量、函数和控制结构 第四章 基本程序设计技术 第五章 C程序结构(函数) 第六章 数组 第七章 指针 第八章 文件和输入输出 第九章 结构和其它数据机制 第十章 程序开发技术 第十一章 标准库3第六章 数组4语言需要提供一套数据机制,描述与数据有关的问题:n必须足够丰富,以满足需要;n不能过庞杂,臃肿难用;n也不能太低级,使描述过于烦琐。高级语言的数据机制:n把数据分为类型,每个类型是一个数据集。n提供一组基本数据类型;确定其书写

2、方式;为各类型提供一组基本操作。n提供一组由简单数据类型或对象构造复合数据类型或对象的机制。组合的数据对象称为复合数据对象。由所有“同类的”复合对象形 成的类型称为复合数据类型,组成部分称为成分/成员/元素。5基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char 8位枚举类型enum整 型浮点型单精度型float 32位双精度型double 64位短整型short 16位长整型long 32位整型int 16位数组结构体struct共用体unionC 数据类型由基本类型数据按一 定规则组成的, 也称为“导出类型”数组6问题:输入学生的学号,成绩,计算平均成绩,计

3、算每个学生的成绩与平均成绩的差,差=10 成绩等级 A 0 int main () long fib30; int n;fib0 = 1; fib1 = 1;for (n = 2; n void main() int i, a10;for (i = 0; i void main() int i, a10;for (i = 0; i #include int cs10 = 0,0,0,0,0,0,0,0,0,0; int main () int c, i;while (c = getchar() != EOF)if (isdigit(c) +csc-0;for (i = 0; i enum NU

4、M = 200 ; int anNUM+1;int main (void) int i, j;an0 = an1 = 0; /* 建立初始向量 */for (i = 2; i = PASS)printf(“%fn“, scoresi);printf(“Fail:%dnPass:%dn“,fail, n-fail);return 0; 27例3 多项式求值设数组p中存放下列多项式的系数, 其中pi存放写程序求p表示的多项式在指定点的值。方法1:求出各项值累加。假设指定点值存于x: for (sum = 0.0, n = 0; n = 0; -n)sum = sum * x + pn;从计算量上比

5、较它们:需要多少次加法,多少次乘法。29定义数组的问题如果数组表示的是全局数据集合,需要在多个函数里使用,那 么可考虑定义为外部数组。大的数组应定义为外部,以免占大量运行栈空间。一般系统不 允许在函数内定义特别大的数组。 若数组保存着递归定义函数的局部数据,就必须定义为自动数 组。因为递归调用时需要数组的多份拷贝。其他情况可以根据需要自由选择。 30n数组的概念、定义和使用n数组程序实例n数组作为函数参数n字符数组和字符串n两维和多维数组n编程实例主要内容316.3 数组作为函数参数n 数组可以作为函数的参数,但是在向函数传递数组时通常有两种方法:即:q “地址”的传递q “值”的传递 32方

6、法一:用数组名作为实际参数,给函数传递数组的地址,通过这个地址就 可以访问到数组的元素了双向传递。#include #define N 20void f(int b , int n , int m) int i;for (i = m; i = n; i-) bi+1 = bi; void main() int i, aN = 1,2,3,4,5,6,7,8,9,10;f(a, 2, 9);for (i = 0; i int fmax(int x, int y) return (x y ? x : y ) ; void main() int a10, j, max ;for (j = 0; j

7、aj+1 10aj与aj+1交换for(i=1;i #define N 10void main() int aN , i , j , t;printf(“请输入10个数:n“);for ( i = 0 ; i aj+1) t = aj; aj = aj+1;aj+1 = t; printf(“n排序后的数据为:n“);for (i = 0; i 课后作业nn值如果是可变的?n如果只对部分数据进行排序?n某趟循环未发生交换,后面可不再循环, 如 何改进冒泡排序?48void BubbleSort(int n, int a ) int flag, i, j; for (i = 1; i aj+1)

8、 t = ai; ai = ai+1;ai+1 = t; flag = 1; if ( !flag ) return; 改进的冒泡排序(函数):设标志flag,如果某趟未发生交 换,flag=0,说明排序完成,返回。49将数组a中的前5个数进行排序#include void BubbleSort(int n, int a );int main() int a10 , i , j , t;printf(“请输入10个数:n“);for( i = 0 ; i #define N 10 void SelectSort(int n, int a);void main() int aN, i; for

9、(i = 0; i N; i+) scanf(“%d“, printf(“n“); SelectSort(N, a); printf(“the sorted numbers:n“); for (i = 0; i N; i+) printf(“%4d“, ai); printf(“n“); 变量、数组长度定义k=i for(j=i+1;jN;j+)scanf ( “%d” , iN;i+)for(i=0;iN;i+)ajak10k=jfor(i=0;iN-1;i+)printf ( “%4d”, ai )ai与ak交换53void SelectSort(int n, int a) int i,

10、j, k, t;for (i = 0; i n-1; i+) k = i;for (j = i+1; j n; j+)if (aj ak) k = j;t = ak;ak = ai;ai = t; 可否优化?如何优化?54选择排序算法的复杂度分析n最坏情形下扫描数据总数qn*(n+1)/2n最坏情形下数据交换的次数qn1次55作业n将一个数组中的值按逆序重新存放,如:原来 顺序为8,6,7,4,10,要求改为10,4,7,6,8。n分别写函数用冒泡和选择两种排序方法实现n( 如n=10)个数从大到小排序nP215q7q8q12.1,12.2(要求在主程序中调用相应的两个函数 )q15 56Q & A!57

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号