C语言ppt课件上半部分复习题.ppt

上传人:牧羊曲112 文档编号:1481286 上传时间:2022-11-30 格式:PPT 页数:72 大小:2.38MB
返回 下载 相关 举报
C语言ppt课件上半部分复习题.ppt_第1页
第1页 / 共72页
C语言ppt课件上半部分复习题.ppt_第2页
第2页 / 共72页
C语言ppt课件上半部分复习题.ppt_第3页
第3页 / 共72页
C语言ppt课件上半部分复习题.ppt_第4页
第4页 / 共72页
C语言ppt课件上半部分复习题.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《C语言ppt课件上半部分复习题.ppt》由会员分享,可在线阅读,更多相关《C语言ppt课件上半部分复习题.ppt(72页珍藏版)》请在三一办公上搜索。

1、“编程能力”不是听会的、也不是看会的、而是动手动脑练会的!,高级语言程序设计上半部分复习课,主讲教师:丁丁计算机与信息技术学院,课程内容,第一章 程序设计和C语言第二章 数据对象与计算第三章 变量、函数和控制结构第四章 基本程序设计技术第五章 C程序结构(函数)第六章 数组第七章 指针第八章 文件和输入输出第九章 结构和其它数据机制第十章 程序开发技术第十一章 标准库,2022/11/30,高级语言程序设计,3,主要内容:程序设计和C语言,1.1 程序和程序语言程序和程序语言算法及其描述工具1.2 程序设计方法1.3 问题与程序设计,2022/11/30,高级语言程序设计,4,2022/11/

2、30,高级语言程序设计,5,主要内容:数据对象与计算,2.1 程序的基本结构 2.2 基本概念2.3 数据与类型 2.4 基本类型与数据表示2.5 数据的输入与输出2.6 运算符、表达式与计算 2.7 数学函数库及其使用,2022/11/30,高级语言程序设计,6,主要内容:程序设计的基本知识,3.1 语句、复合语句 3.2 变量概念、定义和使用3.3 定义函数(初步,第五章深入) 3.4 关系表达式、逻辑表达式、条件表达式3.5 语句和控制结构3.6 常见结构和问题,2022/11/30,高级语言程序设计,7,主要内容:基本程序设计技术,4.1 循环程序设计 4.2 循环中的问题4.3 循环

3、与递归 4.4 基本输入输出4.5 程序设计实例4.6 程序测试和排错,重点,控制结构顺序、选择、循环结构函数定义、声明及调用从问题到程序的编程思想程序的函数分解模块化程序设计基本的程序调试技能静态调试、动态调试黑箱测试、白箱测试,2022/11/30,高级语言程序设计,8,难点,循环递归基本输入、输出语句,2022/11/30,高级语言程序设计,9,程序数据结构算法,程序程序规定了计算机执行的动作和动作的顺序。算法:解决问题的方法和步骤算法的几个特性有穷性确定性无二义可执行性有0个或多个输入有0个或多个输出,从问题到程序的程序设计思想也体现了算法的重要性,2022/11/30,高级语言程序设

4、计,10,要点1:运算符及表达式?,已经学习哪几种运算符及表达式?优先级关系?自增、自减运算符算术运算符关系运算符逻辑运算符条件运算符赋值运算符逗号运算符,2022/11/30,高级语言程序设计,11,2022/11/30,高级语言程序设计,12,要点2:C语言的基本数据类型,C语言的基本数据类型有哪些?什么是常量?如何定义?什么是变量?如何定义?变量的存贮类型有哪几种?auto, register, static, extern变量从作用域的角度分哪几种?全局变量、局部变量,2022/11/30,高级语言程序设计,13,2022/11/30,高级语言程序设计,14,整型,字符型,实型,有,无

5、,基本数据类型,32,64,说明:数据类型所占字节数编译器不同而不同,2022/11/30,高级语言程序设计,15,常用数据类型,要点3:条件if语句,条件if语句有几种形式?if语句if-else语句if-else if语句if else的配对原则是什么?If else和switch开关语句的差别?,2022/11/30,高级语言程序设计,16,要点4:循环语句,循环语句有几种形式?while语句do-while语句for语句循环结构的三要素是什么?如何从循环中跳出?,2022/11/30,高级语言程序设计,17,要点5:函数,如何定义函数?函数声明的意义及原则?如何调用函数?参数传递和函数

6、返回值过程中类型不匹配时的转换原则?如何理解值参数?,2022/11/30,高级语言程序设计,18,2022/11/30,高级语言程序设计,19,特点:“单向”传递,void swap(int a, int b) int temp; temp = a; a = b; b = temp;int main() int x,y; scanf(%d,%d, ,例 两数交换,5,9,5,5,9,COPY,难点:函数的参数传递方式之值传递,运行结果:5, 9,值传递,要点6:基本输入输出语句,getchar()putchar()scanf()printf()数的批量输入输出:基本输入输出循环结构,2022

7、/11/30,高级语言程序设计,20,第一章习题讲解,1.用N-S结构图描述从十个数中选择最大数的算法。,MAXai,2. 给出求从1-100之间能被6整除的所有整数的和的算法。,第二章习题讲解,1. (课后第1题)指出下面的哪些字符序列不是合法的标识符:,_abc x+- 3x1 Xf_1_4 Eoof_a$#24 x_x_2 bg-1_I am,2022/11/30,高级语言程序设计,25,2022/11/30,高级语言程序设计,26,标识符,程序中的名字(描述对象)称为标识符如变量名(s,a,b,c)、 函数名(add, main)等;,标识符分用户定义的标识符和系统预定义的标识符用户定

8、义的如s,a,b,c;系统定义的如标准函数名printf,用户不得使用;,标识符对字母大小写敏感:a和A是不同字母;ABC、Abc、AbC和abc是4个不同标识符,形式:字母或数字组成的连续序列,字母(下划线“_”看作字母)开头(即以字母开头,后跟字母或数字)。,标识符命名基本原则,2022/11/30,高级语言程序设计,27,1)标识符一般需要反映其用途,如:int sum;2)如果标识符名由多个单词构成,通常采用“大小写”混排的方式(Windows应用程序),每个单词的首字符可大写; 如: TotalFiles,AddChild。3)变量名通常使用“名词”或者“形容词名词” 函数名通常使用

9、“动词”或者“动词名词” 4)标识符的长度应当适当。ANSI C规定名字不准超过6个字符,C+/C不再有此限制,但不宜过长。 5)通常将以下划线开始的标识符保留给系统用, 用户不使用。6)Unix(Linux)应用程序的标识符通常采用“小写加下划线”的方式,如add_child。,2. (课后第2题)手工计算下列表达式的值。,1) 125 + 01252)0XAF 0XFA3)24 * 3 / 5 + 64)36 + -(5 23) / 45)35 * 012 + 27 / 4 / 7 * (12 - 4),210,-75,20,40,350,2022/11/30,高级语言程序设计,28,八进

10、制,十六进制,八进制,十六进制,3.(课后第3题)在下列表达式的计算过程中,在哪些地方将发生类型转换,各是从什么类型转换到什么类型,表达式计算的结果是什么?,1) 3 * (2L + 4.5f) 012 + 442) 3* (int)sqrt(34) sin(6) * 5 + 0 x2AF3) cos(2.5f + 4) 6 * 27L + 1526 2.4L,2022/11/30,高级语言程序设计,29,long to float,int to float,int to float,int to float,53.500000,703.397077,1362.576588,2022/11/3

11、0,高级语言程序设计,30,自动类型转换的原则,int char, short,高,低,long,unsigned,double float,转换由编译系统自动完成。转换按数据长度增加的方向进行,即按“向高看齐”的原则提升“较低”类型,以保证不降低精度。,把表示范围小的类型的值转换为表示范围大的类型的值,从低到高转,4. 输入并调试程序,观察运行结果.,#include int main() double f1=1.0e+10; double f2=3.14; printf(%f:%fn,f1); printf(%e:%en,f1); printf(%g:%gn,f1); printf(%f:

12、%fn,f2); printf(%e:%en,f2); printf(%g:%gn,f2); return 0;,%f:10000000000.000000%e:1.000000e+10%g:1e+10%f:3.140000%e:3.140000e+00%g:3.14,2022/11/30,高级语言程序设计,31,按带小数点形式转换输出,按科学表示形式转换输出,按带小数点形式或者科学表示形式转换输出,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%

13、u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,说明:格式字符一般用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出,格式字符表格,.n,对实数,指定小数点

14、后位数(四舍五入),修饰符,功 能,m,输出数据域宽,长度m,左补空格;否则按实际输出,输出数据在域内左对齐(缺省右对齐),-,指定在有符号数的正数前显示正号(+),+,输出数值时指定左面不使用的空位置自动填0,0,在八进制和十六进制数前显示前导0,0 x,#,在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为long double型,l,修饰符,对字符串,指定实际输出位数,5. (课后第7题)写程序计算 的两个根。,2022/11/30,高级语言程序设计,34,int main( ) double delta; printf(Equation:5x2+2x+6n);

15、delat=b*b-4*a*c; if (delta0)printf(“x1=%f,x2=%fn”,0.5*(sqrt(delta)-b)/a, 0.5*(-sqrt(delta)-b)/a); else if (delta=0)printf(“x1=x2=%fn”,-0.5*b/a); elseprintf(“x1=%f+%fi,x2=%f-%fin”,-0.5*b/a,0.5*sqrt(-delta)/a,-0.5*b/a,0.5*sqrt(-delta)/a); return 0;,6. 输入三角形的三边,用下述公式计算三角形的面积: ,其中 s=(a+b+c)/2,2022/11/30

16、,高级语言程序设计,35,#include #include int main( ) double a, b, c, s, area; printf(Please input a,b and c: n); scanf(%lf,%lf,%lf,选做题:计算银行存款的本息。输入存款金额money、存期year和年利率rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留小数点后两位。,2022/11/30,高级语言程序设计,36,#include #include int main() int year; double money,rate,sum; printf(“please i

17、nput the money:n”); scanf(“%lf”,37,上机问题汇总,rintf(“%f”,1065/(24*13);C语言不做类型检查格式字符与输出项类型不一致,自动按指定格式输出第7题:计算5x2+2x+6的两个根。输出它的两个虚根注意C语言中确实会发生自动类型转换,但在写程序时,尽量使得一个表达式中的数据的类型保持一致。节省不必要的空间损失。防止不同类型转换时的信息丢失。,第三章习题讲解,2.设a=1,b=2,c=3,则u的值为:u=a?b:c; u=(a=2)?b+a:c+a;3.设a=1,b=2,c=0,则下列表达式的值为:a & ! (b | c) & !a)! (a

18、 & b) | c? a | b : a & b & c! (a+bc) & b=c*a-b,u=2,u=4,1,0,0,2022/11/30,高级语言程序设计,39,4.程序执行时将在哪些地方发生类型转换,程序打印的值是什么?,int f(int n, float m) return (m + n) / 4; int main() float y = 3;printf(“%dn”, f(y, y+1);return 0; ,1,2022/11/30,高级语言程序设计,40,conversion from float to int,conversion from float to int,8.

19、定义函数 double tmax(double, double,double),返回三个数中的最大的。,double tmax(double x, double y, double z)double max = x;if (y max) max = y;if (z max) max = z;return max;,2022/11/30,高级语言程序设计,41,10.四边形的边长为a,b,c,d及一对对角之和angel,求四边形的面积。,double QuaArea(double a, double b, double c, double d, double e)double s = (a+b+

20、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;,有问题吗?,2022/11/30,高级语言程序设计,42,12.写程序求任意二次方程的根。,void root(double a, double b, double c) double d = b*b - 4*a*c; if (a=0) if ( b!=0 ) printf(Only one root:x=%fn,-c/b); else if (c=0) printf( Any roots! ); else pri

21、ntf(No root !); else if (d 0.) printf(“Two different real roots:);else if (d = 0.)printf(Two same real roots: x1=x2=%fn, -b/2./a);elseprintf(Two different complex roots:); ,2022/11/30,高级语言程序设计,43,22.写一个程序打印1至100之间的被6或7整除的数;修改这个程序使得它只打出被6或7之一整除的数(不包括同时被两者整除的数)。,int main ()int i = 0;while (i = 100)if

22、(i % 6 = 0 ,2022/11/30,高级语言程序设计,44,补充题1. 求分段函数,#include #include #define a 10double func(double );int main()double x;printf(Please input a number:n);scanf(%lf,double func(double x)double y;if (x=a)|(x=-a) y=0.0;else if (fabs(x)a) y=sqrt(a*a-x*x); else y=x;return y;,2022/11/30,高级语言程序设计,45,2022/11/30,

23、高级语言程序设计,46,#includeint GradeIf(int);int GradeSwitch(int);int main()int n; printf(Input the mark from 0 to 99 n);while (scanf(%d, ,补充题2. 从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输。9099为A级,8089为B级,7079为C级,6069为D级,059为E级。,2022/11/30,高级语言程序设计,47,int GradeIf(int n)if(n99 | n=90)printf(The grade is A!n);else if(n=80

24、)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);elseprintf(The grade is E!n);return 0;,2022/11/30,高级语言程序设计,48,int GradeSwitch(int n)if(n99 | n0)n=-1;elsen=n/10;switch (n)case -1: printf(Input error!n);break; case 9:printf(The grade is A!n);break;

25、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;,2022/11/30,高级语言程序设计,49,补充题3. 求水仙花数,void method1(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

26、*k)printf(%d是水仙花数n,i*100+j*10+k);,void method2(void)int i,m,n,l;for (i=100;i=999;i+)m = i/100;n = i/10%10;l = i%10;if(i=m*m*m+n*n*n+l*l*l)printf(%d是水仙花数n,i);,补充题4. 完数游戏。如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。,算法思想:sum=0, m=2当m=1000时,反复执行(2.1), (2.2), (2.3), (2.4), 否则转(3) (2.1) k=m/2, n=0, j=1 (2.2) 当

27、j=k时,反复执行(2.2.1), (2.2.2), 否则转(2.3) (2.2.1) if(j是m的因子) 执行n=n+j (2.2.2) j+ (2.3) if (m等于n) 则输出 完数 m ,计算sum=sum+m (2.4) m+输出sum值,2022/11/30,高级语言程序设计,50,int main()int i,j,sum,n; sum=0; for(i=2;i=1000;i+) n=0; for(j=1;j=i/2;j+) if(i%j=0) n=n+j; if(n=i) sum+=i; printf(完数%dn,i); printf(1000之内完数和值=%dn,sum)

28、; return 0;,2022/11/30,高级语言程序设计,51,2022/11/30,高级语言程序设计,52,补充题5. 打印如下图案,#define n 4int main() int i,j,k; for(i=0;i=0;i-) for(j=0;j=n-i;j+)printf( );for(k=0;k2*i-1;k+)printf(B);printf(n); return 0;,选做题. 验证歌德巴赫猜想。任意一个不小于6的偶数 n,都能将其表示成两个素数(只能被1和它本身整除的数)之和。,int main() long a,t,n,x; printf(请输入一个不小于6的偶数:n)

29、; scanf(%ld,long prime(long m) long i; if(i=1) return 0; for(i=2;i*i=m;i+)if(m%i=0) return 0; return 1;,2022/11/30,高级语言程序设计,53,2022/11/30,高级语言程序设计,54,给一个不多于3位的正整数,要求出它是几位数;分别输出每一位数字按新逆序输出各位数字,例如原数为321,应输出123,算法思想:设a是整数变量;如果a999则输入错误如果a=0并且a=10并且a=100并且a1000则输出a是百位数个位数是a%10十位数是a/10%10百位数是a/100,#inclu

30、de /程序分析int main () int x, a, b, c, d; scanf(%d, ,第四章习题讲解,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;,2022/11/30,高级语言程序设计,57,2022/11/30,高级语言程序设计,58,9.用公式编程求圆周率的近似值,#include #define PI 3.14159165int main()int fi=1;double sum=0

31、.0;double pi,term=1.0;double n;printf(please input the difference:n);scanf(%lf,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 sum;,2022/11/30,高级语言程序设计,59,2022/

32、11/30,高级语言程序设计,60,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;,2022/11/30,高级语言程序设计,61,19.写

33、程序读入一系列整数,求最大数和次大数。,int tmax(void)int n, m, max1, max2;printf(Please input some integers:n);scanf(%d%d, ,21.求折线段的面积,double FigureArea(void)double y1, y2, area = 0.0;printf(Please input a series positive float number.n);if (scanf(%lf, ,2022/11/30,高级语言程序设计,62,补充题1. 有一分数序列 2/1,3/2,5/3,8/5,13/8, 21/13求这

34、个数列前20项之和。(32.660261),第一项的分子为2,分母为1其它项分子分母之间的关系:下一项的分母是前一项的分子;下一项的分子是前一项的分子+分母;,2022/11/30,高级语言程序设计,63,#include int main() double sum=0.0;int i; int a1=2,a2=1,tmp; for(i=1;i=20;i+) sum=sum+a1/(double)a2; tmp=a1; a1=a1+a2; a2=tmp; printf(sum=%lfn,sum); return 0;,2022/11/30,高级语言程序设计,64,补充题2. 猴子吃桃问题。猴子

35、第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第十天早上想再吃时,只剩一个桃子了。求第一天共摘多少桃子。(1534),2022/11/30,高级语言程序设计,65,逆向思维:第10天,剩余的桃子数1第9天,剩余的桃子数?第i天,剩余的桃子数?第1天,一共摘的桃子数,(1+1)*2,(第i+1天剩余的桃子)+1)*2,2022/11/30,高级语言程序设计,66,#include int main()int day,x1,x2; day=9; x1=1; while(day0) x2=(x1+

36、1)*2; x1=x2; day-; printf(the total is%dn,x1); return 0;,2022/11/30,高级语言程序设计,67,2022/11/30,高级语言程序设计,68,补充题3.打印如下图案,1 1 2 11 2 3 2 11 2 3 4 3 2 11 2 3 2 11 2 11,void Figure(int n) int i, j; for (i = 1; i = 1; j-) printf( ); for (j = 1; j = 1; j-) printf(%d, j); printf(n); for (i = 1; i = 1; j-) print

37、f(%d, j); printf(n); ,2022/11/30,高级语言程序设计,69,补充题4. 用递归的方法求N阶勒让德多项式的值,递归公式为,double pn(int n, double x)double value;if(n=0) value=1;else if(n=1)value=x;elsevalue=(2*n-1)*x*pn(n-1,x)-(n-1)*pn(n-2,x)/n;return value;,void CountCh(void)int ch;int i = 0, j = 0, k = 0, m = 0;while (ch = getchar() != n)if (c

38、h = 65 ,补充题5. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。,71,1.constant 常量2. variable 变量3. identify 标识符4. keywords 关键字 5. sign 符号 6. operator 运算符 7. statement 语句8. syntax 语法 9. expression 表达式 10. initialization 初始化 11. number format 数据格式 12 declaration 说明 13. type conversion 类型转换 14.define 、 definition 定义,常见术语的中英文对照,Q A!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号