欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [其它考试]湖南省计算机水平考试强化培训班二级C语言.doc

    • 资源ID:4664908       资源大小:288KB        全文页数:50页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [其它考试]湖南省计算机水平考试强化培训班二级C语言.doc

    湖南省计算机水平考试强化培训班二级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>b&&b>c) 错误的是:if(a>b>c),也不能是:if(a>b,b>c)if(a=b) 相当于:a=b; if(a!=0)if(a=b) if(ch>=A&&ch<=Z)if(ch>=a&&ch<=z)if(ch>=A&&ch<=Z| ch>=a&&ch<=z)if(x%i=0)是错误的表达式,正确的是:if(x%i=0)(2) 满足表达式执行多个语句时一定要用大括号括起来。如: if(a>b)t=a;a=b;b=t;(3) if语句嵌套搞不清楚时,尽量使用单if语句。如:if(a>0) if(b>10)c=c+1;可改成:if(a>0&&b>10)c=c+1;4 switch语句格式:switch(表达式) case 常量1:语句序列1;break;case 常量2:语句序列2;break;case 常量n:语句序列n;break;default: 语句序列n+1;注意:(1) 表达式运算的结果是整数;(2) 有无break语句的执行不同。循环结构1 while语句 格式:while(表达式) 循环体2 dowhile语句 格式: do 循环体;while(表达式);3 for语句 格式: for(表达式1;表达式2;表达式3) 循环体;对于上述三种循环结构要了解下面几个问题:(1) 表达式是循环控制条件,与if语句中的表达式一样。(2) 三种循环语句的执行过程。#include "stdio.h"void 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");下面的程序是求表达式的值: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 <conio.h>#include <stdio.h>#include <math.h>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 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,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 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;k<n;k+) bk=bk+1; void main() int a5=0,1,2,3,4,k; fun(a,5); for(k=0;k<5;k+) printf(“%8d”,ak); 改错题 单击”考生文件夹”,进入下面界面首先看清题目,有几个错误提示行,则必须改正几个错误。每一个错误在提示行的下一行。运行程序,填上正确的答案。前后不要加空格,数据输出不要在汉字输入状态举例:1 输入函数变量前没有取地下址运算符下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+.+1/(m*(m+1) 请改正程序中的错误,并运行改正后的程序。当从键盘输入56时,给出程序运行的正确结果。程序:#include <conio.h>#include <stdio.h>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,请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。程序:#include <conio.h>#include <stdio.h>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 <conio.h>#include <stdio.h>#include <math.h>main()int i,sum;/*下行有错*/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 <conio.h>#include <stdio.h>#include <math.h>main()int i,sum;/*下行有错*/sum=1;for ( i=1;i<=1000;i+) /*下行有错*/ if ( fmod(i,5)=0)|(fmod(i,7)=0) sum=sum+i; clrscr();printf("%dn",sum);5 边缘条件出错误,应该是<= 或>=时,只有<或>.以下程序求1,500之间能被3 或5整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果.#include <conio.h>#include <stdio.h>#include <math.h>main()int i;int sum;sum=0;/*下行有错*/for ( i=1;i<500;i+) if ( fmod(i,3)=0)|(fmod(i,5)=0)sum+=i; printf("%dn",sum);6. 算法出错 下面的程序是求500以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。程序:#include <conio.h>#include <stdio.h>#include <math.h>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 和 7 整除的数之和。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。#include <conio.h>#include <stdio.h>#include <math.h>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 <conio.h>#include <stdio.h>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 <conio.h>#include <stdio.h>#include <math.h>main() 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 <stdio.h>#include <math.h>double fun(int n) double s, t; int i; /*下行有错*/ 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 <conio.h>#include <stdio.h>double fun(int n) /*下行有错*/ int A=1;int i; for(i=2; i<=n; i+) A=1/(1+A); /*下行有错*/ return ;main() printf("%12.10lfn", fun(30); 12奇偶数问题下面程序是求20,160之间的所有偶数的平方和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include <conio.h>#include <stdio.h>#include <math.h>main() long sum; int i; sum=0; /*下行有错*/ for (i=20;i<160;i+) /*下行有错*/ if (fmod(i,2)!=0) sum+=i*i; clrscr(); printf("%dn",sum);填空题(1)阅读题目,搞清题意;(2)阅读程序,理解算法,特别是程序中每个变量的作用.(3)根据程序运行,计算和估算,发现程序中缺什么,需要补充什么?如:已知24有8个因子,而24正好被8整除。求50,250之间有多少个整数能被其因子的个数整除,将下列程序补充完整,把程序运行的正确结果填入相应窗口。程序:#include <conio.h>#include <stdio.h>#include <math.h>main() int a,b,c,n,count=0; for (a=50; a<=250; a+) _ for (c=1;c<=a;c+) if ( _ ) b+=1; if (a%b=0) count+; printf("%d",count);1.补充变量定义和赋初值如: 以下程序求1,700之间能被3 或7 整除的数之和。请将程序补充完整,把程序运行的正确结果填入相应窗口。#include <conio.h>#include <stdio.h>#include <math.h>main() _sum=0;for ( i=1;i<=700;i+) if ( fmod(i,3)=0)|(fmod(i,7)=0) _ clrscr();printf("%ld",sum);如:下面的程序是求表达式的值: 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=40时,将程序的运行结果填入相应窗口(按四舍五入保留10位小数)程序:#include <conio.h>#include <stdio.h>#include <math.h>double fun(int n) double s, t; int i; _t=1.0; for(i=1;i<=n; i+) t=t*i/(2*i+1); _ return s;main()printf("%12.10lf", fun(40); 2. 补充for语句的三个表达式如:已知24有8个因子,而24正好被8整除。求50,250之间所有能被其因子的个数整除的整数之和,将下列程序补充完整,把程序运行的正确结果填入相应窗口。程序:#include <conio.h>#include <stdio.h>#include <math.h>main() int a,b,c,n,sum=0; for ( _ ) b=0; for (c=1;c<=a;c+) if (a%c =0) b+=1; if (a%b=0) _ printf("%d",sum);3填写表达式,实现算法(程序实现的主要语句)下面的程序是求如下表达式的值。S=sqrt(ln(1)+ln(2)+ln(3)+ln(n)将程序补充完整, 当n=40时,把程序运行的正确结果填入相应窗口。#include <conio.h>#include <stdio.h>#include <math.h>double fun(int n) double s=0.0;int i; for(i=1;i<=n;i+) _ s=sqrt(s); return s;main() clrscr(); printf(_);4补充if语句中的条件如:求1,100中的非素数的个数,采用函数fun( int m, int xx )实现,函数fun的功能是:将1,m中的非素数存入xx数组中,返回非素数的个数。将下列程序补充完整,把程序运行的正确结果填入相应窗口。#include "stdio.h"fun( int m, int xx ) int i,j,k=0; xxk+=1; for( i=2; i<=m; i+) for( j=2; j<i; j+) if( _) xxk+=i; break; _;main() int zz100; printf("%dn",fun(100,zz); 5在for语句中加break语句如:设S=1+(1+3)+(1+3+5)+(1+3+5+7)+,求S>10000的最小值S。请将下列程序补充完整,把程序运行的正确结果填入相应窗口。#include "stdio.h"main() int k,s=0,sum=0; for(k=1;k+) _; sum=sum+s; if(sum>10000) _; printf("%dn",sum);6输出结果已知(1)=1,x(2)=1/(1+x(1),x(3)=1/(1+x(2),x(n)=1/(1+x(n-1),求x(1)+x(2)+x(3)+x(10)。按四舍五入的方式精确到小数点后三位。请将下列程序补充完整,把程序运行的正确结果填入相应窗口。#include "stdio.h"main() int n; float x=1,s=1; for(n=2;n<=10;n+) _; s=s+x; printf(_);7函数调用格式如:所谓回文数是从左至右与从右至左读起来都是一样的数字,如:121。编一个程序,计算在100200的范围内回文数的累加和。请将下列程序补充完整,把程序运行的正确结果填入相应窗口。#include "stdio.h"int fun(int a,int b) int i,count=0,low,high; for ( i=a;i<=b;i+ ) low=i%10; high=i/100; if( low=high ) _; return count;void main() printf("%dn",_ );程序设计(1) 看清题目;(2) 程序设计题主要是利用选择、循环和数组三方面的知识;(3) 主要是数学计算;1 素数方面定义:除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,2是素数)函数一: int fun(int x) int n,yes; for(n=2;n<x;n+)if(x%n=0)break;if(n>=x)yes=1;else yes=0;return yes; 函数二:int fun(int x) int n,yes; for(n=2;n<sqrt(x);n+)if(x%n=0)break;if(n>=sqrt(x)yes=1;else yes=0;return yes; 函数三:int fun(int x) int n,yes=1; for(n=2;n<x;n+)if(x%n=0)yes=0;return yes; 例1 两个素数之差为2,则称这两个素数为双胞胎数。求出200,1000之间的最大一对双胞胎数的和。程序为:void main() int k,max; for(k=200;k<2000;k+) if(fun(k)=1&&fun(k+2)=1)max=k+k+2;printf(“%dn”,max);例:若两个连续的自然数的乘积减1后是素数,则称此两个连续自然数为友数对,该素数称为友素数。例如,由于 8*9-1=71, 因此,8与9是友数对,71是友素数。求100,200之间的第10个友素数对所对应的友素数的值(按由小到大排列)。程序为:void main()int k,ans,s=0;for(k=100;k<200;k+) if(fun(k*k+k-1)=1)ans=k;s+; if(s=10)break;printf(“%dn”,ans);2分解数位分析:任意一个正整数x,分解出各个数位: 方法或表达式很多,例如:个位:x%10 百位:x/10%10千位:x/100%10 另:5位数取最高位:x/10000例:求符合下列条件的四位完全平方数(某个正整数A是另一个正整数B的平方,则称A为完全平方数),它的千位数字与十位数字之和等于百位数字与个位数字之积,例如,3136=562, 且3+3=1*6 故3136是所求的四位完全平方数. 求其中最大的一个数。程序为:void main() int a, b,c,d,e,f,answer; for(a=1000;a<=9999;a+) b=sqrt(k);c=a%10;d=a/10%10;e=a/100%10;f=a/1000;if(b*b=k&&f+d=e*c)answer=a; printf(“%dn”,answer); 3n元一次方程求解分析:根据方程x1+x2+x3+xn=s(可能还有条件)x1、x2、x3、xn的取值范围都是1s-1,用穷举法实现,n层循环嵌套。例:马克思曾经做过这样一道趣味数学题:有30个人在一家小饭店里用餐,其中有男人、女人和小孩,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,共花去50先令。如果要求男人、女人和小孩都有人参与,试求有多少种方案分配男人、女人和小孩的人数。程序为:void main() int x,y,z,s=0; for(x=1;x<30;x+)for(y=1;y<30;y+)for(z=1;z<30;z+) if(x+y+x=30&&3*x+2*y+z=50)s+;printf(“%dn”,s);类似:50元的整币兑换成5元、2元和1元币值(三种币值均有、缺少一种或两种都计算在内)的方法有多少种。4.勾股、弦数问题分析:实际是一个穷举法。例:倒勾股数是满足公式: 1/A2+1/B2=1/C2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/1562+1/652=1/602。假定A>B>C,求A,B,C之和小于100的倒勾股数有多少组?程序为:void main()int a,b,c,s=0; for(c=1;c<100;c+)for(b=c+1;b<100;b+) for(a=b+11;a<100;a+) if(a+b+c<100&&fabs(1.0/a/a+1.0/b/b-1.0/c/c)<0.000001)s+;printf(“%dn”,s); 5.完数因子问题分析:先任意正整数x求因子之和。 s=0;n=0; for(k=1;k<x/2;k+)if(x%k=0)s=s+k;n+;例:已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好能被其因子数8整除,求正整数10,100之间有多少个正整数能被其因子的个数整除。程序为:void main()int s,n,x,sum=0; for(x=10;x<=100;x+)s=0;n=0;for(k=1;k<x/2;k+)if(x%k=0)s=s+k;n+;/*s在本题中没用*/if(x%n=0)sum+;printf(“%dn”,sum);6. (数列)四舍五入注意关键问题:两个整数相除,结果为整数.所以要转化为实数运算.例: 当n=100时,计算S=(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/(2n)的值。要求:按四舍五入的方式精确到小数点后第三位。程序为:void main() int n; float s=0; for(n=1;n<=100;n+) s=s+1.0/(2*n-1)-1.0/(2*n); printf(“%.3fn”,s);例:计算Y=X/1!-X3/3!+X5/5!-X7/7!+前20项的值(已知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。程序为:void main()int n; float a,s,x=2; for(a=x,s=x,n=2;n<=20;n+) a=a*x/(2*n-1)/(2*n-2);s=s+a;printf(“%.2fn”,s);7. 数列问题分析:最简单办法采用数组。注意:数列递增方式要注意数据类型的定义。例:已知 f(0)=f(1)=1 f(2)=0f(n)=f(n-1)-2*f(n-2)+f(n-3) (n>2)求f(0)到f(50)中的最大值 void main() int n; long int f51,max=1; f0=1; f1=1; f2=0; for(n=3;n<51;n+) fn=fn-1-2*fn-2+fn-3; if(max<fn)max=fn;printf(“%ldn”,max); 8. a,b,c,d,e类分析:数字游戏,穷举法,多层循环实现例:设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的所有四位数abcd的和。程序为:void main() int a,b,c,d,e,sum=0; for(a=1;a<10;a+) for(b=1;b<10;b+) for(c=0;c<10;c+) for(d=0;d<10;d+) for(e=2;e<10;e+)if(a*1000+b*100+c*10+d)*e=b*1000+c*100+d*10+e)sum=sum+ a*1000+b*100+c*10+d;printf(“%dn”,sum);9. 解方程的整数解例:求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。试问这样的整数解中|x|*|y|的最大值是多少?程序为:void main()int x,y; long int max=-1; for(x=-150;x<=150;x+) for(y=-200;y<=200;y+) if(8*x-5*y=3&&max< fabs(x)*fabs(y)max= fabs(x)*fabs(y);printf(“%ldn”,max);

    注意事项

    本文([其它考试]湖南省计算机水平考试强化培训班二级C语言.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开