文档库 最新最全的文档下载
当前位置:文档库 › 湖南省计算机二级C语言程序题___免费下载

湖南省计算机二级C语言程序题___免费下载

湖南省计算机二级C语言程序题___免费下载
湖南省计算机二级C语言程序题___免费下载

资料名称: C语言程序设计二级题库院系班级:软件学院1302软件工程姓名:阳兴

学号:139894

目录

第一部分:应试攻略 (2)

一、灵活运用多种求解方法 (2)

二、熟悉基本问题的求解思路 (2)

三、熟记典型问题的答案 (3)

四、程序题考试操作要点 (4)

第二部分:程序改错题典型范例 (6)

第三部分:程序填空题典型范例 (8)

第四部分:程序设计题典型范例 (11)

第五部分:程序题主要考点 (14)

【考点一】在一定范围内求满足条件的整数个数(或求最大最小值、求和)。 (14)

【考点二】方程或不等式求整数解问题。 (21)

【考点三】数列求项或求和问题 (28)

第六部分:知识点归纳 (31)

一、数据处理 (31)

二、基本语句 (32)

第一部分:应试攻略

一、灵活运用多种求解方法

由于湖南省二级考试所有程序题(包括:改错题、填空题和编程题)采取计算机自动评分,而评分的标准就是你最后填写的程序的运行结果而不是代码!因此,在不得已的情况下(有时也是更直接甚至是更简洁的办法),可利用以下方法之一解决问题!

1、按自己的思路编程。对于改错题或填空题,如果看不懂原代码,以至无法求解,可

以按照自己的思路重写代码求解。

2、通过“Turbo C for Windows实验开发环境”之“典型源程序”获得求解方法甚至是

源代码。也可通过“库函数查询”获得相关函数的帮助信息。如图1所示。

3、借助Windows附件中的计算器解决问题(如数制转换、开方、乘方、求和等)。

4、数学方法求解。

图1:通过开发环境获得程序信息

5、利用EXCEL求解。(示例中将重点介绍这种方法)

二、熟悉基本问题的求解思路

1、求整数的各位数字

主要利用除法运算和求余运算。基本思路是:先将要求的数字移到个位,再取出个位。例如,x为四位数,则:

x/1000:是千位数字。(整型数据相除得到的商是整数)

x/100%10:百位数字。

x/10%10:十位数字。

x%10:个位数字。

2、判断一个整数是否为素数

判断整数N>2是否为素数的主要方法是:

----若[3,sqrt(N)]上无N的因子,则N为素数。

----将区间改为为[3,N/2]或[3,N-1],上述结论仍然成立。

----将“因子”改为“质因子”或“奇数因子”,上述结论仍然成立。

要注意,1既不是素数,也不是合数。在考试中,为了简便,建议将区间定为[3,N-1]。参考代码如下:

/*判断n是否为素数:返回1表示是,0表示否*/

int isPrime(long n)/*判断奇数是否为质数*/

{ long k;

for(k=3;k

if(n%k==0)break;

return (k>=n); }

3、判断一个整数是否为完全平方数

设K、N均为long类型的变量,其中N已赋值为一个正整数,取K=sqrt(N)。则N为完全平方数<=>K*K与N相等。

注意:使用sqrt函数时,一定要在main函数前添加预处理命令:#include "math.h"

4、确定整数位数

基本方法是删除个位法:while(n)k++,n/=10;

这种方法也可用于解决:

(1)整数逆序输出:while(n){printf("%d",n%10);n/=10;}

(2)十进制整数化为R进制整数:

whille(n)

{ y+=t*(n%r); /*y初值为0,t初值为1;1

t*=10;n/=r;

}/*y即为R进制整数(十进制表示形式)*/

有时可用更简洁的方法确定整数位数。如x是不超过五位数的整数,其位数为:

(x>9999)+(x>999)+(x>99)+(x>9)+1。

三、熟记典型问题的答案

1、完数:一个正整数N的约数和是N的倍数,则称N为完数。10000内的完数只有七个:1、6、28、120、496、67

2、8128。如果考题将完数定义为“真因子之和等于本身的数”,则完数不包括1、120、672。

2、水仙花数:一个三位正整数N的各位数字的立方和等于N,则称N为水仙花数。水仙花数共四个:51

3、370、371、407

3、完全平方数:即平方根为整数的正整数。显然为:12、22、32、……

4、质数:又名素数,指恰有两个约数的正整数。100以内的质数共25个:2、3、

5、7、11、

13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97 5、同构数:如果N是N2的尾数,则称N是同构数。[1,10000]上的同构数有八个:1,5,6,25,76,376,625,9376。为了方便记忆,可分成二组:(1,5,25,625)、(6,76,376,9376)。

四、程序题考试操作要点

1、程序改错题操作要点示例

(1)打开VC或Turbo C for Windows开发环境,必要时创建文件;

(2)复制代码。在考试系统中单击“复制代码”按钮;

(3)将代码粘贴到开发环境中;

(4)审清题意,改正程序中的错误后,运行程序;

(5)将程序运行时的显示结果填写到考试系统“程序改错题”的“结果”输入框中,如图2所示。再单击“保存”按钮即可。

图2:程序改错题窗口

图2:程序改错题操作界面

一般而言,程序改错题不一定把每一条语句都看懂。关键是审清题意,直接分析出现错误的语句的作用,从而纠正错误。

2、程序填空题操作要点示例

(1)打开VC或Turbo C for Windows开发环境,必要时新建文件;

(2)复制代码。在考试系统中单击“复制代码”按钮;

(3)将代码粘贴到开发环境中;

(4)审清题意,填空后,运行程序;

一般而言,程序填空题不一定把每一条语句都看懂。关键是审清题意,记全、记准已知条件和需要解决的问题,直接分析填空处的语句作用,从而完成填空。

(5)将程序运行时的显示结果填写到考试系统“程序填空题”的“结果”输入框中,如图3所示。再单击“保存”按钮即可。

图3:程序填空题操作界面

对于程序设计题,直接在开发环境中完成程序的设计和调试,并将程序运行的结果填写在“结果”输入框中,再单击“保存”按钮即可。当然,这一结果是你编程后得到的,还是你用数学方法或EXCEL得到的,计算机评分时不管这些,只要结果正确!

第二部分:程序改错题典型范例

1、下面给出的函数fun(n,r)用于返回二进制正整数n的r进制数(1

long fun(long n,int r)

{ long y=0,t=1;

while(n)

{ y+=t*(n%r);

t*=10;

n%=r; /*本行语句有错误*/

}

return t; /*本行语句有错误*/

}

main()

{ long a=197;int r=7;

printf("%ld",fun(a,r));

}

参考答案:

n%=r; 改为n/=r;

return t; 改为return y;

输出结果:401

解题技巧:

A.十进制整数化为r进制整数的基本方法是除r取余法。按照这种思路去阅读代码,很容易认清各语句的作用,从而纠正错误。

B.根据题目叙述,结合main函数的代码,程序就是输出197的7进制整数。直接利用除7取余法即可用笔算得到结果。或者,利用Windows的计算器得到结果。

EXCEL解法

(1)在A1单元格输入十进制整数,

在B1单元格输入R的值。如图4所

示。

(2)在A2输入公式:

=INT(A1/$B$1)

(3)在B2输入公式:

=MOD(A1, $B$1)

(4)选择A2至B2,向下拖填充柄,

至A列出现0为此。此时,由B列由

下向上至B2,即为A1单元格整数化

为R进制数。

2、相差为2的两个素数称为双胞胎

图4:EXCEL求解图示

数。下列程序用于求[200,1000]上有多少对双胞胎数。改正程序中的错误后调试程序,并指出程序运行的结果。

int isZ(int x)

{ int k=2;

while(k*k<=x)

if(x%k==0)continue;else k++; /*本行语句有错误*/

return (x>1)&&(k*k>x);

}

main()

{ int x,n=0;

for(x=203;x<997;x+=2)

if(isZ(x)||isZ(x+2))n++; /*本行语句有错误*/

printf("%d",n);

}

参考答案:

if(x%k==0)continue;else k++;改为if(x%k==0)break;else k++;

if(isZ(x)||isZ(x+2))n++;改为if(isZ(x)&&isZ(x+2))n++;

输出结果:20

特别提示:return (x>1)&&(k*k>x); 不能修改为return k*k>x;否则1会认为是素数。而1既不是素数,也不是合数。

解题技巧:

根据题意,很容易分析出主函数中的if语句是用于判断x和x+2是否为素数的。因此推断出,isZ函数的作用是判断素数。而判断一个整数x是否为素数的基本方法就是在[2,sqrt(x)]上搜索x的约数。按照这一思路分析代码,即可纠正错误。

3、下列程序用于计算四位数的奇数中,各位数字之积是60的正整数倍的数的和。改正程序中的错误后调试程序,并指出程序运行的结果。

main()

{ int k,t,s=0; /*本行语句有错误*/

for(k=1001;k<10000;k+=2)

{ t=(k/1000)*(k/100%10)*(k/10%10)*(k%10);

if(t%60==0)s+=t; /*本行语句有错误*/

}

printf("%ld",s);

}

参考答案:

int k,t,s=0; 改为int k,t;long s=0;

if(t%60==0)s+=t; 改为if(t&&t%60==0)s+=k;

输出结果:3456254

解题技巧:

A.定义变量的语句出现错误,无非两种可能:

变量初值错误或未赋初值。一般而言,用于计数、求和的变量初值为0。但要注意程序的处理方法,计数变量的初值也可能是1、求和变量的初值也可能是满足条件

的第一个数据。

变量类型错误。这主要是由于数据超过了变量的赋值范围。建议对整数类计数或求和问题,将变量类型均定义为long类型。本题中,从printf("%ld",s)也可看出变量

s为long类型。

B.本题中的第二个错误很容易忽视:审题不清。题目要求的是60的正整数倍,因此,还必须有条件t>0。

4、下列程序用于计算满足条件的四位数ABCD的个数:是8的倍数;A+B=B+C。改正程序中的错误后调试程序,并指出程序运行的结果。

main()

{ int k,n; /*本行语句有错误*/

for(k=1000;k<10000;k++) /*本行语句有错误*/

if(k/1000==k/10%10)n++;

printf("%d",n);

}

参考答案:

int k,n; 改为int k,n=0;

for(k=1000;k<10000;k++)改为for(k=1000;k<10000;k+=8)

输出结果:110

解题技巧:

A.正如上题分析,变量定义的语句出错,只有两个可能。

B.根据题意,搜索的整数必须满足三个条件:其一,是四位正整数;其二,是8的倍数;其三,A=C。以此为线索,易知,第二个条件未在代码中体现。考虑到1000是8的倍数,因此,循环变量的增量(也叫步长)修改为8即可。

第三部分:程序填空题典型范例

1、下列程序可输出1000~9999之间所有四位数的个数:它是一个完全平方数,其左两位数字之和为10,右两位数字之积为18。请在下划线上填写适当的语句后运行程序,并给出程序运行的结果。

main()

{int k,x,n=0;

for(k=32;k<100;k++)

{ x=___________;

if(x/1000+(x/100%10)==10)

if(__________________)n++;

}

printf("%d",n);

}

参考答案:k*k (x/10%10)*(x%10)==18

程序运行结果:1

解题技巧:

A.根据题意(读懂、认准题目的已知条件、需要得到什么结果?这是理解代码的关键!),四位数必须是一个完全平方数,但代码中并未对四位数进行循环搜索,而是由k在区间[32,100)上穷举。其意图是什么呢?由于312=961是三位数,而322=1024是四位数(四位数中最小的完全平方数!),1002是五位数!发现了这一特点,思路便变得清晰:由k*k得到平方数(当然是四位数),可有效避免平方数的判断,简化代码。故第一空应填写:k*k B.if语句是判断平方数x是否满足题设条件。代码已经给出了一个条件x/1000+(x/100%10)==10,也就是千位数字与百位数字(四位数的左两位)之和是否为10。第二个条件自然是右两位数字之积是否为18:(x/10%10)*(x%10)==18。

2、斐波那契数列的前二项均为1,从第三项起,每项均为前两项的和。下列程序求10000000内最大的斐波那契数。请在下划线上填写适当的语句后运行程序,并给出程序运行的结果。main()

{ long a=1,b=1;

while(_______________)

b+=a,__________________;

printf("%ld",a);

}

参考答案:b<=10000000 a=b-a

程序运行结果:9227465

解题技巧:

A.题目是求10000000内最大的斐波那契数。而代码中的输出语句是printf("%ld",a);->可见循环条件是b<=10000000。为什么不是a<=10000000?因为如果是这样,则终止循环时,必有a >10000000,不满足题的要求。注意:a是b的前项。

B.从代码来看,其算法的基本思路是:不用第三个变量,直接根据当前项b及前项a计算出下一项及其前项。因此,第二个空应填a=b-a。但是,你想不到怎么办?改代码!用你熟悉的方法,增加第三个变量t=a+b,a=b,b=t!

3、以下程序求最大的三位数:其每位数字互异且立方和等于该数。请在下划线上填写适当的语句后运行程序,并给出程序运行的结果。

main()

{int k,a,b,c;

for(k=999;k>=100;k--)

{ a=k/100;___________;c=k%10;

if(a!=b&&a!=c&&b!=c)

if(a*a*a+b*b*b+c*c*c==k)___________;

}

printf("%d",k);

}

参考答案:break

程序运行结果:407

解题技巧:

A.既然是求最大的三位数,当然是从大到小搜索,找到满足条件的即结束。因此,第二个空该填break。

B.条件是各位数字互异且立方和等于数本身。因此,需求出各位数字。代码中已求出百位数字a和个位数字c,故第一个空中应求十位数字b,故应填b=k/10%10。

4、仔细阅读以下程序,根据程序实现的功能,在下划线上填写适当的语句后运行程序,并给出程序运行的结果。

int isrep(long n) /*判断整数各位数字是否有重复*/

{ int k;long m;

while(n)

{ k=n%10;m=n/10; /*取n的个位与其他位比较*/

while(m)

if(__________)return 1;else m/=10;

_____________

}

return 0;

}

main()

{long x=3456123;

printf("%d",isrep(x));

}

参考答案:k==m%10 n/=10;

程序运行结果:1

解题技巧:

从代码注释可得到算法的基本思路:

A.取n的个位数字k:k=n%10;m=n/10;

B.取n的其他位组成的数:m=n/10;

C.判断k是否在m中出现:(采取删除个位法)

a.取m的个位与k比较:如果相等,返回值1,结束。

b.删除m的个位:m/=10。

c.如果m=0,转D,否则转a。

D.删除n的个位:n/=10

E.如果n=0,返回值0,结束。否则转A。

第四部分:程序设计题典型范例

1、编程求解有多少个这样的四位正整数:其各位数字的和是3的倍数含数字5。

main()

{ int k,m,n=0;

for(k=1005;k<9975;k+=3)

{ m=k;

while(m)if(m%10==5)break;else m/=10;

if(m)n++;

}

printf("%d",n);

}

参考答案:1059

解题技巧:

如果你无法完成代码,不妨用数学方法解决!

当然,也可利用EXCEL求解:

(1)先生成3的倍数:在A1输入1005、A2输入1008,再选择A1和A2,向下拖填充柄至得到9975;

(2)再从3的倍数中找出含数字5的数:在B1单元格输入公式:=IF(FIND("5",A1&"5")<5,1,"")

注意:公式=IF(FIND("5",A1),1,"")也可实现查找,但是,由于FIND函数如果未找到串,返回值为#V ALUE!,不方便SUM函数的处理。

(3)选择B1,向下拖填充柄至最后行;

(4)在C1输入:=SUM(B:B)。

这时C1显示值为1059,即本题答案。

2、求[2,1000]上所有同构数之和。如果n2的低位是n,则称正整数n为同构数。

分析:设k位数为p,则k是同构数当且仅当k2-k能被10p整除。求解的基本思路是:

(1)k=2,s=0。对k进行穷举搜索。和值s初值为0。

(2)根据k的位数p确定t=10p

A.t=1,n=k

B.while(n)t*=10,n/=10

(3)如果k2-k能被t整除,则s+=k

(4)k++。如果k>1000则输出和值s,程序结束。否则转(2)

main()

{int s=0,t,n;long k;

for(k=2;k<=1000;k++)

{ t=1;n=k;

while(n)t*=10,n/=10; if((k*k-k)%t==0)s+=k; }

printf("%d",s); }

参考答案:1113 EXCEL 解法

(1)在A 列输入2,3,...,999。如图5所示。

(2)在B2输入公式:=A2*A2-A2

(3)在C2输入公式:=(A2>99)+(A2>9)+1

(4)在D2输入公式:=IF(MOD(B2,10^C2)=0,A2,"") (5)选择B2至D2,向下拖填充柄至最后行;

(6)在E2输入公式:=SUM(D:D)

此时E2显示1113,即本题答案。

3、某些分数的分子分母都是二位正整数的真分数,如果将分子的两位数字相加作分子,分母两位数字相加作分母,得到的分数值不变。求这些分数的分子与分母的总和。

分析:设分子为x ,分母为y ,则x

if(y*(x/10%10+x%10)==x*(y/10%10+y%10))s+=x+y; printf("%d",s);

}/*x/y=m/n 即xn=ym ,转化以避免分数运算带来的误差。*/ 参考答案:10134 EXCEL 解法

图5:EXCEL 求解图

(1)在A 列输入分子10-98、第一行输入分母11-99,如图6所示; (2)在B2单元格输入公式:

=IF(AND($A2

AND 包括二个条件:

$A2

(INT($A2/10)+MOD($A2,10))*B$1=(INT(B$1/10)+MOD(B$1,10))*$A2),$A2+B$1,""):表示分子的两个数字相加后,与分母两个数字之和的商不变。 (3)选择B2,向右拖填充柄至CL2;

(4)选择B2至CL2,向下拖填充柄至第90行; (5)在CM2输入公式:=SUM(B2:CL90) 此时CM2单元格显示10134,即本题答案。

4、正整数A 、B 的最大公约数为10,最小公倍数为100,且A

分析:由题意,可设A=10M ,B=10N ,M 、N 互质。则有:

AB=1000(数学结论:两个整数之积等于其最大公约数与最小公倍数之积),即:MN=10。故(M,N)=(1,10)或(2,5)。

以上是数学解法。编程求解则可通过以下思路实现: (1)A=10(A 是10的倍数,从10开始搜索求解) (2)求B :如果1000%A=0则转(3),否则转(6) (3)B=1000/A (利用上面的数学结论)。若A>=B 则结束。 (4)求A 、B 的最大公约数F

(5)如果F=10,则得到一组解,解数N++ (6)A+=10(搜索下一个可能的解) (7)如果A>100则结束。否则转(2)

图6:EXCEL 求解图示

main()

{ int a=10,b,n=0,c,d,r;

while(a<=100)

{ if(1000%a==0)

{ b=1000/a;

if(a>=b)break;

c=b;d=a;

while(d)

r=c%d,c=d,d=r;

if(c==10)n++;

}

a+=10;

}

printf("%d",n);}

第五部分:程序题主要考点

【考点一】在一定范围内求满足条件的整数个数(或求最大最小值、求和)。

【求解方法】利用循环,在指定范围内搜索求解。

【易错点】

统计整数个数或求和的变量未赋初值。一般应赋初值0。

求和时变量类型错误,造成数据溢出。建议用于整数求和的变量均定义为long类型。

数据过大时,用double类型。

比较两个数是否相等的运算符是"=="而不是"="。

调用数学函数未用预处理命令:#include "math.h"

【程序示例】

1、编写程序,计算0~50范围内有多少个数,其每位数字之积小于每位数字和。

分析:一位数显然不满足条件。求解思路是:

(1)k=10,n=0(k作循环变量,n统计满足条件的数据个数)

(2)取k的十位数字a和个位数字b:a=k/10,b=k%10

(3)如果ab

(4)k++

(5)如果k>50则输出n的值,程序结束。否则转(2)

参考代码(n=17):

main()

{ int k,a,b,n=0;

for(k=10;k<=50;k++)

{ a=k/10,b=k%10;

if(a*b

}

printf("%d",n);

}

显然,该题用数学方法也很容易得到结果。

借助EXCEL,求解更简单。如图7,基本操作步骤:

图7:EXCEL求解图示

(1)在A1、A2单元格内分别输入10、20

(2)选择A1、A2两个单元格,向下拖动填充柄,拖到第50行时松开鼠标。这时,A列有数据10-50。(在EXCEL中,输入等差数列的前二项后,选择其单元格,拖其填充柄即可得到等差序列。)

(3)在B1单元格输入公式(取十位数字):=int(A1/10)

(4)在C1单元格输入公式(取个位数字):=mod(A1,10)

(5)在D1单元格输入公式:=if(B1*C1

(6)选择B1、C1和D1单元格,拖动填充柄至第50行。

(7)在E1单元格输入公式:=sum(D1:D50)

(8)这时E1单元格显示数值17。这就是问题的答案。

2、一个正整数如果等于其所有因子之和,则称该数为完数。求[6,10000]上完数的个数。分析:从数学概念上讲,如果整数a能被整数k整除,就称k为a因子,又叫约数。本题中,因子是指正整数,且没有包括a本身。

求解思路是:

(1) k=6,n=0(k作循环变量,n统计满足条件的数据个数)

(2)求k的所有因子之和s:

A.s=1,t=2(1是k的因子,作为和s的初值;t用于因子搜索)

B.如果k%t为0,则t是k的因子,更新和值:s=s+t

C.t++

D.如果t>k/2则转(3),否则转B(k的最大因子不超过k/2)

(3)如果s与k相等,则n++

(4)确定下一个整数是否为完数:k++

(5)如果k>10000则输出n,程序结束。否则转(2)

参考代码(n=4):

main()

{ int k, s,i,n=0;

for(k=6;k<10000;k++)

{ s=1; /*1是因子,直接作为和的初值*/

for(i=2;i<=k/2;i++) /*求k的所有因子之和*/

if(k%i==0)s+=i;

if(s==k)n++; /* k为完数时累计个数*/

}

printf("%d",n);

}

3、求100~500间除5余

4、除7余2的数的和。

main()/*参考答案:3678 */

{ int k,s=0;

for(k=100;k<500;k++)

if(k%5==4&&k%7==2)s+=k;

printf("%d",s);

}

数学解法:

设被5除余4的数为5N+4,该数除7余2,只需5N除7余5,即N除7余1。故N=7k+1。所以满足题设条件的数可表示为5(7k+1)+4=35k+9。

再由100<=9+35k<=500得到3<= k<=14。从而所求和为:

(9+35*3)+(9+35*4)+...+(9+35*14)

=9*12+35*(3+14)*12/2=3678

4、A、B、C是三个不大于100的正整数,且A>B>C,130

分析:实数存在存储误差,不能直接进行等值判断。一般采取类似if(fabs(x-y)<1e-6)的方法。本程序根据1/A2+1/B2=1/C2,转换为整式A2B2=(A2+B2)C2后再进行比较。另外,可利用已知

条件确定以下搜索范围:

(1)C 最小,故C<50。C 搜索区间为[0,50)。

(2)A>B>C,A+B+C<150 =>A+B<150=>2B<150=>B<75。对于每个C ,B 的搜索区间为[C+1,75) (3)对搜索到的B ,A 的搜索区间为[B+1,100)。 main()/*参考答案:1 */ { long a,b,c;int n=0; for(c=1;c<50;c++) for(b=c+1;b<75;b++) for(a=b+1;a<100;a++)

if(a+b+c>130&&a+b+c<150) if((a*a+b*b)*c*c==a*a*b*b)n++; printf("%d",n); }

EXCEL 解法

(1)如图8,在A2以下输入B 的可能值:1-99;在B1以右输入A 的可能值:44-100; (2)在B2输入公式:

=IF(MOD(SQRT(B$1*B$1*$A2*$A2/(B$1*B$1+$A2*$A2)),1)=0,1,"") 公式说明:

SQRT(B$1*B$1*$A2*$A2/(B$1*B$1+$A2*$A2):求C ; MOD(C,1):求C 除以1的余数。余数为0,则C 为整数; IF 函数用于判断C 是否为整数,是则返回1,否则返回空串。

图8:EXCEL 求解图示

(3)选择B2,向右拖其填充柄至最后一个数据下方。

(4)选择B2及右侧数据单元格,向下拖其填充柄至最后数据右侧。

(5)从表中查找满足条件A>B>C及130

5、求取[121,140]上弦数的个数。如果存在整数X、Y,使得X2+Y2=Z2,则称Z为弦数。分析:可分别对X、Y、Z进行穷举搜索。由于是求Z的个数,因此,宜从Z开始搜索匹配的X、Y。

main()/*参考答案:8 */

{ int x,y,z,n=0;

for(z=121;z<=140;z++)

{ for(x=1;x

for(y=x+1;y

if(x*x+y*y==z*z){n++;goto RR;}

RR:;/*搜索到X,Y后即对下一个Z进行判断*/

}

printf("%d",n);

}

解法二

#include "math.h"

main()

{ int x,y,z,n=0;

for(z=121;z<=140;z++)

{ for(x=1;x

{ y=sqrt(z*z-x*x);

/*搜索到X,Y后即对下一个Z进行判断*/

if(y*y==z*z-x*x){n++;break;}

}

}

printf("%d",n);

}

解法三:利用EXCEL求解。基本操作步骤为:

(1)在A列输入X的可能取值。如下图9所示。

(2)在第1行输入Z的值。

(3)在B2单元格输入公式:

=IF(MOD(SQRT(B$1*B$1-$A2*$A2),1)=0,1,"")

公式说明:

SQRT(B$1*B$1-$A2*$A2):求满足X2+Y2=Z2的Y;

MOD(Y,1):求Y除以1的余数。如果Y是整数则余数为1。

IF函数返回1(如果Y是整数)或空串(如果Y不是整数)。

(4)选择B2单元格,向右拖动其填充柄。

(5)选择B2至U2单元格,向下拖填充柄。

(6)从B列看起,哪列有1,对应的Z就是弦数。

图9:EXCEL求解图示

6、若两个连续自然数的积减1后是素数,则称这两个自然数为友数对,该素数称友素数。求[100,200]上的第10个友素数对所对应的友素数。

分析:只有两个正约数的正整数称为素数(质数)。判断一个整数是否为素数的常用方法是小约数穷举法:如果k在区间[2,sqrt(k)]上无约数,则k是素数

#include "math.h"

main()/*参考答案:17291 */

{ long x,k,y,n=0;

for(x=100;x<200;x++)

{ y=x*(x+1)-1;

for(k=2;k<=sqrt(y);k++)

if(y%k==0)break;

if(k>sqrt(y)){n++;if(n==10)break;}

}

printf("%ld",y);

}

7、A+B、A-B均为平方数的两个正整数(A>B)称为自然数对。求[1,100]中所有这样的自然数对中B的和。

方法一:对A、B分别进行穷举搜索求解。

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

2013省二级C 选择题(含部分答案)2013-5-24

第一份 1、以下叙述错误的是(B)。 A、C源程序必须包含一个main()函数。 B、语句必须在一行内写完。 C、以一对“/*”和“*/”为定界符括起来的文字为注释部分。 D、所有语句都必须以分号“;”结束。 2、整型常量三种表示形式中不含(D)。 A、十进制 B、八进制 C、十六进制 D、二进制 3、以下表达式中,(B)无法正确表示右图所示的代数式:(a+b)(a-c)/3a (a <> 0) A、(a+b)/a*(a-c)/3 B、(a+b)*(a-c)/3*a C、(a+b)*(a-c)/(3*a) D、(a+b)/(3*a)*(a-c) 4、运算符(C)不能用于非整型数据运算。 A、/ B、+ C、% D、* 5、(A)可产生(0,0.9)之间的随机数。 A、rand()%10/10.0 B、srand()%10/10.0 C、srand()*10%10 D、rand()%10/10 6、能正确表示2t>2 C、t>2 || t<10 D、t>2 && t<10 7、定义:int a=1,b=2,c ; 语句c=1.0/b*4; 执行后,变量 c的值为(2)。 8、以下程序段的运行结果是(C)。 int x=10,y; if(x>20) y=9; else if(x>10) y=6; else if(x>5) y=3; else y=1; printf(“%d\n”,y); A、9 B、6 C、3 D、1 9、以下程序段的运行后sum的值为(D。 int i,j ,sum=0; for(i=1; i<=3;i++) I=1 J=I=1 SUM=2 J=2 SUM=2+1+2=5 J=3 SUM=5+1+3=9 for(j=i; j<=3; j++) I=2 J=2 SUM=9+2+2=13 J=3 SUM=13+2+3=18 sum=sum+i+j; I=3 J=3 SUM=18+3+3=24 J=4 I=4 A、18 B、12 C、20 D、24 10、(B)语句能正确定义a为整型数组。 A、int a[n] ,n=10; B、int a[10]; C、int n=10,a[n]; D、int a(10) 11、以下程序段的运行结果是(C)。 int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(“%d\n”,a[0][0]-a[2][3]);

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机二级C语言操作题题库

1.程序Cmody021.c输出如下所示图形: * *** ***** ******* ********* #include void main() { int i,j;for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++)printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 2.程序Cmody032.c的功能是:输出201-300之间的所有素数,统计总个数。#include #include void main() { int num; printf("\n"); num=fun(); printf("\nThe total of prime is %d",num); getch(); } int fun() { int m,i,k,n=0; for(m=201;m<=300;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) /**/if(m/i==0)/**/ break; /**/if(i==k)/**/ { printf("%-4d",m); n++;

if(n%10==0)printf("\n"); } } return n; } 3. 程序Cmody041.c,其功能是统计输入字符串中小写英文字母的个数。如输入:abcdEFGHIJK123 输出:4 #include #include main() { char str1[128]; /**/int i,len,sum=0;/**/ gets(str1); len=strlen(str1); for(i=0;i='a'&&str1[i]<='z')/**/ sum++; } printf("%d\n",sum); getch(); } 4.程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。如输入:abcDEFGH123 输出:5 #include #include main() { /**/char str1[128]/**/ int i,len,sum=0; printf("Please input a string:\n"); scanf("%s",str1); len=strlen(str1); for(i=0;i='A'&&str1[i]<='Z') /**/sum++;/**/

二级C语言100道经典选择题与答案

【1.1】以下不正确的C语言标识符是。 A) B) 1_2 C) 1 D) 【1.2】以下是正确的C语言标识符是。 A) B) _123 C) D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 A) B) i\C) D) _3d> ??? $ ??? 3 【1.4】下面各选项组中,均是C语言关键字的组是。 A) ,, B) ,, C) ,, D) ,, 【1.5】下列不属于C语言关键字的是。 A) B) C) D) 【1.6】C语言程序从()函数开始执行,所以这个函数要写在。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是 A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中

C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的类型的常数是。 A) 32768 B) 0 C) 037 D) 0 【1.9】执行语句 (""1);屏幕显示。 A) -1 B) 1 C) D) 【1.10】已知 32768;执行语句("");屏幕显示。 A) -1 B) -32768 C) 1 D) 32768 【1.11】已知 65539;执行语句("");屏幕显示。 A) 65539 B) -3 C) 3 D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型()数据在内存中的存储形式是。 A) 原码 B) 补码 C) 反码 D) 码

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

全国计算机等级考试二级C语言真题库之选择题(11)

全国计算机等级考试等级考试真题库之选择题(11) 1.下列叙述中正确的是 A) 一个算法的空间复杂度大,则其时间复杂度也必定大 B) 一个算法的空间复杂度大,则其时间复杂度必定小 C) 一个算法的时间复杂度大,则其空间复杂度必定小 D) 算法的时间复杂度与空间复杂度没有直接关系 参考答案:D 【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。 2.下列叙述中正确的是 A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B) 循环队列中的元素个数随队头指针的变化而动态变化 C) 循环队列中的元素个数随队尾指针的变化而动态变化 D) 以上说法都不对 参考答案:A 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。 3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为 A) 219

C) 230 D) 231 参考答案:B 【解析】二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。 4.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 A) 9 B) 10 C) 45 D) 90 参考答案:C 【解析】冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选C。 5.构成计算机软件的是 A) 源代码 B) 程序和数据 C) 程序和文档 D) 程序、数据及相关文档 参考答案:D 【解析】软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

全国计算机等级考试二级C语言选择题

程序流程图中带有箭头的线段表示的是()。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 参考答案:C 【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C)。 结构化程序设计的基本原则不包括()。 A) 多态性 B) 自顶向下 C) 模块化 D) 逐步求精 参考答案:A 【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。 软件设计中模块划分应遵循的准则是()。 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 参考答案:B 【解析】软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 在软件开发中,需求分析阶段产生的主要文档是()。 A) 可行性分析报告 B) 软件需求规格说明书 C) 概要设计说明书 D) 集成测试计划 参考答案:B 【解析】A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 算法的有穷性是指()。 A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的 C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用

【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。 A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序 参考答案:D 【解析】除了堆排序算法的比较次数是,其他的都是n(n-1)/2。 下列关于栈的叙述正确的是()。 A) 栈按"先进先出"组织数据 B) 栈按"先进后出"组织数据 C) 只能在栈底插入数据 D) 不能删除数据 参考答案:B 【解析】栈是按"先进后出"的原则组织数据的,数据的插入和删除都在栈顶进行操作。 在数据库设计中,将E-R图转换成关系数据模型的过程属于()。 A) 需求分析阶段 B) 概念设计阶段 C) 逻辑设计阶段 D) 物理设计阶段 参考答案:C 【解析】E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为()。 A) 并 B) 自然连接 C) 笛卡尔积 D) 交

计算机二级C语言测试题及答案解析(一)

2016年计算机二级C语言测试题及答案解析(一)1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是(C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A、C程序的工作过程是编辑、编译、连接、运行 B、C语言不区分大小写。 C、C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。

B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成 数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C )。 A、%x B、a+b C、a123

选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C 中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C 。 A、2.5 B、2 C、1 D、3 %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%

全国计算机等级考试二级C语言真题库之选择题(07)

全国计算机等级考试二级C语言真题库之选择题(07)

全国计算机等级考试等级考试真题库之选择题(07) 1.下列叙述中正确的是()。 A) 循环队列是队列的一种链式存储结构 B) 循环队列是队列的一种顺序存储结构 C) 循环队列是非线性结构 D) 循环队列是一种逻辑结构 参考答案:B 【解析】在实际应用中,队列的顺序存储结构一般采用循环队列的形式。 2.下列关于线性链表的叙述中,正确的是()。 A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B) 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C) 进行插入与删除时,不需要移动表中的元素 D) 以上说法均不正确 参考答案:C 【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不

一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。 3.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为() A) 16 B) 10 C) 6 D) 4 参考答案:A 【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中度为2的结点是5-1=4个,所以度为1的结点的个数是25-5-4=16个。 4.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。 A) 外模式 B) 内模式 C) 概念模式 D) 逻辑模式 参考答案:B

【解析】数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B)。 5.在满足实体完整性约束的条件下()。 A) 一个关系中应该有一个或多个候选关键字 B) 一个关系中只能有一个候选关键字 C) 一个关系中必须有多关键字个候选 D) 一个关系中可以没有候选关键字 参考答案:A 【解析】实体完整性约束要求关系的主键中属性值不能为空值,所以选择A)。 6.有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是( )。

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级C语言选择题

第一课C语言程序设计基础 1:(2010-09-11)以下关于结构化程序设计的叙述中正确的是() A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 B)结构化程序使用goto语句会很便捷 C)在C语言中,程序的模块化是利用函数实现的 D)由三种基本结构构成的程序只能解决小规模的问题 2:(2011-03-26)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是() A)C语言程序仅可以编译执行 B)C语言程序仅可以解释执行 C)C语言程序既可以编译执行又可以解释执行 D)以上说法都不对 3:(2011-03-26)以下叙述中错误的是( ) A)C语言的可执行程序是由一系列机器指令构成的 B)用C语言编写的源程序不能直接在计算机上运行 C)通过编译得到的二进制目标程序需要连接才可以运行 D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件 4:(2010-03-12)以下叙述正确的是() A)C语言程序是由过程和函数组成的 B)C语言函数可以嵌套调用,例如:fun(fun(x)) C)C语言函数不可以单独编译 D)C语言中除了main函数,其他函数不可作为单独文件形式存在 5:(2011-09-11)以下叙述中错误的是() A.C语言编写的函数源程序,其文件名后缀可以是C B.C语言编写的函数都可以作为一个独立的源程序文件 C.C语言编写的每个函数都可以进行独立的编译并执行 D.一个C语言程序只能有一个主函数 6:(2010-03-13)以下C语言用户标识符中,不合法的是() A)_1 B)AaBc C)a_b D)a-b 7:(2010-03-16)以下关于C语言数据类型使用的叙述中错误的是() A)若要准确无误差的表示自然数,应使用整数类型 B)若要保存带有多位小数的数据,应使用双精度类型 C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型 8:(2011-03-26)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是() A)-369 B)369C)0.369 D)整数集合{1,2,3,4,5} 9:(2011-09-13)以下选项中关于C语言常量的叙述错误的是:()

计算机二级c语言题库

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

2017年计算机二级C语言选择题题库

二级C语言 第一部分公共基础知识单项选择题(10分)1)、程序流程图中带有箭头的线段表示的是(A)数据流 (B)调用关系 (C)控制流 (D)图元关系 标准答案:C 2)、下列关于栈的叙述正确的是 (A)只能在栈底插入数据 (B)栈按"先进后出"组织数据 (C)不能删除数据 (D)栈按"先进先出"组织数据 标准答案:B 3)、算法的有穷性是指 (A)算法只能被有限的用户使用 (B)算法程序的长度是有限的 (C)算法程序所处理的数据量是有限的 (D)算法程序的运行时间是有限的 标准答案:D 4)、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为 (A)课号,成绩 (B)学号,姓名,成绩 (C)学号,成绩 (D)学号,课号 标准答案:D 5)、结构化程序设计的基本原则不包括 (A)自顶向下 (B)多态性 (C)逐步求精 (D)模块化 标准答案:B 6)、在软件开发中,需求分析阶段产生的主要文档是 (A)软件需求规格说明书(B)集成测试计划 (C)概要设计说明书 (D)可行性分析报告 标准答案:A 7)、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 (A)堆排序 (B)快速排序 (C)冒泡排序 (D)直接插入排序 标准答案:A 8)、软件设计中模块划分应遵循的准则是 (A)高内聚低耦合 (B)低内聚高耦合 (C)高内聚高耦合 (D)低内聚低耦合 标准答案:A 9)、 (A)自然连接 (B)笛卡尔积 (C)交 (D)并 标准答案:C 10)、在数据库设计中,将E-R图转换成关系数据模型的过程属于 (A)逻辑设计阶段 (B)概念设计阶段 (C)物理设计阶段 (D)需求分析阶段 标准答案:A

2016年计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 A.20 B.0或35 C.15 D.16 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 A.1:m联系 B.m:n联系 C.1:1联系 D.m:l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

计算机二级c语言真题三[1]

计算机二级 c 语言真题三 一、选择题((1) ~(10) 每小题2 分,(11)-(50) 每小题1 分,共60 分) 下列各题A)、B)、c) 、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 算法的时间复杂度是指_______。 A)执行算法程序所需要的时间 B)算法程序的长度 C)算法执行过程中所需要的基本运算次数 D)算法程序中的指令条数 答案:C 评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 (2) 下列叙述中正确的是________。 A)线性表是线性结构B) 栈与队列是非线性结构 C)线性链表是非线性结构D) 二叉树是线性结构 答案:A

评析:一般将数据结构分为两大类型:线性结构与非线性结构。 线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 (3) 下面关于完全二叉树的叙述中,错误的是_________。 A)除了最后一层外,每一层上的结点数均达到最大值 B)可能缺少若干个左右叶子结点 C)完全二叉树一般不是满二叉树 D)具有结点的完全二叉树的深度为[log2n]+1 答案:B 评析:满二叉树指除最后一层外每一层上所有结点都有两个子结 点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到 最大值,在最后一层上只缺少右边的若干子结点( 叶子结点) 的二叉树。 (4) 结构化程序设计主要强调的是_________。 A)程序的规模B) 程序的易读性 c) 程序的执行效率D) 程序的可移植性 答案:B 评析:结构化程序设计主要强调的是结构化程序清晰易读,可理 解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的 正确性。

全国计算机等级考试二级C语言真题库之选择题(15)

全国计算机等级考试等级考试真题库之选择题(15) 1.下列链表中,其逻辑结构属于非线性结构的是 A) 二叉链表 B) 循环链表 C) 双向链表 D) 带链的栈 参考答案:A 【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。 2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A) 15 B) 16 C) 20 D) 0或35 参考答案:D 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。 3.下列关于栈的叙述中,正确的是 A) 栈底元素一定是最后入栈的元素 B) 栈顶元素一定是最先入栈的元素 C) 栈操作遵循先进后出的原则 D) 以上说法均错误 参考答案:C 【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或"后进先出"表,所以选择C。 4.在关系数据库中,用来表示实体间联系的是 A) 属性 B) 二维表 C) 网状结构 D) 树状结构 参考答案:B

计算机二级C语言真题及答案

2014 年 3 月计算机二级 C 语言真题及答案 一、选择题 二、( 1)下列关于栈叙述正确的是 三、A) 栈顶元素最先能被删除 四、B)栈顶元素最后才能被删除 五、C) 栈底元素永远不能被删除? 六、D) 以上三种说法都不对 七、( 2)下列叙述中正确的是 八、A) 有一个以上根结点的数据结构不一定是非线性结构 九、B) 只有一个根结点的数据结构不一定是线性结构 十、C) 循环链表是非线性结构 十一、D)双向链表是非线性结构 十二、(3) 某二叉树共有7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层) 十三、A)3? 十四、B)4? 十五、C)6? 十六、D)7 十七、(4) 在软件开发中,需求分析阶段产生的主要文档是 十八、A)软件集成测试计划? 十九、B)软件详细设计说明书二十、C)用户手册?

二十一、D)软件需求规格说明书 二十二、(5) 结构化程序所要求的基本结构不包括 二十三、A)顺序结构? 二十四、B)GOTC跳转 二十五、C)选择(分支)结构? 二十六、D)重复(循环)结构 二十七、(6) 下面描述中错误的是 二十八、A)系统总体结构图支持软件系统的详细设计 二十九、B)软件设计是将软件需求转换为软件表示的过程三十、C)数据结构与数据库设计是软件设计的任务之一 三十一、D)PAD图是软件详细设计的表示工具 三十二、(7) 负责数据库中查询操作的数据库语言是 三十三、A) 数据定义语言 三十四、B)数据管理语言 三十五、C)数据操纵语言 三十六、D)数据控制语言 三十七、 (8) 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师 和课程间的联系是 三十八、A)1:1 联系? 三十九、B)1:m 联系 四十、C)m:1 联系? 四十一、D)m:n 联系 四十二、(9)有三个关系R、S和T如下: 四十三、则由关系R和S得到关系T的操作是四十四、A) 自然连接?

相关文档
相关文档 最新文档