admin 管理员组文章数量: 1086019
2024年12月30日发(作者:switch语句中default子句可以没有)
全国计算机等级考试《二级C语言程序设计》模拟试卷二
[单选题]1.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
( (江南博哥))。
A.外模式
B.内模式
C.概念模式
D.逻辑模式
参考答案:B
参考解析:数据库管理系统的三级模式包括:①外模式,也称子模式、用户模
式,是指数据库用户所看到的数据结构,是用户看到的数据视图;②模式,也
称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所
见到的数据视图的总和;③内模式,也称存储模式、物理模式,是指数据在数
据库系统内的存储介质上的表示,是对数据的物理结构和存取方式的描述。答
案选择B选项。
[单选题]4.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求
B.确定软件系统的性能需求
C.需求规格说明书评审
D.制定软件集成测试计划
参考答案:D
参考解析:需求分析阶段的工作主要包括4个方面:①需求获取,其目的是确
定对目标系统的各方面需求;②需求分析,对获取的需求进行分析和综合,最
终给出系统的解决方案和目标系统的逻辑模型;③编写文档,编写需求规格说
明书,编写初步用户使用手册;④确认测试计划,修改完善软件开发计划,需
求评审。制定软件集成测试计划属于概要设计阶段的任务。答案选择D选项。
[单选题]5.结构化程序的三种基本控制结构是()。
A.顺序、选择和重复(循环)
B.过程、子程序和分程序
C.顺序、选择和调用
D.调用、返回和转移
参考答案:A
参考解析:结构化程序设计中三种基本控制结构为顺序、选择和重复(循
环)。答案选择A选项。
[单选题]6.构成计算机软件的是()。
A.源代码
B.程序和数据
C.程序和文档
D.程序、数据及相关文档
参考答案:D
参考解析:计算机软件的定义为:与计算机系统的操作有关的计算机程序、规
程、规则,以及可能有的文件、文档及数据。答案选择D选项。
[单选题]7.在黑盒测试方法中,设计测试用例的主要根据是()。
A.程序内部逻辑
B.程序外部功能
C.程序数据结构
D.程序流程图
参考答案:B
参考解析:黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序
的需求和功能规格说明,检查程序的功能是否符合它的功能规格说明。答案选
择B选项。
[单选题]8.在数据库中,数据模型包括数据结构、数据操作和()。
A.数据约束
B.数据类型
C.关系运算
D.查询
参考答案:A
参考解析:在数据库系统中的数据模型有三个要素:数据结构、数据操作和数
据的约束条件。答案选择A选项。
[单选题]9.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是
()。
A.自然连接
B.交
C.除
D.并
参考答案:C
参考解析:A项,自然连接的条件是两关系间有公共域,通过公共域的相等值进
行连接,R与S的公共域为A和B;B项,R与S进行交运算后得到的关系是由
既在R内又在S内的元素组成的,显然T不在S内;C项, R与S除运算后的
域由R中不出现在S中的域组成;D项,R与S进行并运算得到的关系由属于R
或属于S的元组组成。答案选择C选项。
[单选题]10.在关系模型中,每一个二维表称为一个()。
A.关系
B.属性
C.元组
D.主码(键)
参考答案:A
参考解析:关系模型采用二维表来表示,一个二维表表示一个关系。答案选择A
选项。
[单选题]11.以下叙述中正确的是()。
A.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令
B.程序必须包含所有三种基本结构才能成为一种算法
C.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表
达
D.只有简单算法才能在有限的操作步骤之后结束
参考答案:A
参考解析:顺序、选择、循环是C语言程序的三个基本结构,一个C语言算法
可以由其中一种或者多种构成,选项B错误;这三种结构能解决所有的问题,
而且C语言只有这三种结构,选项C错误;C语言算法的特点之一就是有穷性,
任何一个算法都必须能在有限的操作步骤和有限的时间之后结束,选项D错
误;C语言程序编译时将每条可执行语句转换为二进制的机器指令,答案选择A
选项。
[单选题]12.以下叙述正确的是()。
A.计算机只接收由0和1代码组成的二进制指令或数据
B.计算机只接收由0和1代码组成的十进制指令或数据
C.计算机可直接接收并运行C源程序
D.计算机可直接接收并运行任意高级语言编写的源程序
参考答案:A
参考解析:二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器
件。例如,电路中有无电流,有电流用1表示,无电流用0表示。类似的还比
如电路中电压的高低,晶体管的导通和截止等;二进制数运算简单,大大简化
了计算中运算部件的结构,故选项A正确、B错误。计算机能直接执行的只有机
器语言程序。选项C、D错误。答案选择A选项。
[单选题]13.以下叙述中错误的是()。
A.C程序在运行过程中所有计算都以十进制方式进行
B.C程序在运行过程中所有计算都以二进制方式进行
C.所有C程序都需要编译链接无误后才能运行
D.C程序中字符变量存放的是字符的ASCⅡ值
参考答案:A
参考解析:C程序在运行过程中所有计算都以二进制方式进行。答案选择A选
项。
[单选题]14.若有定义语句:
int a=3,b=2,c=1;
以下选项中错误的赋值表达式是()。
A.a=(b=4)+c;
B.a=b=c+1;
C.a=(b=4)=3;
D.a=1+(b=c=4);
参考答案:C
参考解析:对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一
个C语言合法的表达式。A项,等价于语句“b=4;a=b+c=5;”;B项,等价于语
句“c=1;b=c+1=2;a=b=2;”;D项,等价于语句“c=4;b=c=4;a=1+b=5;”。答案
选择C选项。
[单选题]15.有以下程序
#include
main()
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%dn",x,y,z);
}
程序运行后的输出结果是()。
A.2,3,2
B.2,3,3
C.2,3,1
D.2,2,1
参考答案:C
参考解析:考查逗号表达式。注意区分,z=x++是先将x的值赋给z,在令x自
增;z=++x是先将x自增,再将自增后的值赋给z;而无论是++x还是x++,都
会完成x自增的运算。对于表达式“z=x++,y++,++y;”,因为赋值运算符的优
先级高于逗号运算符的优先级,所以可以将上式改成
“(z=x++),(y++),(++y);”。然后从左向右先计算表达式z=x++,后缀自增运算
先进行其他运算,再执行自增运算,所以z的值为1,x的值为2,再计算逗号
表达式第二个表达式y++,此时y的值为1,y++的值为2,最后计算第三个表达
式++y,y的值为3。答案选择C选项。
[单选题]16.若想给已定义为int型的变量a、b、c、d赋整数1,以下选项中错
误的语句是()。
A.a=b,b=c,c=d,d=1;
B.a=b=c=d=1;
C.a=1,b=a,c=b,d=c;
D.d=1,c=d,b=c,a=b;
参考答案:A
参考解析:由于C语言逗号表达式的的执行顺序是从左向右,赋值运算符是自
右向左,A选项先执行a=b时,b为空值,故不正确;所以在连续赋值时一定要
保证赋值运算符的右项有确定的值。答案选择A选项。
[单选题]17.以下能正确输出字符a 的语句是()。
("%s", "a");
("%s",'a');
("%c", "a");
("%d",'a');
参考答案:A
参考解析:输出函数printf()的一般形式为“printf("格式控制字符串",输出
项1,输出项2,…)”,输出项的形式要和格式控制字符串中的格式控制符保持
一致,"%s"为输出字符串,"%c"为输出单个字符,"%d"为以十进制形式输出带
符号整数,答案选择A选项。
[单选题]18.有以下程序段
int m=33,n=66;
m=m^n; n=n^m; m=m^n;
执行上述语句后,m和n的值分别是()。
A.m=66,n=33
B.m=33,n=66
C.m=66,n=66
D.m=33,n=33
参考答案:A
参考解析:^为按位异或运算,是双目运算符,参与运算的两个二进制位相同,
则结果的该位为0;参与运算的两个二进制位不同,则结果的该位为1。首先将
m和n表示成对应的二进制,33 = 00100001B,66 = 01000010B,执行m=m^n,
得m = 00100001 ^ 01000010 = 01100011B;执行 n=n^m,得n = 01000010 ^
01100011 = 00100001B = 33;执行 m=m^n,得m = 01100011 ^ 00100001 =
01000010B = 66;因此语句实现了m和n的交换。答案选择A选项。
[单选题]19.有以下程序段,若变量已正确定义并赋值
if(a>b)printf("x=%d,",x);
else printf("y=%d,",y);
if(a<=b)i++;
else j++;
则与此程序段功能相同的选项是()。
(a>b)
{
printf("x=%d,",x);
j++
}
else
{
printf("y=%d,",y);
i++
}
(a>b)
{
printf("x=%d,",x);
i++
}
else
{
printf("y=%d,",y);
j++
}
(a<=b)
{
printf("x=%d,",x);
i++
}
else
{
printf("y=%d,",y);
j++
}
(a>=b)
{
printf("x=%d,",x);
i++
}
else
{
printf("y=%d,",y);
j++
}
参考答案:A
参考解析:程序段执行过程为:如果a>b,输出x,否则输出y;如果a<=b,i
加1,否则j加1。A项如果a>b,输出x且j加1,否则输出y且i加1,与题
目中功能相同,A项正确。B项如果a>b,输出x且i加1,否则输出y且j加
1,与题目中功能不相同,B项错误。C项如果a<=b,输出x且i加1,否则输
出y且j加1,与题目中功能不相同,C项错误。D项判断条件为a>=b,多了
a=b,D项错误。答案选择A选项。
[单选题]20.有以下程序
#include
main()
{
int x=1, y=0;
if (!x) y++;
else if (x==0)
if (x) y+=2;
else y+=3;
printf("%dn", y);
}
程序运行后的输出结果是()。
A.0
B.2
C.1
D.3
参考答案:A
参考解析:在该题中,选择结构的表达式都不成立,所以整个选择语句都没有
执行,y值没有发生改变,答案选择A选项。
[单选题]21.有以下程序
#include
main()
{
char b,c;
int i;
b='a';
c='A';
for(i=0;i<6;i++)
{
if (i%2) putchar(i+b);
else putchar(i+c);
}
printf("n");
}
程序运行后的输出结果是()。
参考答案:B
参考解析:本题中,当i为偶数时,即0、2、4,执行putchar(i+c)会依次输
出ACE;当i为奇数时,即1、3、5,执行putchar(i+b)会依次输出bdf,所以
最终输出AbCdEf。答案选择B选项。
[单选题]22.有以下程序
#include
main()
{
int y=9;
for(;y>0;y--)
if(y%3==0) printf("%d",--y);
}
程序的运行结果是()。
A.875421
B.963
C.741
D.852
参考答案:D
参考解析:该程序的运行过程是y从9开始自减,每次判定y是否能被3整
除,若是,则输出--y后的值,能被3整除的y值分别为9、6、3,对应输出
8、5、2,所以答案选择D选项。
[单选题]23.以下叙述中正确的是()。
A.程序的算法只能使用流程图来描述
B.结构化程序的三种基本结构是循环结构、选择结构、顺序结构
C.N-S流程图只能描述简单的顺序结构的程序
D.计算机可以直接处理C语言程序,不必进行任何转换
参考答案:B
参考解析:程序的算法可以用流程图、程序语句、伪代码和流程图以及文字进
行描述,选项A错误;N-S能完整描述程序的所有结构,不仅仅包括简单的顺序
结构,选项C错误;C语言的源文件需要经过编译、链接生成可执行文件后才可
以被计算机执行,选项D错误;循环结构、选择结构、顺序结构是结构化程序
的三种基本结构,答案选择B选项。
[单选题]24.以下叙述中正确的是()。
A.语句 int a[][3] = {1,2,4,5}; 是错误的初始化形式
B.语句 int a[4][3] = {1,2,4,5}; 是错误的初始化形式
C.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵
D.语句 int a[4][3] = {{1,2},{4,5}}; 是错误的初始化形式
参考答案:C
参考解析:考查二维数组的初始化。初始化二维数组的时候可以对其部分元素
赋初值,选项B错。还可以对数组的全部元素赋初值,此时第一维的元素个数
可以不指定,也可以分行赋值,只对部分元素赋初值,选项A、D错。C的描述
正确,答案选择C选项。
[单选题]25.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
()。
A.(E==0)
B.(E>0‖E<0)
C.(!E==0)
D.(E!=0)
参考答案:A
参考解析:BCD三项都是E不等于零时执行while循环,A项是E等于零时执行
while循环。答案选择A选项。
[单选题]26.以下数组定义中错误的是()。
x[2][3]={1,2,3,4,5,6};
x[][3]={0};
x[][3]={{1,2,3},{4,5,6}};
x[2][3]={{1,2},{3,4},{5,6}};
参考答案:D
参考解析:A项正确,在给二维数组赋初值时可以不用行花括号对;B项正确,
对于二维数组,第一维的大小可以省略,计算规则是元素的个数除以第二维的
大小向上取整,定义1行3列的数组,里面的元素全部是零;C项正确,第一维
的大小由所赋初值的行数来决定,定义2行3列的数组;D项错误,应该是
x[3][2]。答案选择D选项。
[单选题]27.下列定义数组的语句中,正确的是()。
x[];
N=10; int x[N];
x[0..10];
D.#define N 10
int x[N];
参考答案:D
参考解析:一维数组定义格式是:类型名 数组名[整型常量表达式]。D项正
确,它使用预处理宏定义,N可以看做是常量。A项错误,没有指明数组的长
度;B项错误,数组长度不能由变量指明;C项错误,数组长度应该整型常量表
达式。答案选择D选项。
[单选题]28.以下叙述中正确的是()。
A.函数调用时,不必区分函数名称的大小写
B.调用函数时,函数名必须与被调用的函数名完全一致
C.函数名允许用数字开头
D.在函数体中只能出现一次return语句
参考答案:B
参考解析:调用函数的时候只有保证调用语句的函数名和被调函数的函数名、
参数列表一致才能保证调用的正确性,B正确。C语言对大小写敏感,选项A
错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下
划线组成并且第一个字符不能为数字,选项C错。一个函数每次只能使用一个
return语句,但是该函数体中可以有多个返回点,也就是有多条return语句,
每次只从其中一点返回,选项D错。答案选择B选项。
[单选题]29.有以下程序
#include
main()
{
int i,j = 0;
char a[] = "How are you", b[10] = {0};
for (i=0; a[i]; i++)
if (a[i] == ' ')
b[j++] = a[i+1];
printf("%sn",b);
}
程序运行后的输出结果是()。
you
参考答案:A
参考解析:本题的功能是:一旦出现空格,即把空格后面的字符输出。答案选
择A选项。
[单选题]30.以下关于字符串的叙述中正确的是()。
A.C语言中有字符串类型的常量和变量
B.两个字符串中的字符个数相同时才能进行字符串大小的比较
C.可以用关系运算符对字符串的大小进行比较
D.空串比空格打头的字符串小
参考答案:D
参考解析:A项错误,C语言中没有字符串类型,而是通过字符数组的形式保存
字符串。B项错误,字符串比较的方法是:依次对s1和s2中对应位置上的字符
两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的
大小(比较字符大小的依据是其ASCII码值)。空格是一种字符,所以空串肯
定比空格打头的字符串小。C项错误,比较字符串大小时,通过库函数
strcmp(s1,s2)或者自定义函数,不能使用关系运算符。D项正确:空串的长度
为0,而以空格打头的字符串的长度至少为1。答案选择D选项。
[单选题]31.有以下程序
#include
void fun(int *s)
{
static int j=0;
do s[j] += s[j+1]; while(++j<2);
}
main()
{
int i,a[10]={1,2,3,4,5};
for(i=1; i<3; i++) fun(a);
for(i=1; i<5; i++) printf("%d",a[i]);
printf("n");
}
程序运行后的输出结果是()。
A.5745
B.34756
C.5795
D.35745
参考答案:A
参考解析:从main函数开始,第一个for循环:k=1,满足条件k<3,调用
fun(a)。fun()函数中,s为指向数组a的指针,则有s[0]=s[0]+s[1]=3,满足
条件++j(此时j=1)小于2,继续执行do-while循环;s[1]=s[1]+s[2]=5,不
满足条件++j(此时j=2)小于2,退出do-while循环。此时:k=2,满足条件
k<3,再次调用fun(a)。由于j定义为静态变量,所以上次函数调用结束时j=2
仍被保留,则有s[2]=s[2]+s[3]=7,不满足条件++j(此时j=3)小于2,退出
do-while循环。此时,k=3,不再满足循环条件,退出第一个for循环,执行第
二个for循环,输出a[1]~a[4]共4个数,即5745。答案选择A选项。
[单选题]32.有以下程序
#include
main()
{
int a[10]={11,12,13,14,15,16,17,18,19,20},*p=a,i=9;
printf("%d,%d,%dn",a[p-a],p[i],*(&a[i]));
}
程序运行后的输出结果是()。
A.11,20,20
B.12,20,20
C.11,19,19
D.12,19,20
参考答案:A
参考解析:a表示数组a的第一个元素的地址,*p=a则将p指向了数组a的第
一个元素的地址,p-a=0,所以a[p-a]即为a[0],p[i]相当于a[i]即a[9],输
出第一个结果为11、第二个结果为20。取地址运算符&和取值运算符*互为逆运
算,所以*(&a[i]))的值仍为a[i]即a[9],输出第三个结果为20,答案选择A
选项。
[单选题]33.有以下程序
#include
#include
void fun(double *p1,double *p2,double *s)
{
s = (double *)calloc( 1,sizeof(double) );
*s = *p1 + *( p2+1 );
}
main()
{
double a[2] = { 1.1, 2.2 }, b[2] = { 10.0, 20.0 }, *s=a;
fun(a, b, s);
printf("%5.2fn", *s);
}
程序的输出结果是()。
A.11.10
B.1.10
C.12.10
D.21.10
参考答案:B
参考解析:函数fun()的功能是用calloc()函数重新分配了1个长度为
sizeof(double)的连续空间,并把返回的内存地址赋值给s,之后往新分配的内
存中写入数据。由于函数传递过程中形参指针指向的变化不能影响到实参指针
的指向,所以函数fun()并不能改变s的指向,*s与a[0]等价,格式输出的结
果为 1.10,注意整数1前有一个空格,因为格式输出%5.2f要求输出的浮点数
宽度为5,答案选择B选项。
[单选题]34.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数
feof(fp)的返回值为()。
A.非0值
B.'0'
C.0
参考答案:A
参考解析:本题考查的是文件指针feof的运用。当文件读到结尾时,feof(fp)
为非零值,否则为0。答案选择A选项。
[单选题]35.以下叙述中正确的是()。
A.如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
B.即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可
以不同
C.设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D.指针变量之间不能用关系运算符进行比较
参考答案:A
参考解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个
存储单元,A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B
错。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故选项
C错。指针之间能进行关系运算,比较的是地址值的大小,选项D错。答案选择
A选项。
[单选题]36.若要使用C数学库中的sin函数,需要在源程序的头部加上
#include
关于引用数学库,以下叙述正确的是()。
A.将数学库中sin函数的源程序插入到引用处,以便进行编译链接
B.将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行
C.通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类
型
D.实际上,不引用math.h文件也能正确调用sin函数
参考答案:C
参考解析:考查文件包含处理。文件包含命令的功能是把指定的文件添加到预
处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了
程序要调用的函数的声明。由此,选项A、B、D表述错误。答案选择C选项。
[单选题]37.以下叙述中正确的是()。
A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于C源程序的起始位置
C.#include 必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
参考答案:A
参考解析:“编译预处理”就是在C编译程序对C源程序进行编译前,由编译
预处理程序对这些编译预处理命令行进行处理的过程。A项正确,在C语言中,
凡是以“#”号开头的行,都称为“编译预处理”命令行。B项错误,预处理命
令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末
尾;C项错误,#include 可以出现在程序的任意一行的开始部位;D项错误,
预处理可以实现宏定义、条件编译和文件包含。答案选择A选项。
[单选题]38.下面结构体的定义语句中,错误的是()。
t ord {int x; int y; int z; } sdivuct ord a;
t ord {int x; int y; int z; }; sdivuct ord a;
t ord {int x; int y; int z; } a;
t {int x; int y; int z; } a;
参考答案:A
参考解析:C语言中结构体变量的定义有三种方法:①定义结构体类型的同时定
义结构体变量,如C项;②使用无名结构体类型定义结构体变量,如D项;③
先定义结构体类型,后定义结构体变量,如B项,A项错在分别定义结构体类型
与结构体变量时需要用“;”隔开。故答案选择A选项。
[单选题]39.有以下程序
#include
typedef sdivuct {int b, p;} A;
void f(A c)
{
int j;
c.b+=1;
c.p+=2;
}
void main()
{
int i;
A a={1,2};
f(a);
printf("%d,%dn", a.b, a.p);
}
程序运行后的输出结果是()。
A.2,4
B.1,2
C.1,4
D.2,3
参考答案:B
参考解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的
变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为
1,2,答案选择B选项。
[单选题]40.有以下程序
#include
main()
{
char x=2,y=2,z;
z=(y<<1)&(x>>1);
printf("%dn",z);
}
程序的输出结果是()。
A.4
B.1
C.0
D.8
参考答案:C
参考解析:x、y的ASCII码为2,对应二进制为0010,y<<1的结果为0100,
x>>1的结果为0001,而0100&0001的结果为0,答案选择C选项。
[问答题]1.给定程序中,函数fun的功能是计算下式:
直到
并把计算结果作为函数值返回。
例如:若形参e的值为1e-3,函数的返回值为0.141457。
请在程序的下划线处填入正确的内容并把下划线删除.使程序得出正确的结
果。注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
/**********code.c**********/
#include
double fun(double e)
{
int i,k;
double s,t, x;
s=0;
k=1;
i=2;
x=①______/4;
while(x ②______ e)
{
s=s+k*x;
k=k* (-1);
t=2*i;
x=③______/(t*t);
i++;
}
return s;
}
main()
{
double e=1e-3;
printf("nThe result is: %fn",fun(e));
}
/**********-code.c**********/
参考答案:
①1.0或(double)1
②>
③(t-1)
参考解析: 填空1:变量x定义为double类型,而运算符“/”后面是整型
数,所以给x赋值时,需要注意数据类型,此处不能将1.0写成1。
填空2:while循环语句的循环条件,根据题意确定循环变量应大于1e-3,
因此此处应填“>”。
填空3:表达式的通项是(2*i-1)/(2*i)
2
,由于程序中已定义t=2*i,所以
此处应该填写(t-1)。
[问答题]2.下列给定的程序中,函数fun()的功能是:求出以下分数序列的前n
项和。2/1,3/2,5/3,8/5,13/8,21/13,……和值通过函数值返回main()函
数。例如,若输入n=5,则应输出8.391667。
注意:部分源程序给出如下。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
/**********code.c**********/
#include
/**********found**********/
void fun(int n)
{
int a, b, c, k;
double s;
s = 0.0;
a = 2;
b = 1;
for(k = 1; k <= n; k++)
{
/**********found**********/
s = s + (Double)a / b;
c = a;
a = a + b;
b = c;
}
return s;
}
void main()
{
int n = 5;
printf("nThe value of function is: %lfn", fun(n));
}
/**********-code.c**********/
参考答案:
(1)错误:void fun(int n)
正确:double fun(int n)
(2)错误:s = s + (Double)a / b;
正确:s=s+(double)a/b;
参考解析: 错误1:由语句“return(s);”和变量s定义为double数据类
型可知,该函数定义时其类型标识符为double类型。
错误2:注意数据类型double的书写格式。
[问答题]3.请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中
最大元素的值,并将此值返回调用函数。注意部分源程序存在文件PROG1.C文
件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中
埴入你编写的若干语句。
/**********code.c**********/
#include
#define M 4
int fun (int a[][M])
{
}
void main()
{
int arr[2][M]={5,8,3,45,76,-4,12,82};
printf("max =%dn", fun(arr));
}
参考答案:
int fun (int a[][M])
{
int i,j,max=a[0][0];
for(i=0;i<2;i++)
版权声明:本文标题:全国计算机等级考试《二级C语言程序设计》模拟试卷二 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735644852a1682429.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论