全国计算机等级考试二级C语言资料机试Word格式.docx

上传人:b****4 文档编号:16678457 上传时间:2022-11-25 格式:DOCX 页数:57 大小:121.50KB
下载 相关 举报
全国计算机等级考试二级C语言资料机试Word格式.docx_第1页
第1页 / 共57页
全国计算机等级考试二级C语言资料机试Word格式.docx_第2页
第2页 / 共57页
全国计算机等级考试二级C语言资料机试Word格式.docx_第3页
第3页 / 共57页
全国计算机等级考试二级C语言资料机试Word格式.docx_第4页
第4页 / 共57页
全国计算机等级考试二级C语言资料机试Word格式.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

全国计算机等级考试二级C语言资料机试Word格式.docx

《全国计算机等级考试二级C语言资料机试Word格式.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言资料机试Word格式.docx(57页珍藏版)》请在冰豆网上搜索。

全国计算机等级考试二级C语言资料机试Word格式.docx

若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。

(4)选择适当的算法进行编程,输入程序语句。

不要忘记及时存盘!

(5)编译程序,直到没有语法错误。

(6)调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用示例的输出数据检验输出结果,直到结果相同。

  特别要注意:

程序设计题要求完全设计正确才会给分,因此,要么是40分,要么是0分,不会给中间分。

那么想通过机试,程序填空题和程序修改题通常来说必须全部正确才能容易通过,否则不容易通过。

 

上机改错题重点题型归类分析

分类一:

简单语法错误

◆题型一:

符号遗漏

1、下列程序的功能是:

读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数:

2310,则应输出:

2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include“conio.h”  

#include“stdio.h”

/**************found**************/

IsPrime(intn);

{inti,m;

m=1;

for(i=2;

i<

n/i++)

if!

(n%i)

{m=0;

break;

}

return(m);

}

main()

{intj,k;

clrscr();

printf(“nPeaseenteranintegernumberbetween2and10000:

”);

scanf(“%d”,&

k);

printf(“nnTheprimefactor(s)of%dis(are):

”,k);

for(j=2;

j<

=k;

j++)

if((!

k%j))&

&

(IsPrime(j))}

printf(〃n%4d〃,j);

printf(〃n〃);

【参考答案】

(1)IsPrime(intn)

(2)if(!

(n%i))

【解题技巧】常见的符号遗漏问题包括以下两种:

(1)分号问题

●遗漏分号:

k++——>

k++;

break——>

break;

returnsum——>

returnsum;

●分号多余:

if(k>

1);

{}——>

1){}

while(k>

1){}

switch();

switch(){}

(2)遗漏括号

ifk>

1——>

if(k>

1)if!

(n%i)——>

if(!

(n%i))

whilek>

while(k>

1)

◆题型二:

符号出错

2、给定程序MODI1.C中函数fun的功能是:

用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:

π111

┄┄≈1-┄┄+┄┄-┄┄+...

4357

例如,程序运行后,输入0.0001,则程序输出3.1414。

请改正程序中的错误,使它能输出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<

math.h>

stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;

pi=0;

n=1;

s=1;

while(t>

=num)

{

pi=pi+t;

n=n+2;

s=-s;

t=s%n;

pi=pi*4;

returnpi;

main()

{floatn1,n2;

printf("

Enterafloatnumber:

"

);

scanf("

%f"

&

n1);

n2=fun(n1);

%6.4f\n"

n2);

(1)while((fabs(t))>

=num)

(2)t=s/n

3、下列给定程序中,函数fun的功能是:

从低位开始取出长整型变量s中偶数位上的数,一次构成一个新数放在t中。

例如,当s中的数为7654321时,t是的数为642。

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

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

conio.h>

/************found************/

voidfun(longs,longt)

{longsl=10;

s/=10;

*t=s%10;

while(s<

0)

{s=s/100;

*t=s%10*sl+*t;

sl=sl*10;

main()

{longs,t;

clrscr();

nPleaseenters:

"

);

%ld"

&

s);

fun(s,&

t);

Theresultis:

%ldn"

t);

(1)voidfun(longs,long*t)

(2)while(s>

【解题技巧】符号出错会表现在以下七个方面:

(1)“%”和除号“/”混淆,如inti=j/k;

——>

inti=j%k;

有时候反过来考,将“%”改为“/”

(2)赋值号“=”和等号“==”混淆

如if(i=j)——>

if(i==j)while(i=j)——>

while(i==j)

(3)复合赋值出错,如:

i\=10——>

i/=10,除号是左下的斜线

(4)强制转换出错,如inti=int(f)——>

inti=(int)f强制转化是在类型上加括号

(5)大小写问题,如IF(){}—>

if(){}或For(){}—>

for(){}注:

所有的关键字都是小写字母

(6)条件判断时的符号问题(要根据具体题意来修改)

如if(fabs(n-m)<

0.0001)——>

if(fabs(n-m)>

0.0001)if(*s<

*p)——>

if(*s>

*p)

for(;

j<

=n;

)——>

n;

)int*a[10]——>

int(*a)[10]

(7)浮点数不能比较大小,只能用绝对值来比较

◆题型三:

变量定义出错

4、程序的功能更是求方程2x3-4x2+3x-6=0的一个根,求要求绝对误差不超过0.001。

例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。

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

不要改动main函数,不得增行或删行,也不得更改程序的结构。

doublefunx(doublex)

{return(2*x*x*x-4*x*x+3*x-6);

doublefun(doublem,doublen)

{

intr;

r=(m+n)/2;

while(fabs(n-m)<

0.001)

{if(funx(r)*funx(n)<

0)m=r;

elsen=r;

r=(m+n)/2;

returnr;

{doublem,n,root;

Entermn:

\n"

scanf("

%lf%lf"

m,&

n);

root=fun(m,n);

root=%6.3f\n"

root);

【参考答案】:

(1)doubler;

(2)while(fabs(m-n)>

【解题技巧】变量定义可能会出现以下三种错误:

(1)变量定义时没有初始化,或者初始化的值不对,如ints=1——>

ints=0,一般在累加求和时容易出现此类错误

(2)变量定义出错,如intsum=0.0——>

doublesum=0.0或者是使用变量前并没有定义

(3)变量定义的类型和程序中使用的类型不匹配,如intr——>

doubler;

◆题型四:

赋值出错

5、给定程序MODI1.C中函数fun的功能是:

将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如,当s中的数为:

87653142时,t中的数为:

7531。

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

voidfun(longs,long*t)

{intd;

longsl=1;

t=0;

while(s>

0)

{d=s%10;

if(d%2==0)

{*t=d*sl+*t;

sl*=10;

s/=10;

{longs,t;

\nPleaseenters:

fun(s,&

Theresultis:

%ld\n"

t);

(1)*t=0;

(2)if(d%2!

=0)

6、下列给定程序中,函数fun的功能是:

实现两个整数的交换。

例如给a和b分别输入60和65,输出为:

a=65b=60

voidfun(inta,b)

{intt;

t=b;

b=a;

a=t;

{inta,b;

Entera,b:

%d%d"

a,&

b);

fun(&

a=%db=%dn"

a,b);

(1)voidfun(int*a,int*b)

(2)t=*b;

*b=*a;

*a=t;

【解题技巧】在解题时,要注意以下几种常见的错误:

(1)赋值时类型不匹配。

如char*r,*p;

if(r==p)——>

if(*r==*p),*r,*p才是内容

charch="

\0"

;

charch='

\0'

字符是用单引号括起来

0'

此时是将字符0赋给ch变量,而不是\0

——>

charch=0;

'

的ASCII码就是0,可直接用0进行赋值

(2)指针类赋值出错(左右两边类型不一致)

如:

int*a;

intx=10,t=20;

a=&

x;

t;

指针只能存放变量的地址

将变量赋给指针所指向的变量

(3)实现交换时赋值出错

if(a<

b){t=a;

b=t}------>

a=b;

b=t;

错误形式正确形式

分类二:

固定语法格式搭配错误

输入输出格式出错

1、给定程序MODI1.C中,fun函数的功能是:

先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。

请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。

intfun()

inta[3][3],sum,i,j;

***********************************

_____;

for(i=0;

i<

3;

i++)

{for(j=0;

j++)

*****************************************

scanf(“%d”,a[i][j]);

i<

i++)

sum=sum*a[i][i];

printf(“Sum=%dn”,sum);

main()

{fun();

(1)sum=1;

(2)scanf("

%d"

a[i][j]);

2、给定程序MODI1.C中函数fun的功能是:

输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。

#defineM5

intfun(intn,intxx[][])

{inti,j,sum=0;

printf("

\nThe%dx%dmatrix:

\n"

M,M);

for(i=0;

M;

i++)

{for(j=0;

%f"

xx[i][j]);

for(i=0;

n;

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("

\nThesumofallelementson2diagnalsis%d."

fun(M,aa));

(1)intfun(intn,intxx[][M])

(2)printf("

xx[i][j]);

【解题技巧】注意输入输出的正确格式,关注容易出错的地方,如下图

正确形式错误形式

scanf(“%d”,a[i][j])——>

scanf(“%d”,&

a[i][j])

inti,*p=&

i;

scanf(“%d”,&

p)——>

scanf(“%d”,p);

inti=10;

printf(“%f”,i);

printf(“%d”,i);

printf(“%d”,“string”);

printf(“%s”,“string”);

选择结构中的基本格式问题

3、给定程序MODI1.C中函数fun的功能是:

用递归算法计算斐波拉契数列中第n项的值。

从第1项起,斐波拉契数列为:

1、1、2、3、5、8、13、21、……

例如,若给n输入7,该项的斐波拉契数值为:

13。

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

longfun(intg)

/**********found**********/

switch(g);

{case0:

return0;

case1;

case2:

return1;

return(fun(g-1)+fun(g-2));

{longfib;

intn;

Inputn:

n=%d\n"

n);

fib=fun(n);

fib=%d\n\n"

fib);

(1)switch(g)

(2)case1:

return1;

case2:

return1;

【解题技巧】注意选择结构的正确语法格式,关注容易出错的地方,如下图

循环结构中的基本格式问题

4、给定程序MODI1.C中函数fun的功能是:

根据整型形参m的值,计算如下公式的值。

111

t=1-------------……------

2*23*3m*m

例如,若m中的值为:

5,则应输出:

0.536389。

doublefun(intm)

{doubley=1.0;

inti;

for(i=2;

m;

y-=1/(i*i);

return(y);

{intn=5;

\nTheresultis%lf\n"

fun(n));

(1)for(i=2;

=m;

i++)

(2)y-=1.0/i/i;

分类三:

函数类错误(考试重点、难点,出现的频率非常高)

函数定义时出错

1、给定程序MODI1.C中函数fun的功能是:

根据形参m的值(2≤m≤9〕,在m行m列的二维数组中

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

当前位置:首页 > 初中教育 > 科学

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

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