二级C语言程序设计理论摸底考试试题
一、选择题((11)~(20)每题1分,其余每题2分,共70分)
(1)算法的空间复杂度是指
A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)算法执行过程中所需要的存储空间
(2)栈和队列的共同特点是
A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同点
(3)设有下列二叉树:
对此二叉树前序遍历的结果为
A)ZBTYCPXA B)ATBZXCYP C)ZBTACYXP D)ATBZXCPY
c十十程序设计语言
(4)结构化程序设计重要强调的是
A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性
(5)下列叙述中对的的是
A)一个算法的空间复杂度大,则其时间复杂度也必然大B)一个算法的空间复杂度大,则其时间复杂度必然小C)一个算法的时间复杂度大,则其空间复杂度必然小D)上述三种说法都不对
(6)下列不属于软件工程的3个要素的是
A)工具B)过程C)方法D)环境
(7)软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A)硬件资源B)通信资源C)支持软件D)辅助资源
(8)下述关于数据库系统的叙述中对的的是
A)数据库系统减少了数据冗余B)数据库系统避免了一切冗余C)数据库系统中数据的一致性是指数据类型一致D)数据系统比文献系统能管理更多的数据
(9)下列数据模型中,具有坚实理论基础的是
A)层次模型B)网状模型C)关系模型D)以上3个都是
(10)相对于数据库系统,文献系统的重要缺陷有数据关联差、数据不一致和
A)可重用性差B)安全性差C)非持久性D)冗余性
(11)算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A)合法性B)可行性C)拟定性D)有穷性
(12)下列关于标记符的说法中错误的是
A)合法的标记符是由字母、数字和下划线组成B)C语言的标记符中,大写字母和小写字母被认为是两个不同的字符C)C语言的标记符可以分为三类,即关键字、预定义标记符和用户标记符D)用户标记符与关键字不同时,程序在执行时将给出犯错信息(13)判断char型变量c1是否为大写字母的对的表达式是
A)‘A’<=c1<=’z’B)(c1>=A)&&(c1<=Z) C)(‘A’>=c1)||(‘Z’<=c1) D)(c1<=’A’)&&(c1<=’Z’
(14)有以下程序
int add(int a,int b){return (a+b);}
Main(){ int k,(*f)( ),a=5,b=10;f=add;…}
则以下函数调用语句错误的是
A)k=(*f)(a,b);B)k=add(a,b) C)k=*f(a,b); D)k=f(a,b);
(15)若变量已对的定义并赋值,以下合法的C语言赋值语句是
A)x=y= =5;B)x=n%2.5;C)x+n=i;D)x=5=4+1
(16)下列程序的输出结果是
Main(){ double d=3.2;int x,y;x=1.2 ;y=(x+3.8)/5.0 ;printf(" %d\n",d*y) ;}
A)3 B)3.2 C)0 D)3.07
(17)设有以下程序段
int x=0,s=0 ;while( !x !=0)s+=++x ;printf("%d",s) ;则
A)运营程序段后输出0 B)运营程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次
(18)以下程序执行后x的值是
main(){ int x,y=252,i=386,*m=&y,*z=&i;x=(z= =y);printf(“%d”,x) ;}
A)252 B)1 C)0 D)运营时犯错,x无定值
(19)有如下程序
main(){ float x=2.0,y ;if(x<0.0)y=0.0 ;else if(x>10.0)y=1.0/x ;else y=1.0 ;printf("%f\n ",y) ;}该程序的输出结果是
A)0.000000 B)0.250000 C)0.500000 D)1.000000
(20)以下程序的输出结果是
#include<stdio.h>
main(){ int a=15,b=21,m=0 ;switch(a%3){ case 0:m++;break;case 1:m++;switch(b%2) { default:m++;ca
se 0:m++;break;}}printf("%d\n",m);}
A)1 B)2 C)3 D)4
(21)如下程序的输出结果是
#include<stdio.h>
main( ){ char ch[2][5]={“6937”,”8254”},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++)for(j=0;p[i][j]> ‘\0’;j+=2)s=10*s+p[i][j]-‘\0’;printf(“%d\n”,s);}
A)69825 B)63825 C)6385 D)693825
(22)下面程序的运营结果是
#include<stdio.h>
main( ){int a=28,b;char s[10],*p;p=s;do{b=a%16;if(b<10)*p=b+48;else *p=b+55;p++; a=a/5;}while(a>0);*p=’\0’;puts(s);}
A)10 B)C2 C)C51 D)\0
(23)下列程序执行后的输出结果是
void func1(int i);
void func2(int i);
char st[ ]=”hello,friend!”;
void func1(int i)
{ printf(“%c”,st[i]);if(i<3){i+=2;func2(i);}}
void func2(int i)
{ printf(“%c”,st[i]);if(i<3){i+=2;func1(i);}}
main( ){ int i=0;func1(i);printf(“\n”);}
A)hello B)hel C)hle D)hlm
(24)以下程序的输出结果是
#include<stdio.h>
void prt(int *x,int *y,int *z){printf(“%d,%d,%d\n”,++*x,++*y,*(z++));}
main( ){ int a=10,b=40,c=20 ;prt(&a,&b,&c) ;prt(&a,&b,&c) ;}
A)11,42,31 B)11,41,20 C)11,21,40 D)11,41,21
12.22,41 12,42,20 11,21,21 12,42,22
(25)下列二维数组初始化语句中,对的且与语句float a[ ][3]={0,3,8,0,9};等价的是
A)float a[2][ ]={{0,3,8},{0,9}};B)float a[ ][3]={0,3,8,0,9,0};C)float a[ ][3]={{0,3}, {8,0},{9,0}};D)float a[2][ ]={{0,3,8},{0,9,0}};
(26)以下程序输出的结果是
#include<stdio.h>
#include<string.h>
main( ){ char w[ ][10]={“ABCD”,”EFGH”,”IJKL”,”MNOP”},k;
for(k=1;k<3;k++)printf(“%s\n”,&w[k][k]);}
A)ABCD B)ABC C)EFG D)FGH
FGH EFG JK KL
KL IJ 0
M
(27)下面能对的进行字符串赋值操作的是
A)char s[5]={“ABCDE”};B)char s[5]={‘A’,’b’,’C’,’D’,’E’};
C)char *s;s=”ABCDE”;D)char *s;scanf(“%s”,s);
(28)有以下程序
main( ){ int i,s=0,t[ ]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}
程序执行后的输出结果是
A)45 B)20 C)25 D)36
(29)以下程序中调用scanf(函数给变量a输入数值的方法是错误的,其错误因素是
main( ){ int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);}
A)*p表达的是指针变量p的地址B)*p表达的是变量a的值,而不是变量a的地址C)*p表达的是指针变量p的地址D)*p只能用来说明p是一个指针变量
(30)阅读下列程序,则在执行后,程序的运营结果为
#include<stdio.h>
#include<string.h>
main( ){char a[30]=”nice to meet you!”;strcpy(a+strlen(a)/2,”you”);printf(“%s\n”,a);}
A)nice to meet you you B)nice to C)meet you you D)nice to you
(31)若有下面的程序片段:
int a[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;
则对数组元素的错误引用是
A)pp[0][1] B)a[10] C)p[3][1] D)*(*(p+2)+2)
(32)设有下面的程序段:
char s[ ]=”china”;char *p;p=s;
则下列叙述对的的是
A)s和p完全相同B)数组s中的内容和指针变量p中的内容相同C)s数组长度和p所指的字符串长度相等D)*p与s[0]相等
(33)若有函数max(a,b),为了让函数指针变量p指向函数max,当调用该函数时,对的的赋值方法是
A)(*p)max(a,b) B)*pmax(a,b) C)p=max(a,b) D)*p=max(a,b)
(34)以下程序的运营结果是
#define MAX(A,B) (A)>(B)?(A):(B)
#define PRINT(Y) printf(“Y=%d\t”,Y)
main( ){ int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}
A)Y=3 B)存在语法错误C)Y=7 D)Y=0
(35)以下程序的功能是进行位运算
main( ){ unsigned char a,b ;a=7^3 ;b=~4&3 ;printf(“%d%d\n”,a,b);}
程序运营后的输出结果是
A)4 3 B)7 3 C)7 0 D)4 0
(36)请选出以下程序的输出结果
#include<stdio.h>
void sub(int *,int);
main( ){ int a[ ]={1,2,3,4},i;int x=0;for(i=0;i<4;i++){sub(a,x);printf(“%d”,x);}printf (“\n”);} void sub(int *s,int y)
{ static int t=3;y=s[t];t- -;}
A)1 2 3 4 B)4 3 2 1 C)0 0 0 0 D)4 4 4 4
(37)以下程序的输出结果是
#include<stdio.h>
struct st{int x;int *y;}*p;int dt[4]={10,20,30,40};struct st aa[4]={50,&st[0],60,&dt[0], 60,&dt[0],60,&st[0],};
main( ){ p=aa;printf(“%d\n”,++(p->x));}
A)10 B)11 C)51 D)60
(38)以下scanf函数调用语句中对结构变量成员的引用不对的的是
struct pupil{ char name[20];int age;int sex;}pup[5],*p;p=pup;
A)scanf(“%s”,pup[0].name); B)scanf(“%d”,&pup[0].age); C)scanf(“%dT”,&(p-> sex));
D)scanf(“%d”,p->age);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。