[其它考试]湖南省计算机水平考试强化培训班二级C语言.doc
《[其它考试]湖南省计算机水平考试强化培训班二级C语言.doc》由会员分享,可在线阅读,更多相关《[其它考试]湖南省计算机水平考试强化培训班二级C语言.doc(50页珍藏版)》请在三一办公上搜索。
1、湖南省计算机水平考试强化培训班二级C语言讲授内容:1. 选择结构(if、ifelse、switch语句)2. 循环结构(while、dowhile、for、break和continue语句)3. 函数的定义与调用4. 数组5. 改错和填空、程序设计常见问题分析和举例选择结构1 格式格式1:if(表达式)语句;格式2:if(表达式)语句1; else 语句2;2 功能 3 注意(1) 表达式可以是常量、变量、算术表达式、关系表达式、逻辑表达式,但表达式中的变量应该是已赋值,只判断表达式的值是否为非零。几种特殊情况:if(5)if(a) if(a!=0)if(a+b) if(a+b!=0)if(a
2、b&bc) 错误的是:if(abc),也不能是:if(ab,bc)if(a=b) 相当于:a=b; if(a!=0)if(a=b) if(ch=A&ch=a&ch=A&ch=a&chb)t=a;a=b;b=t;(3) if语句嵌套搞不清楚时,尽量使用单if语句。如:if(a0) if(b10)c=c+1;可改成:if(a0&b10)c=c+1;4 switch语句格式:switch(表达式) case 常量1:语句序列1;break;case 常量2:语句序列2;break;case 常量n:语句序列n;break;default: 语句序列n+1;注意:(1) 表达式运算的结果是整数;(2)
3、 有无break语句的执行不同。循环结构1 while语句 格式:while(表达式) 循环体2 dowhile语句 格式: do 循环体;while(表达式);3 for语句 格式: for(表达式1;表达式2;表达式3) 循环体;对于上述三种循环结构要了解下面几个问题:(1) 表达式是循环控制条件,与if语句中的表达式一样。(2) 三种循环语句的执行过程。#include stdio.hvoid main() int a,b; for(a=1;a=9;a+) printf(a=%d:,a);for(b=1;b=a;b+) printf(%8d,a*b);printf(n);下面的程序是求表
4、达式的值:s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*2*3*.*n)/(3*5*7*.(2*n+1)请修改程序中的错误,并运行修改后的程序。当n=30时,程序的运行结果(按四舍五入保留10位小数)。程序:#include #include #include double fun(int n) double s, t; int i; s=1.0; t=1.0; for(i=1;i=n; i+) /*下行有错*/ t=t*n/(2*n+1); /*下行有错*/ s=t; return s;main()printf(n %12.10lf, fun(30);4
5、break和continue语句函数1 函数定义的格式 一般格式: 函数类型 函数名(形参及形参类型) 函数体 注意:(1) 函数类型的定义:如果只有一个返回值,根据返回值的数据类型来定义。无返回值或2个或2个以上,函数类型定义为void. float fun (int n) float s; return s;void main() printf(“%10.2fn”,fun(20);(2) 形参及形参类型:每个形参要分别定义其数据类型;实参将值单向传递给形参。如:void fun(int x ,int y)x=x+1; y=y+1;void main()int a=10,b=20;fun(a
6、,b);printf(“a=%d,b=%dn”,a,b); (3) 函数体中的return语句只能返回一个值。2 函数调用格式:函数名(实参列表) 实参与形参应一一对应,数据类型与个数也应一一对应。TC参数传递方向从右向左。3函数调用方式:递归调用数组1 数组的定义格式:一维数组:数据类型 数组名常量二维数组:数据类型 数组名常量1常量2注意:(1) 数组元素下标从0开始到长度减1int a5;数组元素有:a0 a1 a2 a3 a4下标从0变化到4,可以使用一个循环变量来控制,如:for(i=0;i=4;i+),i的变化恰好是下标值的变化。int a34;数组元素有: a00 a01 a02
7、 a03 a10 a11 a12 a13 a20 a21 a22 a23同样以上一样,可以用一个双层循环来控制二维数组下标的变化: for(i=0;i=2;i+)for(j=0;j=3;j+)2. 数组的引用两种方式:引用数组元素名(直接方式)和引用数组名。(1) 引用数组元素名时,可把数组元素名看作是单个的变量来使用。如: scanf(“%d”,&a0); a0=10;(2) 引用数组名时,数组名只能作函数参数,且传递整个数组。在被调函数中对形参数组操作,形参数组的值能返回到实参数组。如:void fun(int b,int n) int k; for(k=0;kn;k+) bk=bk+1;
8、 void main() int a5=0,1,2,3,4,k; fun(a,5); for(k=0;k5;k+) printf(“%8d”,ak); 改错题 单击”考生文件夹”,进入下面界面首先看清题目,有几个错误提示行,则必须改正几个错误。每一个错误在提示行的下一行。运行程序,填上正确的答案。前后不要加空格,数据输出不要在汉字输入状态举例:1 输入函数变量前没有取地下址运算符下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+.+1/(m*(m+1) 请改正程序中的错误,并运行改正后的程序。当从键盘输入56时,给出程序运行的正确结果。程
9、序:#include #include double fun(int m) double t=1.0;int i=2;for(i=2;i=m;i+) /*下行有错 */ t=1.0/(i*(i+1);return t; main() int m;printf(n 请输入一个整数: );/*下行有错 */scanf(%d,m);printf(%lf n,fun(m); 2 变量数据类型定义为整数,进行除法运算时,要转化为实数运算。下列程序的功能是:求出以下分数序列的前30项之和,2/1,3/2,5/3,8/5,13/8,21/13,请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保
10、留6位小数)。程序:#include #include main() long a,b,c,k; double s; clrscr(); s=0.0; a=2; b=1; for(k=1;k=30;k+) /*下行有错*/ s=s+a/b; c=a; a=a+b; b=c; printf(%lfn, s);3 变量赋初值错误。(一般的情况:求和变量初值为0,求积初始值为1)。 以下程序求1,1000之间能被5 和 7 整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。#include #include #include main()int i,sum;/
11、*下行有错*/sum=1;for ( i=1;i=1000;i+) /*下行有错*/ if ( fmod(i,5)=0)|(fmod(i,7)=0) sum=sum+i; clrscr();printf(%dn,sum);4 运算出错。常见的错时:%用/,=用!=,|用&,可反过来用。以下程序求1,1000之间能被5 和 7 整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。#include #include #include main()int i,sum;/*下行有错*/sum=1;for ( i=1;i=1000;i+) /*下行有错*/ if (
12、 fmod(i,5)=0)|(fmod(i,7)=0) sum=sum+i; clrscr();printf(%dn,sum);5 边缘条件出错误,应该是=时,只有.以下程序求1,500之间能被3 或5整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果.#include #include #include main()int i;int sum;sum=0;/*下行有错*/for ( i=1;i500;i+) if ( fmod(i,3)=0)|(fmod(i,5)=0)sum+=i; printf(%dn,sum);6. 算法出错 下面的程序是求500以内的所有的素数
13、之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。程序:#include #include #include int prime(int n) int yes, i; if(n=1) return 1; yes=1; for(i=2; i=sqrt(n); i+) if(n%i=0) yes=0; break;/*下行有错*/ return 1;main() int sum=0, i; clrscr(); for(i=2;i=500; i+) if(prime(i) sum+=i; printf(%dn, sum); 7“+”与“+”用法出错。以下程序求1,500之间能被5 和
14、7 整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。#include #include #include main()int i,sum;sum=0;for ( i=4;i=500;i+) if ( fmod(i,5)=0)&(fmod(i,7)=0) /*下行有错*/ sum=+i; printf(%dn,sum);8表达式出错(“*”导致的错误)下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+1/(m*(m+1) 当从键盘输入70时,给出程序运行的正确结果。#include #include
15、 double fun(int m) double t=1.0;int i=2;for(i=2; i=m; i+)/*下行程序有错*/ t+=1.0/i*(i+1);/*下行程序有错*/return ;main() int m;clrscr();printf(n 请输入一个整数: );scanf(%d,&m);printf(%lf n, fun(m);9结果是求个数,不是求累加和。下面程序是求20,1000之间同时满足除4余3或除5余4条件的数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include #include #include main()
16、 int count; int i; count=0; for (i=20;i=1000;i+) if (fmod(i,4)=3 | fmod(i,5)=4) /*下行有错*/ count+=i; printf(%ldn,count);10For语句的三个表达式出错。下面的程序是求表达式的值: s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*2*3*.*n)/(3*5*7*.(2*n+1) 当n=20时,程序的运行结果(按四舍五入保留10位小数)。程序:#include #include double fun(int n) double s, t; int i
17、; /*下行有错*/ s=0.0; t=1.0; /*下行有错*/ for(i=1;i=n; i-) t=t*i/(2*i+1); s+=t; return s; main()printf(n %12.10lf, fun(20);11函数数据类型定义或变量数据类型定义出错下面的程序是计算如下公式的A30值。 A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), .请改正程序中的错误,并给出程序运行的正确结果(按四舍五入保留10位小数) 程序:#include #include double fun(int n) /*下行有错*/ int A=1;int i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其它考试 其它 考试 湖南省 计算机水平 强化 培训班 二级 语言
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4664908.html