1、1C 语言概述选择题(1)以下叙述中错误的是 A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C)后缀为.obj的文件,经连接程序生成后缀为 .exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行(2)C语言规定,在一个源程序中 ,main函数的位置 A)必须在最开始B)必须在系统调用的库函数的后面 C)可以任意D)必须在最后(3)以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出
2、 D)用C 程序实现的算法可以既没有输入也没有输出 (4)以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e (5)若有语句:char *line5;,以下叙述中正确的是 A) 定义line 是一个数组,每个数组元素是一个基类型为char的指针变量 B) 定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C) 定义line 是一个指针数组,语句中的*号称为间址运算符 D) 定义line是一个指向字符型函数的指针 (6)以下4个选项中,不能看作一条语句的是 A); B)a=5,b=2.5,c=3.6; C)if(a int a33=1,
3、2,3,4,5,6,7,8,9,*p; main() p=(int*)malloc(sizeof(int); f(p,a); printf(“%dn“,*p); free(p); f(int *s, int p3) *s=p11; A)1B)4C)7D)5(2)下面的程序段运行后,输出结果是 int i,j,x=0; static int a88; for(i=0;i #include int fun(int *s, int t, int *k) int i; *k=0; 2for(i=0;i 则程序输出的结果是 #include “stdio.h“ main(argc,argv) int a
4、rgc;char *argv; int i; printf(“%dn“,argc); A)3 B)4 C)2 D)以上答案都不正确(3)以下程序的输出结果是 int f() static int i=0; int s=1; s+=i; i+; return s; main() int i,a=0; for(i=0;i void swap(int *a, int *b) int *t; t=a; a=b; b=t; main() int i=3,j=5,*p= swap(p,q); printf(“%d %dn,*p,*q) ; (2)以下程序的输出结果是 【13】 。 float fun(in
5、t x,int y) return(x+y); main() int a=2,b=5,c=8; printf(“%3.0fn“,fun(int)fun(a+c,b),a-c); (3)以下程序的输出结果是 【11】 。 fun (int x,int y,int z) z =x*x+y*y; main () int a=31; fun (6,3,a) printf (“%d“, a) 基本语句选择题(1)有以下程序段 3int j;float y;char name50; scanf(“%2d%f%s“, 当执行上述程序段,从键盘上输入55566 7777abc后,y的值为 A)55566.0B
6、)566.0 C)7777.0D)566777.0(2)设变量均已正确定义,若要通过scanf(“%d%c%d%c“,语句为变量a1和a2赋数值10和20,为变量c1和c2 赋字符X 和Y。以下所示的输入形式中正确的是(注:代表空格字符) A) 10X20YB) 10X20Y C) 10X20Y D) 10X20Y(3)若有说明:int *p,m=5,n;,以下正确的程序段是 A)p=scanf(“%d“,B)p=scanf(“%d“,*p) C)scanf(“%d“,*p=n;D)p=*p=m;(4)以下不正确的定义语句是 A)double x5=2.0,4.0,6.0,8.0,10.0;
7、B)int y5=0,1,3,5,7,9; C)char c1=1,2,3,4,5; D)char c2=x10, xa, x8;填空题(1)执行以下程序后的输出结果是 【6】 。 main() int a=10; a=(3*5,a+4);printf(“a=%dn“,a); (2)阅读下面程序段,执行后输出的结果是 【6】 。 #include “stdio.h“ main() char fun(char,int); char a=A; int b=13; a=fun(a,b); putchar(a); char fun(char a,int b) char k; k=a+b; return
8、 k;结构体和共同体选择题(1)在16位IBM-PC 机上使用C语言,若有如下定义 struct data int i; char ch; double f; b; 则结构变量b占用内存的字节数是 A)1B)2C)7D)11(2)有以下程序 #include #include typedef struct char name9; char sex; float score2; STU; void f(STU a) STU b=“Zhao“,m,85.0,90.0; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;inext= q-next=
9、p-next;D)(*p).next=q; (*q).next= (4)设有以下说明语句 typedef struct int n; char ch8; PER; 则下面叙述中正确的是 A)PER 是结构体变量名B)PER是结构体类型名 C)typedef struct 是结构体类型D)struct 是结构体类型名 (5)若有以下说明和定义 union dt int a; char b; double c;data; 以下叙述中错误的是 A)data的每个成员起始地址都相同 B)变量data所占内存字节数与成员c 所占字节数相等 C)程序段:data.a=5;printf(“%fn“,data
10、.c);输出结果为5.000000D)data可以作为函数的实参 填空题(1)阅读下列程序,则程序的输出结果为 【15】 。 #include “stdio.h“ struct ty int data; char c; ; main() struct ty a=30,x; fun(a); printf(“%d%c“,a.data,a.c); fun(struct ty b) b.data=20; b.c=y; (2)以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph-next=NULL)
11、,请填空。 #include struct list int data; struct list *next; struct list*creatlist() struct list *p,*q,*ph;int a;ph=(struct list *)malloc (sizeof(struct list); p=q=ph;printf(“Input an integer number; entre-1 to end:n“);scanf(“%d“, while(a!=-1) p=(struct list*)malloc(sizeof(struct list); 【14】 =a;q-next=p;
12、 【15】 =p;scanf(“%d“, p-next=0;return(ph); main() struct list * head; head=creatlist();(3)有如下图所示的双链表结构,请根据图示完成结构体的定义: lhead data rchild struct aa int data; 5【14】 node;软件工程基础选择题(1)为了提高测试的效率,应该 A)随机选取测试数据 B)取一切可能的输入数据作为测试数据 C)在完成编码以后制定软件的测试计划 D)集中对付那些错误群集的程序(2)下列叙述中,不属于测试的特征的是 A)测试的挑剔性B)完全测试的不可能性 C)测试的
13、可靠性D)测试的经济性(3)程序流程图中带有箭头的线段表示的是A)图元关系B)数据流C)控制流 D)调用关系数据结构与算法选择题(1)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 A)acbed B)decabC)deabc D)cedba(2)算法的有穷性是指 A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的D)算法只能被有限的用户使用 (3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D) 任意顺序 (4)数据结构中,与
14、所使用的计算机无关的是数据的 A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构(5)树是结点的集合,它的根结点数目是 A)有且只有 1B)1或多于1 C)0或1 D)至少2填空题(1)设一棵完全二叉树共有700个结点,则在该二叉树中有 【1】 个叶子结点。(2)数据结构分为逻辑结构与存储结构,线性链表属于 【3】 。数据库设计基础选择题(1)数据处理的最小单位是 A)数据 B)数据元素 C)数据项 D)数据结构数组与字符串选择题(1)有下面程序段 #include “stdio.h“ #include “string.h“ main() char a320=“china“,“isa
15、“,“bigcountry!“; char k100=0,*p=k; int i; for(i=0;i int fun(char s) int n=0; while(*s=0) n=10*n+*s-0;s+; return(n); main() char s10=6,1,*,4,*,9,*,0,*; printf(“%dn“,fun(s); 程序的运行结果是 A)9B)61490C)61D)5(4)有以下程序 # include main() char p20=a,b, c, d, q=“abc“, r=“abcde“; strcat(p, r); strcpy(p+strlen(q), q)
16、; printf(“%dn“,strlen(p); 程序运行后的输出结果是 A)9B)6C)11D)7(5)有如下程序 main() char ch25=“6937“,“8254“,*p2; int i,j,s=0; for(i=0;i0;j+=2)s=10*s+pij-0; printf(“%dn“,s); 该程序的输出结果是 A)69825B)63825C)6385D)693825 (6)有以下程序 #include main() char p=a, b, c,q10= a, b, c; printf(“%d%dn“,strlen(p),strlen(q); 以下叙述中正确的是 A) 在给
17、p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D) 由于p和q数组中都没有字符串结束符,故长度都不能确定 (7)有定义语句:char s10;,若要从终端给s输入5个字符,错误的输入语句是 A)gets(B)scanf(“%s“,s+1); C)gets(s);D)scanf(“%s“,s1); (8)以下能正确定义一维数组的选项是 A)int a5=0,1,2,3,4,5; B)char a=0,1,2,3,4,5,0;
18、C)char a=A,B,C; D)int a5=“0123“; 7(9)有以下程序 #include #include void fun(char *s,int n) char *t; int i,j; for(i=0;istrlen(sj) t=si;si=sj;sj=t; main() char *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5); printf(“%s,%sn“,ss0,ss4); 程序的运行结果是 A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc (10)阅读下列程序,则执行后的结
19、果为 #include “stdio.h“ main() int c4=1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56; printf(“%x,%xn“,c22,*(*(c+1)+1); A)3e,6 B)62,5 C)56,5D)3E,6 (11)若有定义:int a23;,以下选项中对a数组元素正确引用的是 A)a2!1B)a23C)a03D)a12!1 (12)有定义语句:char s10;,若要从终端给s输入5个字符,错误的输入语句是 A)gets( B)scanf(“%s“,s+1); C)gets(s); D)scanf(“%s“,s1);(13)
20、若已定义 int a=0,1,2,3,4,5,6,7,8,9, *p=a,i; 其中 09i则对a数组元素不正确的引用是 A)ap-aB)*( i=n1; j=n2; while(i #include #include int fun (char *str) int i,j=0; for(i=0;stri!= 0;i+)if(stri!= )strj+=stri; strj= 0; 8main() char str81; int n; printf(“Input a string : “); gets(str); puts(str); fun(str); printf(“%sn“,str);
21、A)asdafaaz67B)asd af aa z67 C)asdD)z67(16)以下数组定义中错误的是 A)int x3=0; B)int x23=l,2,3,4,5,6; C)int x3=l,2,3,4,5,6; D)int x23=l,2,3,4,5,6;填空题(1)以下程序的输出结果是 【11】 。 #include main() int i; for(i=a;i void f(int x,int n) int p0,p1,i,j,t,m; i=j=x0; p0=p1=0; for(m=0;mi) i=xm;p0=m; else if(xm main() FILE *fp; int
22、 a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(“d2.dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i main() FILE *fp; char ch; fp=fopen( 【15】 ); ch=fgetc(fp); while(!feof(fp) putchar(ch); ch=fgetc(fp); putchar(n);fc
23、lose(fp);选择结构选择题(1)若程序执行时的输入数据是“2473“, 则下述程序的输出结果是 #include void main() int cs; while(cs=getchar()!= n)switch(cs-2) case 0 :case 1: putchar(cs+4); case 2: putchar(cs+4); break; case 3: putchar(cs+3); default: putchar(cs+2); A)668977B)668966C)6677877D)6688766(2)有以下程序 main() int k=5,n=0; do switch(k)
24、case 1: case 3:n+=1;k-;break; default:n=0;k-; case 2: case 4:n+=2;k-;break; printf(“%d“,n); while(k0 switch(x) case 1: switch(y) case 0:a+; break; case 1:b+; break; 10 case 2:a+; b+; break; case 3:a+; b+; printf(“a=%d,b=%dn“,a,b); 程序的运行结果是 A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 填空题(1)阅读下面语句,则程序的执行结果是 【7】 。 #include “stdio.h“ main() int a=-1,b=1,k; if(+a main() int i,j,m=55; for(i=1;i4) printf(“%dn“,i); break;