二级C语言-4-2
(总分79, 做题时间90分钟)
一、选择题
1.
下列选项中不属于软件生命周期开发阶段任务的是 。
∙A. 软件测试
∙B. 概要设计
∙C. 软件维护
∙D. 详细设计
A B C D
分值: 2
答案:C
[解析] 软件的生命周期可分为软件定义、软件开发及软件运行维护3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。
2.
以下函数返回a所指数组中最大值所在的下标值,在下画线处应填入的内容是
fun(int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]>a[p])______;
return(p);
}
fun(int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]>a[p])______;
return(p);
}
c语言while语句流程图∙A. i=p
∙B. a[p]=a[i]
∙C. p=j
∙D. p=i
A B C D
分值: 2
答案:D
[解析] 该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,则应该把i的值赋给p,这样才满足题目的要求。
3.
在C语言中,函数的隐含存储类别是 ( )
∙**
∙**
∙**
D.无存储类别
A B C D
分值: 1
答案:A
4.
有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为
由关系R和S通过运算得到关系T,则所使用的运算为
∙A. 并
∙B. 自然连接
∙C. 笛卡儿积
∙D. 交
A B C D
分值: 1
答案:D
[解析] 在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1,又属于R2。
5.
已知a的ASCⅡ码为97,执行下面两个语句后,输出的结果为______。
char c1=97;c2=98;
printf("%d%c",c1,c2);
char c1=97;c2=98;
printf("%d%c",c1,c2);
∙A. 97 98
∙B. 97 b
∙C. a 98
∙D. a b
A B C D
分值: 1
答案:B
[解析] 整型数据和字符数据可以通用,变量c1和c2被定义为字符型,语句c1=97和c2=98的作用相当于执行c1='a'和c2='b'两语句。在输出语句中,%d%c是输出格式符,要求在相应位置上分别输出一个整数和一个字符。
6.
下列选项中,能正确定义数组的语句是
∙A. int num[0..2008];
∙B. int num[];
∙C. int N=2008; int num[N];
∙D. #define N 2008 int num[N];
A B C D
分值: 2
答案:D
[解析] 定义数组时,数组大小只能是常量。选项C中是变量,选项B中没有指定数组大小,所以选项C和B错误的。选项A的表示方法显然是错误的。选项D中的N是符号常量,满足数组定义的语法要求。
7.
下列定义不正确的有______。
∙A. #define PI 3.141592
∙B. #define S 345;
∙C. int max(x, y); int x,y; {}
∙D. int max(int,int);
A B C D
分值: 1
答案:C
[解析] 定义函数时,函数头后不能加分号。
8.
有以下程序:
#include<stdio.h>
#include<stdio.h>
void fun(char*c, int d)
{ *c=*c+1; d=d+1;
printf("%c, %c, ", *c, d);
}
main()
{ char b='a',a='A';
fun(&b, a); printf("%c, %c\n", b, a);
}
程序运行后的输出结果是
{ *c=*c+1; d=d+1;
printf("%c, %c, ", *c, d);
}
main()
{ char b='a',a='A';
fun(&b, a); printf("%c, %c\n", b, a);
}
程序运行后的输出结果是
∙A. b, B, b, A
∙B. b, B, B, A
∙C. a, B, B, a
∙D. a, B, a, B
A B C D
分值: 2
答案:A
[解析] 函数fun的第一个参数传指针,可以将更改后的值传回调用函数,第二个参数传值,不能将更改后的值传回调用函数,故选A)。
9.
以下叙述中正确的是( )。
∙A. 调用printf函数时,必须要有输出项
∙B. 使用putchar函数时,必须在之前包含头文件stdio.h
∙C. 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
∙D. 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
A B C D
分值: 1
答案:B
[解析] 本题考查了C语言的一些基本概念。printf()函数可以只有控制项而没有输出项,例如,printf("Hello!"); ,所以选项A)不正确。C语言中不支持整数以十二进制输出,因此选项C)不正确。getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入ASCII码的话,只能读到第1个数字字符,所以选项D)不正确。故应该选择B),putchar是C语言中的库函数,使用时必须包含stdio.h。
10.
以下程序的输出结果是
#include<stdio.h>
int a[3][3]={1, 3, 5, 7, 9, 11, 13, 15, 17, }, *p;
main()
{ p=(int *)malloc(sizeof(int));
f(p, a);
printf("%d\n", *p);
free(p); }
f(int *s, int p[][3])
{ *s=p[1][1]; }
int a[3][3]={1, 3, 5, 7, 9, 11, 13, 15, 17, }, *p;
main()
{ p=(int *)malloc(sizeof(int));
f(p, a);
printf("%d\n", *p);
free(p); }
f(int *s, int p[][3])
{ *s=p[1][1]; }
∙A. 1
∙B. 7
∙C. 9
∙D. 13
A B C D
分值: 2
答案:C
[解析] 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素9,所以输出结果为9。
11.
设有int x=11;则表达式(x++*1/3)的值是______。
∙A. 3
∙B. 4
∙C. 11
∙D. 12
A B C D
分值: 1
答案:B
12.
若有以下程序段
int m=0xabc,n=0xabc;
m-=n;
printf("%X\n".m);
执行后输出结果是
int m=0xabc,n=0xabc;
m-=n;
printf("%X\n".m);
执行后输出结果是
∙A. 0X0
∙B. 0x0
∙C. 0
∙D. 0XABC
A B C D
分值: 1
答案:C
[解析] 本题考核的知识点是 C语言中的自反赋值运算符。 “m-=n”相当于“m=m-n”,两个相等的数相减,其值为0。所以, C选项为所选。
13.
在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
∙A.(E>0||E<0)
∙B.(E==0)
∙C.(!E==0)
∙D.(E!=0)
A B C D
分值: 1
答案:B
[解析] while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。
14.
有以下程序
#include<stdio.h>
void fun(int*s,int n1,int n2)
{
int i,j,t;
i=n1;j=n2;
while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0),k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");
}
#include<stdio.h>
void fun(int*s,int n1,int n2)
{
int i,j,t;
i=n1;j=n2;
while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0),k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");
}
程序运行的结果是 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论