C语言教学课件:_19-1_上半部分习题_第1页
C语言教学课件:_19-1_上半部分习题_第2页
C语言教学课件:_19-1_上半部分习题_第3页
C语言教学课件:_19-1_上半部分习题_第4页
C语言教学课件:_19-1_上半部分习题_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程内容课程内容 第一章第一章 程序设计和程序设计和C C语言语言 第二章第二章 数据对象与计算数据对象与计算 第三章第三章 变量、函数和控制结构变量、函数和控制结构 第四章第四章 基本程序设计技术基本程序设计技术 第五章第五章 C C程序结构(函数)程序结构(函数) 第六章第六章 数组数组 第七章第七章 指针指针 第八章第八章 文件和输入输出文件和输入输出 第九章第九章 结构和其它数据机制结构和其它数据机制 第十章第十章 程序开发技术程序开发技术 第十一章第十一章 标准库标准库 重点重点 n控制结构控制结构 q顺序、选择、循环结构顺序、选择、循环结构 n函数函数 q定义、声明及调用定义、声明

2、及调用 n从问题到程序的编程思想从问题到程序的编程思想 q程序的函数分解程序的函数分解 q模块化程序设计模块化程序设计 难点难点 n循环循环 n递归递归 n基本输入、输出语句基本输入、输出语句 程序数据结构算法程序数据结构算法 n程序程序 q程序规定了计算机执行的动作和动作的顺序。程序规定了计算机执行的动作和动作的顺序。 n算法:算法: q解决问题的方法和步骤解决问题的方法和步骤 n算法的几个特性算法的几个特性 q有穷性有穷性 q确定性无二义确定性无二义 q可执行性可执行性 q有有0个或多个输入个或多个输入 q有有0个或多个输出个或多个输出 从问题到程序的程序设计思想从问题到程序的程序设计思想

3、 也体现了算法的重要性也体现了算法的重要性 要点要点1:运算符及表达式?:运算符及表达式? n已经学习哪几种运算符及表达式?优先级关系?已经学习哪几种运算符及表达式?优先级关系? q自增、自减运算符自增、自减运算符 q算术运算符算术运算符 q关系运算符关系运算符 q逻辑运算符逻辑运算符 q位运算符位运算符 q条件运算符条件运算符 q赋值运算符赋值运算符 q逗号运算符逗号运算符 要点要点2:C语言的基本数据类型语言的基本数据类型 nC语言的基本数据类型有哪些?语言的基本数据类型有哪些? n什么是常量?如何定义?什么是常量?如何定义? n什么是变量?如何定义?什么是变量?如何定义? n变量的存贮类

4、型有哪几种?变量的存贮类型有哪几种? qauto, register, static, extern n变量从作用域的角度分哪几种?变量从作用域的角度分哪几种? q全局变量、局部变量全局变量、局部变量 要点要点3:条件:条件if语句语句 n条件条件if语句有几种形式?语句有几种形式? nIf else和和switch开关语句的差别?开关语句的差别? 要点要点4:循环语句:循环语句 n循环语句有几种形式?循环语句有几种形式? n循环结构的三要素是什么?循环结构的三要素是什么? n如何从循环中跳出?如何从循环中跳出? 要点要点5:函数:函数 n如何定义函数?如何定义函数? n函数声明的意义及原则?

5、函数声明的意义及原则? n如何调用函数?如何调用函数? n参数传递和函数返回值过程中类型不匹配时的参数传递和函数返回值过程中类型不匹配时的 转换原则?转换原则? n如何理解值参数?如何理解值参数? 要点要点6:基本输入输出语句:基本输入输出语句 ngetchar() nputchar() nscanf() nprintf() n数的批量输入输出:基本输入输出循环结构数的批量输入输出:基本输入输出循环结构 第二章习题讲解第二章习题讲解 1.指出下面的字符序列不是合法的标识符:指出下面的字符序列不是合法的标识符: _abc x+- 3x1 Xf_1_4 Eoof_ A$*24 x_x_2 bg1

6、_I am 2.手工计算下列表达式的值手工计算下列表达式的值 n1) 125 + 0125 n2)0XAF 0XFA n3)24 * 3 / 5 + 6 n4)36 + -(5 23) / 4 n5)35 * 012 + 27 / 4 / 7 * (12 - 4) 210 -75 20 40 350 3.在下列表达式的计算过程中,在哪些地方将发生类型转换,在下列表达式的计算过程中,在哪些地方将发生类型转换, 各是从什么类型转换到什么类型,表达式计算的结果是什么?各是从什么类型转换到什么类型,表达式计算的结果是什么? n1) 3 * (2L + 4.5f) 012 + 44 n2) 3* (in

7、t)sqrt(34) sin(6) * 5 + 0 x2AF n3) cos(2.5f + 4) 6 * 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

8、 a, double b, double c, double d, double e) double s = (a+b+c+d)/2.; double area; area = sqrt(s-a)*(s-b)*(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

9、 x1 2x-1 1=x=10 #include int main() double x, y; printf(please input xn); scanf(%lf, if (x1) y = x; printf (%lf, y); else if (1=x printf (%lfn, y); else y = 3*x - 11; printf (%lfn, y); return 0; 有问题吗?有问题吗? 补充题补充题3 n给一个不多于给一个不多于3位的正整数,要位的正整数,要 q求出它是几位数;求出它是几位数; q分别输出每一位数字分别输出每一位数字 q按新逆序输出各位数字,例如原数为按新

10、逆序输出各位数字,例如原数为321,应输出,应输出123 算法思想:算法思想: n设设a是整数变量;是整数变量; n如果如果a999则输入错误则输入错误 n如果如果a=0并且并且a=10并且并且a=100并且并且a1000则输出则输出a是百位数是百位数 q个位数是个位数是a%10 q十位数是十位数是a/10%10 q百位数是百位数是a/100 #include /程序分析程序分析 int main () int x, a, b, c, d; scanf(%d, if (x/100 = 10 | x 0) a = x / 100; b = x / 10 % 10; c = x - a * 100

11、 - 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; printf(one,%d,%dn, a, a); /*个位数,逆序个位数,逆序*/ return 0; #include int

12、 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级,级, 8089为为B级,级,70 79为为C级,级,60 69为为D级,级,0 59为为E级。级。 int GradeIf(int n) if(n99 | n

13、=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 | n0) n=-1; else n=n/10; switch (n) case -1: printf(Input error!n);break; case

14、 9:printf(The grade is A!n);break; case 8:printf(The grade is B!n);break; case 7:printf(The grade is C!n);break; case 6:printf(The grade is D!n);break; default:printf(The grade is E!n); return 0; 14.求求100以内正整数的立方和以内正整数的立方和 long CubeSum (int n) long sum = 0; int i = 1; while (i = n) sum = sum + i*i*i

15、; i+; return sum; 15.写一个函数,取写一个函数,取3个参数个参数m,n,k输出输出 m,m+k,m+2k,直至最后一个不大于直至最后一个不大于n的数的数 void PrintNum (int m, int n, int k) while (m = 1) exp *= x; n-; return exp; 22.写一个程序打印写一个程序打印1至至100之间的被之间的被6或或7整除整除 的数;修改这个程序使得它之打出被的数;修改这个程序使得它之打出被6或或7之之 一整除的数。一整除的数。 int main () int i = 0; while (i = 100) if (i

16、% 6 = 0 return 0; 第四章习题讲解第四章习题讲解 4.写函数计算写函数计算1!+2!+k! long SumFactor(int n) int i = 1; long f = 1, sum = 0; while (i = n) f = f * i; sum = sum + f; i+; return sum; 9.用公式编程求圆周率的近似值用公式编程求圆周率的近似值 #include #define PI 3.1415 double Pai(void) int n = 1; double sum = 0.0; while (fabs(PI-sqrt(6*sum) = 1e-4)

17、 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 i, n=10, sign=-1; double term, sum; term=x; sum=x; for(i=1;i=n;i+) term=term*x*x*(2*i-1)/(2*i); sum+=sign*term/(2*i+1)*(2*i-1); sign=-sign; return

18、sum; 14.辗转相减求最大公约数辗转相减求最大公约数 int gcd(int m,int n) if (mn) return gcd(n,m); else if (m=n) return m; else return gcd(m-n,n); int gcd1(int m, int n) int r,t; if (m n) t=m;m=n;n=t; if (n = 0) return m; for (r = m-n; r != 0; r = m-n) m = n; n = r; if (m n) t=m;m=n;n=t; return n; 16.求水仙花数求水仙花数 void method

19、1(void) int i,j,k; for (i=1;i=9;i+) for (j=0;j=10;j+) for(k=0;k=10;k+) if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(%d是水仙花数是水仙花数n,i*100+j*10+k); void method2(void) int i,m,n,l; for (i=100;i n) max1 = m; max2 = n; else max1 = n; max2 = m; while (scanf(%d, max1 = n; else if (max2 n) max2 = n; printf(nmax

20、1=%d,max2=%dn, max1, max2); return 0; 21.求折线段的面积求折线段的面积 double FigureArea(void) double y1, y2, area = 0.0; printf(Please input a series positive float number.n); if (scanf(%lf, while (scanf(%lf, y2 = y1; return area; 补充题补充题1:打印如下图案:打印如下图案 void Figure(int n) int i, j; for (i = 1; i = 1; j-) printf( )

21、; for (j = 1; j = 1; j-) printf(%d, j); printf(n); for (i = 1; i n; i+) for (j = 1; j = i; j+) printf( ); for (j = 1; j = 1; j-) printf(%d, j); printf(n); 补充题补充题2:用递归的方法求用递归的方法求N阶勒让德多项式的值,阶勒让德多项式的值, 递归公式为递归公式为 . 1/)() 1()() 12( , 1 , 01 )( 21 nnxpnxxpn nx n xp nn n double pn(int n, double x) double

22、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 co

23、unt = 1, fail = 0; scanf(“%lf”, biggest = smallest = sum; if (sum biggest) biggest = score; if (smallest score) smallest = score; sum += score; count+; if (score = 65 else if (ch = ) k+; else m+; printf(Charaters:%d,Numbers:%d,Spaces:%d,Others:%dn,i,j,k,m); 补充题补充题4.输入一行字符,分别统计出其中英文字母、空格、数字和其它输入一行字符,

24、分别统计出其中英文字母、空格、数字和其它 字符的个数。字符的个数。 第五章习题讲解第五章习题讲解 作业作业1.1.读程序写结果读程序写结果 #include int f1( int ), f2( int ); void main() int i; for(i = 2 ; i 5 ; i+) printf (f1(%d) = %d t , i , f1( i ) ); printf(n); for(i = 2 ; i 5 ; i+) printf (f2(%d) = %d t , i , f2( i ) ); printf(n); int f1( int x ) int f = 1; f *=

25、x; return f; int f2( int x ) static int f = 1; f *= x; return f; 结果为结果为: f1(2)=2 f2(2)=2 f2(3)=6f2(4)=24 f1(3)=3f1(4)=4 作业作业2.2.阅读下列程序写结果阅读下列程序写结果 #include 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); 结果:结果:8 10.用牛顿迭代法求方法用牛顿

26、迭代法求方法ax3+bx2+cx+d=0在在1附近附近 的一个实根,系数的一个实根,系数a,b,c,d的值依次为的值依次为1,2,3,4由主函数由主函数 输入,求出根后由主函数输出。输入,求出根后由主函数输出。 n牛顿迭代法:牛顿迭代法: q设设r是是f(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过点(过

27、点(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 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);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论