2017年计算机二级c语言题库及答案(1)
-
有以下程序: main() {int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d,%d\n",x,y,z); 程序运行后的输出结果是( )。
- A.2,3,3
- B.2,3,2
- C.2,3,1
- D.2,2,1
-
有以下程序: main( ) { char * p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"}; printf("%d\n",strlen(p[4])); } 执行后的输出结果是 ______。
- A.2
- B.3
- C.4
- D.5
-
以下选项中,当x为大于1的奇数时,值为0的表达式是
- A.x%2==1
- B.x/2
- C.x%2!=0
- D.x%2==0
-
若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
- A.switch(x)
- B.switch((int)x); {case 1.0:printf("*\n"); {case 1:printf("*\n"); case 2.0:printf("**\n");} case 2:printf("**\n");}
- C.switch(a+B)
- D.switch(a+B){case 1;printf("*\n"); {case 1:printf("*\n"); case 2+1:printf("**\n");} case c:printf("**\n");)
-
以下程序的输出结果是______。 #include<stdio.h> main() { int a=200; #define a 100 printf("%d",a); #undef a printf("%d",a); }
- A.200 100
- B.100 100
- C.100 200
- D.200 200
-
对于下述说明,不能使变量p->b的值增1的表达式是______。 struct exm { int a; int b; float c }*p;
- A.++p->b
- B.++(p++)->b
- C.p->b++
- D.(++p)->b++
-
若有以下定义;char a;int b; float c;double d;则表达式“a*b+d-c”值的类型为( )
- A.float
- B.int
- C.char
- D.double
-
设有以下说明语句 struct num { int a; float b; }numl;则下面的叙述不正确的是______。
- A.struct是结构体类型的关键字
- B.struct num是用户定义的结构体类型
- C.numl是用户定义的结构体类型名
- D.a和b都是结构体成员名
-
-
下列不属于软件调试技术的是______。
- A.强行排错法
- B.集成测试法
- C.回溯法
- D.原因排除法
-
有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为
- A.并
- B.自然连接
- C.笛卡尔积
- D.交
-
若执行下述程序时,若从键盘输入6和8,结果为( )。 main() {int a,b,s; scanf("%d%dt",&a,&B); s=a: if(s=B)s*=s; printf("%d",s); }
- A.36
- B.64
- C.48
- D.以上都不对
-
若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a 数组的第 10 个元素是
- A. a[0][4]
- B.a[1][3]
- C.a[0][3]
- D.a[1][4]
-
以下说法不正确的是
- A.C程序中必须有一个main()函数,C程序是从main()函数的第1条语句开始执行的。
- B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。
- C.C程序中的main()函数必须放在程序的开始位置。
- D.C程序中的main()函数位置可以任意指定。
-
请阅读以下程序: #include<stdio.h> void fun(int s[]) { static int j=0; do s[j]+=s[j+1]; while(++j<2);} main() { int k,a[10]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)printf("%d",a[k]);} 上面程序的输出是
- A.34756
- B.23445
- C.35745
- D.12345
-
有以下程序段 char ch;int k; 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
-
若已定义:“int a[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
- A.p+1
- B.a+1
- C.a++
- D.++p
-
有以下程序: void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i+=2) for(j=i+2;j<n;j+=2) if(a[i]<a[j]){ t=a[i];a[i]=a[j];a[j]=t;} } main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(aa,10); for(i=0;i<10;i++) printf("%d",aa[i]); printf("\n"); } 其输出结果是
- A.1,2,3,4,5,6,7,8,9,10,
- B.10,9,8,7,6,5,4,3,2,1,
- C.9,2,7,4,5,6,3,8,1,10,
- D.1,10,3,8,5,6,7,4,9,2,
-
当调用函数时,实参是一个数组名,则向函数传送的是______。
- A.数组的长度
- B.数组的首地址
- C.数组每一个元素的地址
- D.数组每个元素中的值
-
以下叙述中正确的是
- A.语句int a[8]={0};是合法的
- B.语句inta[]={0};是不合法的,遗漏了数组的大小
- C.语句char a[2]={ "A","BII};是合法的,定义了一个包含两个字符的数组
- D.语句char a[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符
-
关系R和关系S的并运算是______。
- A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组
- B.由属于R而不属于S的所有元组组成的集合
- C.由既属于R又属于S的元组组成的集合
- D.由R和S的元组连接组成的集合
-
若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是( )。
- A.*p=&a;scanf("%1f”,p);
- B.*p=&a;scanf("%f",p);
- C.p=&a;scanf("%",*p);
- D.p=&a;scanf("%1f",p);
-
有以下程序
main(int argc,char *argv[])
{
int n=0,i;
for(i=1;i<argc;i++)
n=n*10+*argv[i] '0';
printf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。若运行时输入以下命令行 tt 12 345 678
程序运行后的输出结果是
- A.12
- B.12345
- C.12345678
- D.136
-
若有以下定义:float x;int a,b,c=2;,则正确的switch语句是( )
- A.switch(x) { case 1.0:printf("*\n"); case 2.0:printf("**\n"); }
- B.switch(int(x)) { case 1:printf("*\n"); case 2:printf("**\n"); }
- C.switch(a+b) { case 1:printf("*\n"); case 1+2:printf("**\n"); }
- D.switch(a+B){ case 1:printf("*\n"); case c:printf("**\n"); }
-
下列程序段的输出结果是( )。 char a=9,b=020; prihtf("%o\n",~a&b<<1);
- A.100000
- B.8
- C.40
- D.77
-
有以下程序: int *f(int *x,int*y) {if(*x<*y)return x; else return y; } main() { int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=f(p,q); printf("%d,%d,%d\n",*p,*q,*r); } 程序运行后输出结果是_____。
- A.7,8,8
- B.7,8,7
- C.8,7,7
- D.8,7,8
-
在深度为5的满二叉树中,叶子结点的个数为( )。
- A.31
- B.32
- C.16
- D.15
-
在以下一组运算中,优先级最高的运算符是 ( )
- A.<=
- B.=
- C.%
- D.& &
-
以下程序的输出结果是______。
- A.54321
- B.12345
- C.1 2 3 4 5
- D.5 4 3 2 1 0 main() { int w=5;fun(w);printf("\n");} fun (int k) { if(k>0) fun(k-1); printf("%d"",k);}
-
下列叙述中正确的是( )。
- A.一个逻辑数据结构只能有一种存储结构
- B.逻辑结构属于线性结构,存储结构属于非线性结构
- C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率
- D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率
-
相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
- A.可重用性差
- B.安全性差
- C.非持久性
- D.冗余性
-
有以下程序
#include<stdio.h>
main()
{
int a=5,b=l;
t=(a<<2)|b;
printf("%d\n",t);
}
程序运行后的输出结果是______。
- A.21
- B.11
- C.6
- D.1
-
有以下函数 char *fun(char*p) { return p; } 该函数的返回值是_____。
- A.无确切的值
- B.形参p中存放的地址值
- C.一个临时存储单元的地址
- D.形参p自身的地址值
-
用树形结构来表示实体之间联系的模型称为
- A.关系模型
- B.层次模型
- C.网状模型
- D.数据模型
-
在浏览WWW时,如果连接到一个安全的站点,应当以( )开头来书写统一资源定位器。
- A.shttp://
- B.http:s//
- C.http://
- D.https//
-
有以下程序: Void f(int a[],iht i,int j) { int t; if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t; f(a,i+1,i-1); } } main() { int i,aa[5]={1,2,3,4,5}; f(aa,0,4); for(i=0;i<5;i++) printf("%d" ,aa[i]);printf("\n"); } 执行后输出结果是
- A.5,4,3,2,1,
- B.5,2,3,4,1,
- C.1,2,3,4,5,
- D.1,5,4,3,2,
-
下列选项中非法的字符常量是( )。
- A.'\t'
- B.'\039'
- C.','
- D.'\n'
-
现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为
- A.int
- B.double
- C.float
- D.char
-
在一个 C 语言源程序文件中所定义的全局变量,其作用域为:
- A. 所在文件的全部范围
- B. 所在程序的全部范围
- C. 所在函数的全部范围
- D. 由具体定义位置和 extern 说明来决定范围
-
下列叙述中错误的是( )。
- A.线性表是由n个元素组成的一个有限序列
- B.线性表是一种线性结构
- C.线性表的所有结点有且仅有一个前件和后件
- D.线性表可以是空表
-
有以下程序#include<stdio. h>main(){ char c1='1',c2='2'; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);} 当运行时输入:a<回车> 后,以下叙述正确的是
- A.变量c1被赋予字符a,c2被赋予回车符
- B.程序将等待用户输入第2个字符
- C.变量c1被赋予字符a,c2中仍是原有字符2
- D.变量c1被赋予字符a,c2中将无确定值
-
栈通常采用的两种存储结构是()
- A.顺序存储结构和链式存储结构
- B.散列方式和索引方式
- C.链表存储结构和数组
- D.线性存储结构和非线性存储结构