c语言程序设计12上半部分习题课动态跟踪调试

上传人:宝路 文档编号:48340530 上传时间:2018-07-13 格式:PPT 页数:100 大小:1.91MB
返回 下载 相关 举报
c语言程序设计12上半部分习题课动态跟踪调试_第1页
第1页 / 共100页
c语言程序设计12上半部分习题课动态跟踪调试_第2页
第2页 / 共100页
c语言程序设计12上半部分习题课动态跟踪调试_第3页
第3页 / 共100页
c语言程序设计12上半部分习题课动态跟踪调试_第4页
第4页 / 共100页
c语言程序设计12上半部分习题课动态跟踪调试_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《c语言程序设计12上半部分习题课动态跟踪调试》由会员分享,可在线阅读,更多相关《c语言程序设计12上半部分习题课动态跟踪调试(100页珍藏版)》请在金锄头文库上搜索。

1、 “编程能力”不是听会的、 也不是看会的、而是动手动脑 练会的!高级语言程序设计上半部分习题课主讲教师:贾彩燕 计算机与信息技术学院 计算机科学与技术系 课程内容第一章 程序设计和C语言 第二章 数据对象与计算 第三章 变量、函数和控制结构 第四章 基本程序设计技术 第五章 C程序结构(函数) 第六章 数组 第七章 指针 第八章 文件和输入输出 第九章 结构和其它数据机制 第十章 程序开发技术 第十一章 标准库重点n控制结构q顺序、选择、循环结构n函数q定义、声明及调用n从问题到程序的编程思想q程序的函数分解q模块化程序设计n基本的程序调试技能q静态调试、动态调试q黑箱测试、白箱测试难点n循环

2、n递归n基本输入、输出语句程序数据结构算法n程序q程序规定了计算机执行的动作和动作的顺序。n算法:q解决问题的方法和步骤n算法的几个特性q有穷性q确定性无二义q可执行性q有0个或多个输入q有0个或多个输出从问题到程序的程序设计思想 也体现了算法的重要性要点1:运算符及表达式?n已经学习哪几种运算符及表达式?优先级关系 ?q自增、自减运算符q算术运算符q关系运算符q逻辑运算符q位运算符q条件运算符q赋值运算符q逗号运算符要点2:C语言的基本数据类型nC语言的基本数据类型有哪些?n什么是常量?如何定义?n什么是变量?如何定义?n变量的存贮类型有哪几种?qauto, register, static

3、, externn变量从作用域的角度分哪几种?q全局变量、局部变量要点3:条件if语句n条件if语句有几种形式?nIf else和switch开关语句的差别?要点4:循环语句n循环语句有几种形式?n循环结构的三要素是什么?n如何从循环中跳出?要点5:函数n如何定义函数?n函数声明的意义及原则?n如何调用函数?n参数传递和函数返回值过程中类型不匹配时的 转换原则?n如何理解值参数?要点6:基本输入输出语句ngetchar()nputchar()nscanf()nprintf()n数的批量输入输出:基本输入输出循环结构第二章习题讲解1.指出下面的字符序列不是合法的标识符:_abc x+- 3x1

4、Xf_1_4 Eoof_ A$*24 x_x_2 bg1 _I am2.手工计算下列表达式的值n1) 125 + 0125n2)0XAF 0XFAn3)24 * 3 / 5 + 6n4)36 + -(5 23) / 4n5)35 * 012 + 27 / 4 / 7 * (12 - 4)210-7520403503.在下列表达式的计算过程中,在哪些地方将发生类型转换 ,各是从什么类型转换到什么类型,表达式计算的结果是什 么?n1) 3 * (2L + 4.5f) 012 + 44n2) 3* (int)sqrt(34) sin(6) * 5 + 0x2AFn3) cos(2.5f + 4) 6

5、 * 27L + 1526 2.4L第三章习题讲解n2.设a=1,b=2,c=3,则u的值为:qu=a?b:c; qu=(a=2)?b+a:c+a;n3.设a=1,b=2,c=0,则下列表达式的值为:qa if (z max) max = z; return max; 10.四边形的边长为a,b,c,d及一对对角 之各angel,求四边形的面积。double QuaArea(double a, double b, double c, double d, double e) double s = (a+b+c+d)/2.; double area; area = sqrt(s-a)*(s-b)*

6、(s-c)*(s-d)- a*b*c*d*cos(e)*cos(e); return area; 有问题吗?补充题1:用if语句写程序判断是否为闰年int RuiNian( int year ) if ( year % 400 = 0 | year % 4 = 0 else return 0; 补充题2.求分段函数y= x x=10 #include int main() double x, y; printf(“please input xn“); scanf(“%lf“, if (x999则输入错误n如果a=0并且a=10并且a=100并且a /程序分析 int main () int x

7、, a, b, c, d;scanf(“%d“, if (x/100 = 10 | x 0) a = x / 100;b = x / 10 % 10;c = x - a * 100 - b * 10;d = c * 100 + b * 10 + a;printf(“three,%d,%d,%d,%dn“, a, b, c, d);/*百位数,十位数,个位数,逆序*/ else if (x/10 0) a = x / 10;b = x % 10;d = b * 10 + a;printf(“two,%d,%d,%dn“, a, b, d); /*十位数,个位数,逆序*/ else a = x;p

8、rintf(“one,%d,%dn“, a, a); /*个位数,逆序*/ return 0; #include int GradeIf(int); int GradeSwitch(int);int main() int n;printf(“Input the mark from 0 to 99 n“); while (scanf(“%d“, GradeSwitch(n); return 0; 补充题4.从键盘 输入学生的考试 成绩,利用计算 机将学生的成绩 划分等级并输。 9099为A级,80 89为B级,70 79为C级,6069 为D级,059为 E级。int GradeIf(int n

9、) if(n99 | n=90) printf(“The grade is A!n“); else if(n=80) printf(“The grade is B!n“); else if(n=70) printf(“The grade is C!n“); else if(n=60) printf(“The grade is D!n“); else printf(“The grade is E!n“); return 0; int GradeSwitch(int n) if(n99 | n= 1) exp *= x; n-; return exp; 22.写一个程序打印1至100之间的被6或7

10、整除 的数;修改这个程序使得它之打出被6或7之 一整除的数。 int main () int i = 0; while (i #define PI 3.1415double Pai(void) int n = 1; double sum = 0.0; while (fabs(PI-sqrt(6*sum) = 1e-4) sum = sum + 1.0 / (n * n); n+; printf(“The number of terms are %d.n“, n); return sqrt(6*sum); 12.求利用公式反正弦函数的近似值double asinh (double x) int

11、i, n=10, sign=-1; double term, sum; term=x; sum=x; for(i=1;i n) max1 = m; max2 = n; else max1 = n; max2 = m; while (scanf(“%d“, j-)printf(“ “);for (j = 1; j = 1; j-)printf(“%d“, j);printf(“n“);for (i = 1; i = 1; j-)printf(“%d“, j);printf(“n“); 补充题2:用递归的方法求N阶勒让德多项式的值, 递归公式为double pn(int n, double x)

12、double value; if(n=0) value=1; else if(n=1) value=x; else value=(2*n-1)*x*pn(n-1,x)-(n-1)*pn(n-2,x)/n; return value; 补充题3:学生成绩管理系统 n菜单调用学生成绩管理系统n求计科0905班学生高级语言成绩设计课的最高 分、最低分、平均分和不及格的人数void ScoreInfSys() double biggest, smallest, sum, score; int count = 1, fail = 0; scanf(“%lf”, biggest = smallest =

13、sum; if (sum biggest) biggest = score; if (smallest = 65 void main() int i;for(i = 2 ; i int a = 3, b = 5; int max(int a, int b) int c;c = a b ? a : b;return c; void main() int a = 8;printf(“%d”, max(a, b); 结果:810.用牛顿迭代法求方法ax3+bx2+cx+d=0在1附近 的一个实根,系数a,b,c,d的值依次为1,2,3,4由主函数 输入,求出根后由主函数输出。n牛顿迭代法:q设r是f

14、(x)=0的根,选取x0作为r初始近似值,q过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为 y=f(x0)+f(x0)(x-x0),q求出L与x轴交点的横坐标 x1=x0-f(x0)/f(x0),称x1为r 的一次近似值,q过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与 x轴的横坐标 x2=x1-f(x1)/f(x1)称x2为r的二次近似值 ,q重复以上过程,得r的近似值序列Xn,其中Xn+1=Xn -f(Xn)/f(Xn),称为r的n+1次近似值。/牛顿迭代法求方程的根 #include double f(double a, double b, double

15、c, double d,double x); double fd(double a, double b, double c, double d,double x); double root(double a, double b, double c, double d);void main() double a,b,c,d,x; printf(“输入方和的系数a,b,c,dn“); scanf(“%lf,%lf,%lf,%lf“, x=root(a,b,c,d); printf(“方程的根为:%lfn“,x); printf(“当x为%lf时,函数的值为%lfn“,x,f(a,b,c,d,x); 程序代码 double f(double a, double b, double c, double d,double x) return (a*x*x*x+b*x*x+c*x+d); double fd(double a, double b, double c, double d,double x) return (3*a*x*x+2*b*x+3); double root(double a, double b, double c, double d) double x1=1.2,x

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

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

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