湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx

上传人:b****6 文档编号:20071889 上传时间:2023-01-16 格式:DOCX 页数:33 大小:149.07KB
下载 相关 举报
湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx_第1页
第1页 / 共33页
湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx_第2页
第2页 / 共33页
湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx_第3页
第3页 / 共33页
湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx_第4页
第4页 / 共33页
湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx

《湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。

湖南省计算机水平考试强化培训班二级C语言Word文件下载.docx

10)c=c+1;

可改成:

0&

4.switch语句

格式:

switch(表达式)

{

case常量1:

语句序列1;

[break;

]

case常量2:

语句序列2;

case常量n:

语句序列n;

default:

语句序列n+1;

注意:

(1)表达式运算的结果是整数;

(2)有无break语句的执行不同。

 

循环结构

1.while语句

格式:

while(表达式)

{循环体}

2.do~while语句

do

{

循环体;

}while(表达式);

3.for语句

for(表达式1;

表达式2;

表达式3)

{循环体;

对于上述三种循环结构要了解下面几个问题:

(1)表达式是循环控制条件,与if语句中的表达式一样。

(2)三种循环语句的执行过程。

#include"

stdio.h"

voidmain()

{inta,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>

stdio.h>

math.h>

doublefun(intn)

{doubles,t;

inti;

s=1.0;

t=1.0;

for(i=1;

i<

=n;

i++)

{/*下行有错*/

t=t*n/(2*n+1);

/*下行有错*/

s=t;

}

returns;

main()

{printf("

\n%12.10lf"

fun(30));

4.break和continue语句

函数

1.函数定义的格式

一般格式:

函数类型函数名(形参及形参类型)

{函数体}

注意:

(1)函数类型的定义:

如果只有一个返回值,根据返回值的数据类型来定义。

无返回值或2个或2个以上,函数类型定义为void.

floatfun(intn)

{floats;

returns;

printf(“%10.2f\n”,fun(20);

(2)形参及形参类型:

每个形参要分别定义其数据类型;

实参将值单向传递给形参。

voidfun(intx,inty)

{x=x+1;

y=y+1;

inta=10,b=20;

fun(a,b);

printf(“a=%d,b=%d\n”,a,b);

(3)函数体中的return语句只能返回一个值。

2.函数调用格式:

函数名(实参列表)

实参与形参应一一对应,数据类型与个数也应一一对应。

TC参数传递方向从右向左。

3.函数调用方式:

递归调用

数组

1.数组的定义

一维数组:

数据类型数组名[常量]

二维数组:

数据类型数组名[常量1][常量2]

(1)数组元素下标从0开始到长度减1

inta[5];

数组元素有:

a[0]a[1]a[2]a[3]a[4]

下标从0变化到4,可以使用一个循环变量来控制,如:

for(i=0;

=4;

i++),i的变化恰好是下标值的变化。

inta[3][4];

a[0][0]a[0][1]a[0][2]a[0][3]

a[1][0]a[1][1]a[1][2]a[1][3]

a[2][0]a[2][1]a[2][2]a[2][3]

同样以上一样,可以用一个双层循环来控制二维数组下标的变化:

for(i=0;

=2;

i++)

for(j=0;

j<

=3;

j++)

2.数组的引用

两种方式:

引用数组元素名(直接方式)和引用数组名。

(1)引用数组元素名时,可把数组元素名看作是单个的变量来使用。

scanf(“%d”,&

a[0]);

a[0]=10;

(2)引用数组名时,数组名只能作函数参数,且传递整个数组。

在被调函数中对形参数组操作,形参数组的值能返回到实参数组。

voidfun(intb[],intn)

{intk;

for(k=0;

k<

n;

k++)

b[k]=b[k]+1;

{inta[5]={0,1,2,3,4},k;

fun(a,5);

5;

printf(“%8d”,a[k]);

特殊问题

1.数据的输入与输出

scanf(“格式控制字符串”,输入地址列表);

该函数出错的四个问题:

(1)格式字符选择不对;

常见的是所有的数据都采用d%.

数据类型

格式字符

int

%d

longint

%ld

unsignedint

%u

unsignedint

%lu

float

%f

double

%lf

char

%c

字符串

%s

(2)输入地址列表出错,无地址运算符,只有变量名。

scanf(“%f”,x);

正确的是:

scanf(“%f”,&

x);

(3)格式控制字符串中的字符在数据输入时必须原样输入。

scanf(“x=%f,a=%d\n”,&

x,&

a);

正确的输入是:

x=12,a=345\n

(4)数据输入格式不对。

格式串中有其它字符时,必须按上述(3)进行。

对于数值型数据的输入,如果没有其它字符分隔,有两种办法:

用空格分隔多个数据,或每输入一个数据换行。

特别是数组的输入,常用空格分隔。

输出函数printf(“格式控制字符串”,输出项列表);

%lf或%f

说明:

(1)在输出语句的普通字符是原样输出;

(2)%md中是m是规定输出项的宽度;

(3)%m.nf中m是域宽,n是保留小数位数,系统会自动进行四舍五入。

2.程序中分号引起的错误

程序中原则上每一行有一个分号,每一个分号对应C语言的一个语句,而导致算法出错的是多加了分号,少了分号系统编译的时就会出错。

常见错误:

正确

错误

if(表达式);

语句;

else语句2;

if(表达式);

语句1;

{...}

while(表达式);

for(表达式1;

{...}

表达式3);

注:

for语句中分号分隔三个表达式,分号不能省

复合语句:

{t=a;

b=t};

函数定义:

函数类型函数名(形参及类型)

函数类型函数名(形参及类型);

结构体定义:

structstu

{intx;

floaty;

};

3.运算符使用出错

在程序设计中,使用运算符时常出现以下错误:

运算符

*

表达式时不能缺省,特别是

平方和立方

/

与转义字符\混淆;

两个整数相除,结果为整数

实数不能进行求余运算

类型强化转换运算符

正确:

(float)(a+b)(float)a/b

错误:

float(a+b)float(a/b)

与&

和||运算符出错

a>

c与a>

c

、||

连接两个条件,常用逗号连接

==

a==ba=b

4.赋初值问题

定义了变量或数组,当第一次使用变量或数组元素时,如果变量或数组元素参与计算或需要输出其值时,则必须赋初始值。

特别是变量或数组元素第一次使用出现在赋值号的右边时,则一定要有初始值。

一般情况下:

求和变量赋初值为0,求积变量赋初始值为1。

三种方式赋初始值:

(1)变量初始化:

定义变量时赋初始值。

inta=1;

floaty=1.23;

(2)采用赋值语句赋值

inta;

a=1;

y=1.23;

(3)采用格式化数据输入函数scanf()

inta;

scanf(“%d%f”,&

a,&

y);

5.函数

函数定义格式:

函数返回值数据类型说明函数名(形参及类型)

变量说明部分;

语句执行部分;

(1)当被定义函数有一个返回值,函数数据类型应根据返回的值的数据类型定义,且函数体中有return语句。

其它函数的数据类型定义为void。

定式如下:

(****代表同一种数据类型)

****fun(形参及类型)

****x;

………

returnx;

{****s;

….

s=fun(…);

….}

如:

floatadd(floatx,floaty)

{floatz;

z=z+y;

returnz;

{floatop1,op2,sum;

scanf(“%f%f”,&

op1,&

op2);

sum=add(op1,op2);

printf(“%f\n”,sum);

(2)参数传递

传递方式:

实参将值单向一一对应传递给形参。

TC中参数方向是从右向左。

voidfun(intx,int*y)

{…}

{inta=10,b;

……

fun(,);

…..

6.判断取整的问题

例判断整数n是否是一个整数的平方

可利用下述算法:

intk;

k=sqrt(k);

if(k*k==n)

7.程序中出现的函数:

sqrt(x)fabs(x)fmod(x,y)x%y

改错题

单击”考生文件夹”,进入下面界面

首先看清题目,有几个错误提示行,则必须改正几个错误。

每一个错误在提示行的下一行。

运行程序,填上正确的答案。

前后不要加空格,数据输出不要在汉字输入状态

举例:

1.输入函数变量前没有取地下址运算符

下面的程序中,函数fun的功能是:

根据形参m,计算下面公式的值。

T=1+1/(2*3)+1/(3*4)+......+1/(m*(m+1))

请改正程序中的错误,并运行改正后的程序。

当从键盘输入56时,给出程序运行的正确结果。

doublefun(intm)

{doublet=1.0;

inti=2;

for(i=2;

=m;

/*下行有错*/

t=1.0/(i*(i+1));

returnt;

{intm;

\n请输入一个整数:

"

/*下行有错*/

scanf("

%d"

m);

%lf\n"

fun(m));

2.变量数据类型定义为整数,进行除法运算时,要转化为实数运算。

下列程序的功能是:

求出以下分数序列的前30项之和,2/1,3/2,5/3,8/5,13/8,21/13,……请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。

{longa,b,c,k;

doubles;

s=0.0;

a=2;

b=1;

for(k=1;

=30;

s=s+a/b;

c=a;

a=a+b;

b=c;

%lf\n"

s);

3.变量赋初值错误。

(一般的情况:

求和变量初值为0,求积初始值为1)。

以下程序求[1,1000]之间能被5和7整除的数之和。

请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。

inti,sum;

/*下行有错*/

sum=1;

for(i=1;

=1000;

if((fmod(i,5)==0)||(fmod(i,7)==0))

sum=sum+i;

%d\n"

sum);

4.运算出错。

常见的错时:

%用/,==用!

=,||用&

可反过来用。

以下程序求[1,1000]之间能被5和7整除的数之和。

5.边缘条件出错误,应该是<

=或>

=时,只有<

或>

.

以下程序求[1,500]之间能被3或5整除的数之和。

请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果.

inti;

intsum;

sum=0;

500;

{if((fmod(i,3)==0)||(fmod(i,5)==0))

sum+=i;

7.算法出错

下面的程序是求500以内的所有的素数之和。

请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

intprime(intn)

{intyes,i;

if(n<

=1){return1;

yes=1;

for(i=2;

i<

=sqrt(n);

if(n%i==0){yes=0;

break;

return1;

{intsum=0,i;

=500;

if(prime(i))sum+=i;

sum);

7.“+”与“++”用法出错。

以下程序求[1,500]之间能被5和7整除的数之和。

for(i=4;

{if((fmod(i,5)==0)&

(fmod(i,7)==0))

sum=++i;

8.表达式出错(“*”导致的错误)

T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))

当从键盘输入70时,给出程序运行的正确结果。

/*下行程序有错*/

t+=1.0/i*(i+1);

return;

&

m);

fun(m));

9.结果是求个数,不是求累加和。

下面程序是求[20,1000]之间同时满足除4余3或除5余4条件的数的个数。

请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

intcount;

count=0;

for(i=20;

if(fmod(i,4)==3||fmod(i,5)==4)

count+=i;

%ld\n"

count);

10.For语句的三个表达式出错。

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位小数)。

/*下行有错*/

i--)

{t=t*i/(2*i+1);

s+=t;

fun(20));

11.函数数据类型定义或变量数据类型定义出错

下面的程序是计算如下公式的A30值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......

请改正程序中的错误,并给出程序运行的正确结果(按四舍五入保留10位小数)

程序:

{/*下行有错*/

intA=1;

A=1/(1+A);

return;

%12.10lf\n"

12.奇偶数问题

下面程序是求[20,160]之间的所有偶数的平方和。

longsum;

sum=0;

160;

if(fmod(i,2)!

sum+=i*i;

填空题

(1)阅读题目,搞清题意;

(2)阅读程序,理解算法,特别是程序中每个变量的作用.

(3)根据程序运行,计算和估算,发现程序中缺什么,需要补充什么?

已知24有8个因子,而24正好被8整除。

求[50,250]之间有多少个整数能被其因子的个数整除,将下列程序补充完整,把程序运行的正确结果填入相应窗口。

inta,b,c,n,count=0;

for(a=50;

a<

=250;

a++)

________

for(c=1;

c<

c++)

if(_______)

b+=1;

if(a%b==0)

count++;

1.补充变量定义和赋初值

如:

以下程序求[1,700]之间能被3或7整除的数之和。

请将程序补充完整,把程序运行的正确结果填入相应窗口。

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

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1