一、选择题 下列各题 A、B、C、D 四个选项中,只有一个选项是正确的。
1. 设有以下说明语句,则变量 a______。 char a='\72';
A. 包含 1 个字符 B. 包含 2 个字符
C. 包含 3 个字符
D. 该说明不合法
2. 下列程序的运行结果为______。
main ( )
int a, *p;
p=&a;
a=100;
printf("a=%d *p=%d *&a=%d &*p=%u ",a,*p,*&a,&*p);
a++;
printf("a++=%d ",a);
(*p) ++;
printf("(*p)++=%d ",*p);
*p++;
printf ("*p++=%d\n", *p);
A. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=102 *p++=-24 B. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=102 *p++=-102 C. a=100 *p=100 *&a=65498 &*p=65498 a++=101 (*p)++=102 *p++=-24 D. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=101 *p++=-24 3. 下列叙述中,不正确的是______。
A. 字符型数组中可以存放字符串 B. 可以对字符型数组进行整体输入、输出 C. 可以对整型数组进行整体输入、输出
D. 不能在赋值语句中通过赋值运算符:对字符型数组进行整体赋值 4. 下列程序运行后,输出结果是______。
#include <stdio. h> #include <string. h> fun (char *w ,int n)
char t,*s1,*s2; s1=w; s2=w+n-1; while (s1<s2)
t=*s1++; *s1=*s2--; *s2=t;
main () char *p; p="1234567"; fun (p, strlen (p)); puts (p);
A. 1234567
B. 7654321
C. 1711717
D. 7177171
5. 以下对枚举类型名的定义中正确的是______。
A. enum a=one,two,three; B. enum aone=9,two=-1,three; C. enum a=one","two","three"; D. enum a"one","two","three"; 6. 有一个深度为 4 的满二叉树,下面关于序号为 7 的结点的叙述中,正确的是______。
A. 该结点双亲的序号为 4
B. 该结点处于二叉树的第 4 层
C. 该结点没有右子树
D. 该结点左子树根结点的序号为 14
7. 若有以下定义和语句,则输出结果是______。
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
A. 4
B. 5
C. 9
D. 10
8. 下面程序运行的结果是______。
main()
int x,y,z; x=0; y=z=-1; x+=-z---y; printf("x=%d\n",x);
A. x=4
B. x=0
C. x=2
D. x=3
9. 在 C 语言中,如果下面的变量都是血类型,则输出的结果是______。 sum=pad=5;pAd=sum++,pad++,++pAd;
printf("%d\n",pad);
A. 7
B. 6
C. 5
D. 4
10. 设有二维数组 A[8][9],其每个元素占 2 个字节,从首地址 400 开始,按行优先顺序存 放,则元素 A[8,5]的存储地址为______。
A. 570
B. 506
C. 410
D. 482
11. 软件危机是大型软件开发中出现的现象,下列选项中的______是其主要表现。 ①软件生产的复杂性。
②软件生产进度无法控制。
③软件生产高成本、无法控制。
④软件需求定义不准确。
A. 全部 B. ②和③
C. ①、②和④
D. ②和④
12. 在下列叙述中,不正确的一条是______。
A. 在 C 语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 B. 在 C 语言中,外部变量的隐含类别是自动存储类别 C. 在 C 语言中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容 D. 在 C 语言中,函数形参可以说明为 register 变量 13. 下列程序的输出结果是______。
main() int i,k,a[10],p[3]; k=5; for (i=0;i<10;i++) a[i]=i for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k);
A. 20
B. 21
C. 22
D. 23
14. 若变量已正确定义并赋值,下面符合 C 语言语法的表达式是______。
A. a:=b+1;
B. a=b=C+2;
C. int18.5%3;
D. a=a+7=c+b;
15. 下列程序的输出结果是______。
#include
main() char b[30],*chp;
strcpy(&b[0],"CH"); strcpy(6b[1],"DEF");
strcpy(6b[2],"ABC"); printf("%s\n",b);
A. CHDEF
B. DEFABC
C. CDABC
D. CHABC
16. 下列程序的输出结果是______。
int i=010,J=10;
printf("%d,%d\n",++i,j--);
A. 11,10
B. 9,10
C. 010,9
D. 10,9
17. 下面程序的输出结果是______。
main()
unsigned a=32768;
printf("a=%d\n",a);
A. a=32768
B. a=32767
C. a=-32767
D. a=-1
18. 下列程序的输出结果是______。
main() float x=3.6;
int i; i=(int)x; printf("x=%f,i=%d",x,i);
A. x=3.600000,i=4
B. x=3 i=3
C. x=3.600000,i=3
D. x=3 i=3.600000
19. 下列程序运行后的输出结果是______。
main() int a=2,b=-1,c=2;
if(a<b) if(b<0) c=0; else c++; printf ("%d\n",c);
A. 0
B. 1
C. 2
D. 3
20. 下列程序的输出结果是______。
#include<stdio.h>
main ()
int a=2,c=5; printf("a=%%d,b=%%d\n",a,c);
A. a=%2,b=%5
B. a=2,b=5
C. a=%%d,%%d
D. a=%d,b=%d
21. 一个 C 语言的源程序中,______。
A. 必须有一个主函数 B. 可以有多个主函数
C. 必须有主函数和其他函数
D. 可以没有主函数
22. 下列选项中,不是关于栈的基本运算的叙述是______。
A. 从栈顶删除一个元素
B. 判断一个栈是否为空
C. 在栈中的第 i 个元素之前插入一个新元素
D. 读取栈顶元素的值
23. 设 a=3、b=4、c=5,则表达式!(a+b)+c-1&&b+c/2 的值为______。
A. 6.5
B. 6
C. 0
D. 1
24. 下列程序执行后的输出结果是______。
main()
char arr[2][4];
atrcpy(arr,"you");strcpy(arr[1],"me");
art[0][3]='&';
printf("%s\n",arr);
A. you&me
B. you
C. me
D. err
25. 执行以下程序段后,m 的值为______。
int a[2][3]= 1,2,3,4,5,6 ;
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A. 15
B. 14
C. 13
D. 12
26. 软件(结构)设计阶段产生的文档是______。
A. 程序流程图
B. 系统功能说明书
C. 系统模型说明书
D. 模块结构图和模块说明书
27. 下列程序运行后,如果从键盘上输入 ABCDE<回车>,则输出结果为______。
#include<stdio.h> #include<string.h>
fuch (char str[] ) int num=0;
while (*(str+num)!='\0')num++; return(num);
main() char str[10],*p=str; gets(p);printf("%d\n",fuch(p));
A. 8
B. 7
C. 6
D. 5
28. 下列程序中的 for 循环执行的次数是______。
#define N 2
#define M N+1 #define NUM 2*M+1 #main ( )
int i; for (i=1;i<=NUM;i++) printf ("%d\n", i);
A. 5
B. 6
C. 7
D. 8
29. 假定 a 和 b 为 int 型变量,则执行以下语句后,b 的值为______。
a=1;b=10;
do b-=a; a++;
while (b--<0);
A. 9
B. -2
C. -1
D. 8
30. 下列叙述中,正确的一条是______。
A. 语句 int*pt 中的*pt 是指针变量名 B. 运算符*和&都是取变量地址的运算符 C. 已知指针变量 p 指向变量 a,则&a 和*p 值相同,都是变量 a 的值 D. 语句“int *p=a;”等价于“int*p;p=&a[0];”
二、填空题 请将每一个空的正确答案写在序号为[1]~[15]的横线上。注意;以命令关键字填空的必须
拼写完整。
1. 对有 14 个结点的完全二叉树的结点以从上到下、从左到右的顺序进行编号后,序号最小 的叶结点的序号 【1】 。
2. 对于长度为 n 的线性表,若进行顺序查找,时间复杂性为 【2】 ;若进行二分查找,则 时间
复杂性为 【3】 。
3. 近年来形成了软件开发的多种模式,大致有 3 种类型:基于瀑布模型的结构化生命周期 方法、基于动态定义需求的 【4】 方法和基于结构的面向对象的软件开发方法。
4. 下列程序的运行结果为 【5】 。 main ( ) int a,b, c,x,y, z; a=10;b=2; c=! (a%b) ;x=! (a/b); y=(a<b) && (b>=0); z=(a<b) || (b>=0); printf ("c=%d, x=%d, y=%d, z=%d\n", c,x, y, z);
5. 以下函数用来求出 2 个整数之和,并通过形参将结果传回。 void func(int x, int y, 【6】 z) *z=x+y;
6. 下列程序的运行结果为 【7】 。 main ( ) int i, j, row=0, colum=0, max, a[3] [4]=1,2,3,4, 9,8,7,6, -10,10,-5,2; max=a[0] [0]; for (i=0;i<3;i++) for (j=0; j<4; j++) if (max<a [i] [j]) max=a[i] [j]; row=i; colum=j;
printf("max=%-5d row=%-3d colum=%-3d\n",max, row, colum);
7. 下列程序的输出结果是 【8】 。 int t(int x, int y, int cp, int dp) cp=x*x+y*y; dp=x*x-y*y;
main () int a=4, b=3, c=5, d=6; t (a,b, c,d); printf("%d %d \n",c,d);
8. 输出若干学生 3 门课程的成绩。 #include <stdio.h> 【9】 struct student int num; float score[3];
main () int i=0, n; float a[3]; 【10】 *ptr [200]; printf ("请输入学生学号和 3 门课成绩,学号为 0 表示数据输入结束\n");
do ptr[i]=(struct student *)malloc(sizeof(struct student)); scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]); ptr[i]->score[O]=a[O]; ptr[i]->score[1]=a[1]; ptr[i]->score[2]=a[2]; if( 【11】 ) break; i++;
while(1); n=i-1;
【12】 ; for(i=O;i<=n;i++) printf("%-6d%.1f %.1f %.1f\n",ptr[i]->num, ptr[i]->score[0], ptr[i]->score[1], ptr[i]->score[2]);
9. 下列程序的功能是计算 1~100 的整数的累加和。 main() int i, sum= 【13】 ; i=1; for( 【14】 ) sum+=i; i++;
printf("sum=%d\n", 【15】 );