admin 管理员组文章数量: 887053
2024年1月5日发(作者:codeblocks环境错误怎么办)
二级C语言-4-2
(总分79, 做题时间90分钟)
一、选择题
1.
下列选项中不属于软件生命周期开发阶段任务的是 。
A. 软件测试
•
B. 概要设计
•
C. 软件维护
•
D. 详细设计
•
SSS_SIMPLE_SIN
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);
}
A. i=p
•
B. a[p]=a[i]
•
C. p=j
•
D. p=i
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:D
[解析] 该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,则应该把i的值赋给p,这样才满足题目的要求。
3.
在C语言中,函数的隐含存储类别是 ( )
**
•
**
•
**
•
D.无存储类别
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:A
4.
有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为
A. 并
•
B. 自然连接
•
C. 笛卡儿积
•
D. 交
•
SSS_SIMPLE_SINA 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);
A. 97 98
•
B. 97 b
•
C. a 98
•
D. a b
•
SSS_SIMPLE_SIN
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];
•
SSS_SIMPLE_SINA 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);
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:C
[解析] 定义函数时,函数头后不能加分号。
8.
有以下程序:
#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, %cn", b, a);
}
程序运行后的输出结果是
A. b, B, b, A
•
B. b, B, B, A
•
C. a, B, B, a
•
D. a, B, a, B
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:A
[解析] 函数fun的第一个参数传指针,可以将更改后的值传回调用函数,第二个参数传值,不能将更改后的值传回调用函数,故选A)。
9.
以下叙述中正确的是( )。
A. 调用printf函数时,必须要有输出项
•
B. 使用putchar函数时,必须在之前包含头文件stdio.h
•
C. 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
•
D. 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
•
SSS_SIMPLE_SINA 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("%dn", *p);
free(p); }
f(int *s, int p[][3])
{ *s=p[1][1]; }
A. 1
•
B. 7
•
C. 9
•
D. 13
•
SSS_SIMPLE_SIN
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
•
SSS_SIMPLE_SINA B C D
分值: 1
答案:B
12.
若有以下程序段
int m=0xabc,n=0xabc;
m-=n;
printf("%Xn".m);
执行后输出结果是
A. 0X0
•
B. 0x0
•
C. 0
•
D. 0XABC
•
SSS_SIMPLE_SIN
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)
•
SSS_SIMPLE_SIN
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");
}
程序运行的结果是 。
**
•
**
•
**
•
**
SSS_SIMPLE_SINA B C D
分值: 1
答案:C
[解析] fun()函数的功能为使数组中的元素逆序。
15.
以下语句或语句组中,能正确进行字符串赋值的是________。
A. char *sp;*sp="right!";
•
B. char s[10];s="right!";
•
C. char s[10];*s="right!";
•
D. char *sp="right!";
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:D
16.
有以下程序:
#include<stdio.h>
main()
{FILE *pf;
char*s1="China",*s2="Beijing":
pf=fopen("","wb+");
fwrite(s2,7,1,pf);
rewind(pf); /*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后文件的内容是 。
A. China
•
B. Chinang
•
C. ChinaBeijing
•
D. BeijingChina
•
SSS_SIMPLE_SINA B C D
分值: 2
答案:B
[解析] 本题考查函数fwrite的使用。函数fwrite的调用形式为:int
fwrita(char*pt,unsigned n,FILE*fp);其功能是把pt所指向的n*size个字节输出到fp所指文件中,第二次调用该函数时,从文件的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后面短出的部分保留原样。
17.
下列叙述中正确的是______。
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
•
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
•
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
•
D.循环队列中元素的个数是由队头指针和队尾指针共同决定的
•
SSS_SIMPLE_SIN
A B C D
分值: 4
答案:D
[解析] 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。
18.
有以下程序:
void change(int k[]){k[0]=k[5];)
main()
{int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;
while(n<=4)(change(&x[n]);n++;}
for(n=0;n<5;n++)printf("%d",x[n]);
printf("n");
}
程序运行后的输出结果是______。
A. 6 7 8 9 10
•
B. 1 3 5 7 9
•
C. 1 2 3 4 5
•
D. 6 2 3 4 5
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:A
[解析] 本题主要考查数组元素的地址作为实参,当n=0时,把x[0]的地址传递给被调函数change(),即把形参k和实参x指向同一个存储单元,执行被调函数后k[0]=6,即x[0]=6;当n=1时,执行被调函数后x[1]=7,以此类推,最后得到x数组的值为6,7,8,9,10。
19.
设有定义:intk=1,m=2;noat f=7;则下列选项中错误的表达式是 。
A. k=k>=k
•
B. -k++
•
C. k%int(f)
•
D. k>=f>=m
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:C
[解析] 在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k
>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。
20.
以下选项中,不能正确赋值的是______。
A. char s1[10]; s1="chest";
•
B. char s2[]={'C','t','e','s','t'};
•
C. char s3[20]="Chest";
•
D. char*s4="Ctestn"
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:A
[解析] 语言中不能将字符串常量直接赋给数组。但在赋初值时可以。
21.
下列叙述中正确的是 。
A. 算法的执行效率与数据的存储结构无关
•
B. 算法的空间复杂度是指算法程序中指令(或语句)的条数
•
C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
•
D. 以上3种描述都不对
•
SSS_SIMPLE_SINA B C D
分值: 2
答案:C
[解析] 算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。
22.
下列叙述中不正确的是 。
A. 在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
•
B. 在C的函数中,最好使用全局变量
•
C. 外部变量可以在函数之间传递数据
•
D. 自动变量实质上是一个函数内部的局部变量
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:B
[解析] 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
23.
以下有4组用户标识符,其中合法的一组是 ______。
A. For -sub Case
•
B. 4d DO Size
•
C. f2_G3 IF abc
•
D. WORD void define
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:C
[解析] 选项A中有非法标识符-sub,选项B中有非法标识符4d,选项D中有C语言保留字void。
24.
对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A. 快速排序
•
B. 冒泡排序
•
C. 直接插入排序
•
D. 堆排序
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:D
[解析] 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-1)/2,堆排序需要的比较次数为nlog2n。
25.
有下列函数:
int fun(char*s)
{char*t=s;
while(*t++);
return(t-s);
}
该函数的功能是 。
A. 比较两个字符串的大小
•
B. 计算s所指字符串占用内存字节的个数
•
C. 计算s所指字符串的长度
•
D. 将s所指字符串复制到字符串t中
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:C
[解析] 在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。
26.
已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是
A. 数组a和b的长度相同
•
B. a数组长度小于b数组长度
•
C. a数组长度大于b数组长度
•
D. 上述说法都不对
•
SSS_SIMPLE_SINA B C D
分值: 1
答案:C
[解析] a数组存放的是字符串,系统会自动在字符串的最后加上一个“0”,所以a数组的长度为4,而b数组的长度为3,故a数组长度大于b数组长度。
27.
在关系数据库模型中,通常可以把( )称为属性,其值称为属性值。
A. 记录
•
B. 基本表
•
C. 模式
•
D. 字段
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:D
[解析] 数据库表中字段转化为属性,把记录的类型转化为关系模式。
28.
执行以下程序时输入1234567<CR>,则输出结果是
#include <stdio.h>
main()
{ int a=1,b;
scanf("%3d%2d",&a,&b);
printf("%d%dn",a,b);
}
A. 12367
•
B. 12346
•
C. 12312
•
D. 12345
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:D
[解析] scanf函数中的格式控制说明为“%3d%2d”,分别选中输入中的3位和2位,因此a=123,b=45。因此正确答案为D)。
29.
以下能正确定义的数组并正确赋初值的语句是
A. int N=5,b[N][N];
•
** a[1][2]={{1},{3 }};
•
C. int c[2][]={{1,2},{3,4}};
•
D. int d[3][2]={{1,2},{3,4}};
SSS_SIMPLE_SINA B C D
分值: 1
答案:D
[解析] 本题考核的知识点是二维数组的定义以及数组元素初始化。选项A中,数组的长度使用了变量N,而在c中是不能用变量来定义数组的的长度的,故选项A错误。在c语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数,故选项B错误。选项C数组的第二维下标缺省,而在C中,数组的第二维下标不能缺省,故选项C错误。所以,D选项为所选。
30.
为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为
A. PAD图
•
B. N-S图
•
C. 结构图
•
D. 数据流图
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:B
31.
若有语句:char *line[5];,以下叙述中正确的是 。
A. 定义line是一个数组,每个数组元素是一个基类型为char的指针变量
•
B. 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
•
C. 定义line是一个指针数组,语句中的*号称为间址运算符
•
D. 定义line是一个指向字符型函数的指针
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:A
[解析] C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的“+”结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。
32.
下列叙述中正确的是
A. 在面向对象的程序设计中,各个对象之间具有密切的联系
•
B. 在面向对象的程序设计中,各个对象都是公用的
•
C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
•
D. 上述三种说法都不对
•
SSS_SIMPLE_SINA B C D
分值: 2
答案:C
[解析] 本题考查了面向对象的基本概念。
[解题要点] 在面向对象程序设计中所使用的对象,其数据和操作是作为平等伙伴出现的。因此,对象具有很强的自含性,此外,对象所固有的封装性,使得对象的内部实现与外界隔离,具有较强的独立性。
[考点链接] 对象的定义。
33.
在数据库设计中,将E-R图转换为关系模式的过程属于 。
A. 需求分析阶段
•
B. 逻辑设计阶段
•
C. 概念设计阶段
•
D. 物理设计阶段
•
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:B
[解析] 数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。其中,逻辑设计的主要工作是将E-R图转换为关系模式。
34.
有以下程序
main()
{ int x[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0; i<3 ; i++)
for(j=2; j>=i ; j--)
if(x[j+1]>x[j]) {k=x[j]; x[j]=x[j+1]; x[j+1]=k; }
for(i=0; i<3; i++)
for(j=4; j<7-i; j++)
if(x[j]>x[j+1])
{k=x[j]; x[j]=x[j+1]; x[j+1]=k; }
for(i=0; i<8; i++)
printf("%d",x[i]);
printf("n");
}
程序运行后的输出结果是______。
A. 75310246
•
B. 01234567
•
C. 76310462
•
D. 13570246
•
SSS_SIMPLE_SINA B C D
分值: 1
答案:A
[解析] 在程序中,第一个for循环内部实现的是对数组中前四个元素进行降序排序,第二个for循环内部实现的是对数组后四个元素进行升序排序,因此数组x中的最后结果应该是前四个降序,后四个升序。最终结果为{7,5,3,1,0,2,4,6}。
35.
有以下函数:
fun(char * a,char * b)
{ while((*a!='0')&&(*b!='0')&&(*a==*b))
{ a++;b++;}
return(* a-*b);
}
该函数的功能是______。
A. 计算a和b所指字符串的长度之差
•
B. 将b所指字符串连接到a所指字符串中
•
C. 将b所指字符串连接到a所指字符串后面
•
D. 比较a和b所指字符串的大小
•
SSS_SIMPLE_SIN
A B C D
分值: 2
答案:D
[解析] 本题的函数fun的最后一个语句是“return(*a-*b);”,也就是返回指针a所指单元的值与指针b所指单元的值的差。显然这不可能是计算a和b所指字符串的长度之差,因此选项A的说法是错误的。由于函数中并没有出现。a=*b的赋值操作,所以选项B的连接字符串的说法也是错误的。同理,由于没有*a现*a=*b的赋值操作,所以选项C的复制字符串的说法也是错误的。排除了三个选项后,就可以断定正确选项是D。
二、填空题
36.
下面程序的运行结果是 。
main()
{ unsigned a=0112,x;
x=a>>3;
printf("x=%o",x);
}
SSS_FILL
分值: 1
答案:x=11
[解析] 在对无符号数的右移是高位补0。
37.
若有定义:int a[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},则初始化后,a[2][2]得到的初值是______。
SSS_FILL
分值: 2
答案:8
[解析] 二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a(0][1]、a[0][2]、a[0][3]
38.
以下程序的输出结果是 。
main()
{ int x=0;
sub(&x,8,1);
printf(“%dn”,x);
}
sub(int *a,int n,int k)
{ if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
SSS_FILL
分值: 1
答案:7
[解析] 在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a,2, 4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时 x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k= 4+2=6,再回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。
39.
以下程序运行后的输出结果是______。
fun(int a)
{ int b=0; static int c=3;
b++;c++;
return(a+b+c);
}
main()
{ int i,a=5;
for(i=0;j<3;i++)printf("%d %d",i,fun(a));
printf("n");
}
SSS_FILL 分值: 2
答案:0 10 1 11 2 12
[解析] 本题考查静态局部变量。静态局部变量的作用域和普通局部变量一样,但它的生存期将延长到程序运行结束。主函数中,用一个for循环输出循环变量i和fun(a)的值。第一次调用时,b=0,c=3,所以返回5+1+4=10;第二次调用时,因为c是静态局部变量,它仍保存上次调用结束时的值4,所以返回值为5+1+5=11;以此类推,第三次调用返回值是12。所以,最终输出:0 10 1
11 2 12。
40.
以下程序从名为的文本文件中逐个读入字符并显示在屏幕上。请填空:
#include<stdio.h>
main()
{FILE*fp;char ch;
fp=fopen(______);
ch=fgetc(fp);
whlie(!feof(fp)){putchar(ch);ch=fgetc(fp);)
putchar('n');felose(fp);
}
SSS_FILL
分值: 4
答案:“”,“r”
[解析] 本题首先应该打开文件再读取字符,空白处应为以只读方式打开文件。
41.
软件工程研究的内容主要包括:______技术和软件工程管理。
SSS_FILL
分值: 2
答案:软件开发
[解析] 软件工程包括软件开发技术和软件工程管理。其中软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工具环境,其主体内容是软件开发方法学:软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。
42.
若从键盘输入58,则以下程序的输出结果是 。
main()
{ int a;
scanf(“%d”,&A) ;
if(a>50)printf(“%d”,A) ;
if(a>40)printf(“%d”,A) ;
if(a>30)printf(“%d”,A) ;
}
SSS_FILL
分值: 1
答案:585858
[解析] 在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。
43.
下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
SSS_FILL
分值: 2
答案:6
[解析] 分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
44.
以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
struct st
{ char name[20];double score;};
main()
{ struct st ex;
pfintf("exsize:%dn",sizeof(______));}
SSS_FILL
分值: 2
答案:struct st或ex
[解析] 考查了结构体变量的存储分配结构。
[解题要点] 结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。
[考点链接] 共用体变量所占存储单元字节数的计算。
45.
下面程序的运行结果是______
#indude <stdio.h>
main()
{int Y,a;
y=2, a=1;
while(y--!=-1)
{do{a*=y; a++;} while(y--);}
printf("%d, %d", a, y);}
SSS_FILL 分值: 2
答案:1,-2
[解析] 考查嵌套的循环结构。题中外层while循环的循环条件是y--!--1,即y>=0;内层do…while循环的循环条件是y--,即y-->0,y>=1。
46.
关系表达式x<y<z,用C语言的表达式为 。
SSS_FILL
分值: 1
答案:(x<y)&&(y<z)
[解析] x<y<z的意思是y大于x并且y小于z。在C语言中,表达“并且”用逻辑与运算符“&&”。
47.
执行以下程序时输入1234567<CR>,则输出结果是______。
#include <stdio.h>
main()
{ int a=1,b;
scanf("%2d%2d",&a,&b); prinff("%d %dhn",a,b);
}
SSS_FILL
分值: 0
答案:12 34
[解析]本题考查的知识点是:Scanf()函数。 scanf()是标准输入函数;其第1个参数为格式控制字符串。其中“%2d”表示读入一个2个字符宽的整数。所以本题代码将连续读入2个2字符宽的整数分别存到变量a和b中。根据题目要求,输入数据1234567<CR>,则scanf()读入的两个整数分别为 12和34,故输出结果为12 34。
48.
以下程序运行后的输出结果是______。
struct NODE
{ int k;
struct NODE*link;
};
main()
{ struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("n");
}
SSS_FILL 分值: 2
答案:13431
[解析[ m是结构数组,长度为5。结构指针p、q分别指向m[0]、m[4],i初值为循环当p和q不相等时,执行“p->k=++i;q->k=i++;”,也就是m[0].k值为1,m[4].k值为1,i值变为2,则“p++,q--”,p、q分别指向m[1]、m[3],while循环当p和q不相等时,执行“p->k=++i;q->k=i++;”,也就是m[1].k值为3,m[3].k值为3,i值变为4,“p++,q--”,p、q都指向m[2],while循环当p和q相等时,循环停止。while循环体后面的“q->k=i;”,也就是m[2].k值为4。因此“for(i=0;i<5;i++)printf("%d",m[i].k);”输出结果是:13431。
49.
语句printf("%fn",13.0*(1/5));的输出结果为 。
SSS_FILL 分值: 1
答案:0.000000
[解析] 考查对于基本运算符的掌握情况。
[解题要点] /表示整除,1/5为0,0乘以任何数都得零,但是与浮点型相乘,要转化为浮点型,所以结果为0.000000。
[考点链接] 在一个运算符的两边如果一个是字符型,一个是整型,则把字符型转换为整型之后再进行运算。
50.
以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空:
#include<stdio.h>
#define N 3
typedef struct
{int mum,char name[10];char sex;}SS;
int fun(SS person[])
{int i,n=0;
for(i=0;i<N;i++)
if(______=='M')n++;
return n;
}
main()
{SS W[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};int n;
n=fun(W);printf("n=%dn",n);
}
SSS_FILL
分值: 2
答案:person[i].scx
[解析] 本题主要考查引用结构体变量中数据的方法。题目要求统计person所指结构体数组中所有性别(sex)为M的记录的个数,可见if语句中的条件是判断该记录中的性别是否是M。
1
版权声明:本文标题:二级C语言-4-2_真题(含答案与解析)-交互 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704390813h457450.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论