一、选择题 在下列各题的 A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1. 以下选项中不合法的标识符是
A. ptint
B. FOR
C. &a
D. _00
2. 下面程序中有错误的行是(每行程序前面的数字表示行号)
1 main()
2 3 int a[3]=1;
4 int i; 5 scanf("%d",&
A. ; &
3. 阅读下面程序段,则执行后的结果为
#inclide"stdio.h"
main() int m=4,n=2,k;
k=fun(m,n); printf("%d\n",k);
fun(int m,int n) return(m*m*m-n*n*n);
A. 64
B. 8
C. 56
D. 0
4. 以下合法的十六进制数是
A. 0x C. 0x1h
B. 0x4de D. oX77
5. 下面程序的运行结果是 #include<stdio.h>
main() static char a[]="Languagef" ,b[]="programe";
char *p1,*p2; int k; p1=a;p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));
A. gae
B. ga
C. LanSuage
D. 有语法错
6. 下列叙述中正确的是
A. 在面向对象的程序设计中,各个对象之间具有密切的联系 B. 在面向对象的程序设计中,各个对象都是公用的 C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 D. 上述三种说法都不对 7. 以下定义语句中正确的是
A. int a=b=0; B. char A=65+1,b='b'; C. float a=1,*b=&a,*c=&b; D. double a=0.0;b=1.1; 8. 主程序调用 findmax 函数求出数组中最大元素在数组中的下标,括号中需填写的内容是
#include<stdio.h> findmax(int*s,int t,int*k)
int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );
main() int a[10],i,k;
for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d%d\n" ,k,a[k]);
A. k=p
B. *k=p
C. k=p-s D. *k=p-s
9. 结构化程序设计方法的 3 种基本控制结构中不包括
A. 循环结构 B. 递归结构
C. 顺序结构
D. 选择结构
10. 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和
A. 编码设计 B. 测试阶段
C. 运行阶段
D. 物理设计
11. 定义如下变量和数组:
int i;
int x[3][3]=1,2,3,4,5,6,7,8,9;
则下面语句的输出结果是( )。
for(i=0; i<3; i++)
printf("%d",x[i][2-i]);
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
12. 如果需要打开一个已经存在的非空文件“Demo”进行修改,下面选项中正确的是
A. fp=fopen("Demo","r"); B. fp=fopen("Demo","ab+"); C. fp=fopen("Demo","w+"); D. fp=fopen("Demo","r+"); 13. 以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入 的正确选项是
abs(int x) if(x>=0)return x;
else return-x;
main() int y,z,(*p)(int x)=abs;
scanf(" %d" ,&y); z=( *p)(y); ——;
A. printf("%d%d\n",&p,z) B. Printf("%d%d\n",p,z) C. printf("%d%d\n",*p,z) D. printf("%d%d\n",p,*z) 14. 设已执行预编译命令#include<string.h>,以下程序段的输出结果是
char s[]=" an apple" ; printf("%d\n",strlen(s));
A. 7
B. 8
C. 9
D. 10
15. x,y,z 被定义为 int 型变量,若从键盘给 x,y,z 输入数据,正确的输入语句是
A. INPUTx、y、z; B. scanf("%d%d%d",&x,&y,&z); C. scanf("%d%d%d",x,y,z); D. read("%d%d%d",&x,&y,&z); 16. 下述程序的输出结果是
#include<stdio.h>
void main() int a[5]=2,4,6,8,10;
int*p=a,**q=&p; printf("%d,",*(p++)); pfintf("%d",**q);
A. 4,4
B. 2,2
C. 4,5
D. 2,4
17. 软件工程的出现是由于
A. 程序设计方法学的影响 B. 软件产业化的需要
C. 软件危机的出现
D. 计算机的发展
18. 下面程序段的输出为
#nclude"stdio.h"
main() printf("%d\n",12<<2);
A. 0
B. 47
C. 48
D. 24
19. 在数据管理技术的发展过程中,可实现数据共享的是
A. 人工管理阶段 B. 文件系统阶段
C. 数据库系统阶段
D. 系统管理阶段
20. 以下叙述正确的是
A. continue 语句的作用是结束整个循环的执行 B. 只能在循环体内和 swish 语句体内使用 break 语句 C. 在循环体内使用 break 语句或 continue 语句的作用相同
D. 从多层循环嵌套中退出时,只能使用 goto 语句 21. 设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句
if(a<b) if(c==d)y=0; else y=1; 该语句所表示的含义是
22. 有三个关系 R、S 和 T 如下:
R
BCD
a 0 k1
b 1 n1
S
BCD
f 3 h2
a 0 k1
n 2 x1
T
BCD
a 0 k1 由关系 R 和 S 通过运算得到关系 T,则所使用的运算为
A. 并
B. 自然连接
C. 笛卡尔积
D. 交
23. 请阅读以下程序: #include<stdio.h>
main() int x=1,y=0,a=0,b=0;
switch(x)
case 1:
switch(y)
case 0:a++;break; case 2:
a++,b++;break; printf("a=%d,b=%d\n",a,b); 上面程序的输出结果是
A. a=2,b=1
B. a=1,b=1
C. a=1,b=0
D. a=2,b=2
24. 设有定义 int n=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是
A. p=1;
B. *q=2;
C. q=p;
D. *p=5;
25. 在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是
A. auto 和 register
B. extern 和 register
C. auto 和 static
D. static 和 register
26. 下面程序的运行结果是
#include<stdio.h>
void delch(char *s)
int i,j; char *a;
a=S; for(i=0,j=0;a[i]!='\0';i++)
if(a[i]>='0' &aa[i]<='9') s[j]=a[i]; j++;
s[j]='\0';
main() char *item="a34bC";
delch(item); printf("\n%s|,item);
A. abc
B. 34
C. a34
D. a34bc
27. 有以下程序段 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 28. 下列数据结构中,按先进后出原则组织数据的是
A. 线性链表 B. 栈
C. 循环链表
D. 顺序表
29. 在下列关于二叉树的叙述中,正确的一项是
A. 在二叉树中,任何一个结点的度都是 2 C. 在二叉树中至少有一个结点的度是 2 30. 执行下面的程序后,a 的值为
main() int a,b;
for(a=1,b=1;a<=10;a++)
if(b%3==1) b+=3; continue; b-=5;
B. 二叉树的度为 2 D. 一棵二叉树的度可以小于 2
A. 7
B. 8
C. 9
D. 10
31. 能正确表示逻辑关系:“a≥10 或 a≤0”的 C 语言表达式是
A. a>=10 or a<=0 C. a>=10&&a<=0 32. 以下叙述中正确的是
B. a>=0|a<=10 D. a>=10‖a<=0
A. C 程序中的注释只能出现在程序的开始位置和语句的后面 B. C 程序书写格式严格,要求一行内只能写一个语句 C. C 程序书写格式自由,一个语句可以写在多行上 D. 用 C 语言编写的程序只能放在一个程序文件中 33. 以下程序运行后,输出结果是
#define PT 5.5
#define S(x) PT*x*x #include<stdio.h>
main() int a=1,b=2;
printf("%4.1f\n",s(a+b));
A. 49.5
B. 9.5
C. 22
D. 45.0
34. 下面叙述正确的是
A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 35. 以下程序的输出结果是
#include<stdio.h> in[fun(int n,int *s) int n,f2; if(n==0‖n==1) *s=1; else fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2;
void main() int x;
fun(6,&x); pfintf("\n%d",x);
A. 7
B. 13
C. 9
D. 10
36. 下列对于软件测试的描述中正确的是
A. 软件测试的目的是证明程序是否正确 B. 软件测试的目的是使程序运行结果正确 C. 软件测试的目的是尽可能多地发现程序中的错误 D. 软件测试的目的是使程序符合结构化原则 37. 若有以下的说明,对初值中整数 2 的正确引用方式是
static struct char ch; int i; double x;
a[2][3]='a',1,3,45,'b',2,7,98,'c',31,93;
A. a[0][1].ch
B. a[0][1].i
C. a[0][0].i
D. a[0][2].i
38. 以下叙述中错误的是
A. gets 函数用于从终端读入字符串 B. getehar 函数用于从磁盘文件读入字符 C. fputs 函数用于把字符串输出到文件 D. fwrite 函数用于以二进制形式输出数据到文件 39. 以下正确的程序段是
A. cgar str[20]; scanf(“%s",&str);
B. char *p; scanf("%s",p);
C. cha str[20]; scanf("%s",&str[2])
D. char str[20],*p=str; scanf("%s",p[2]);
40. 若有以下定义的语句
struct student int age; int num;; struct student stu[3]=1001,20,1002,19,1003,21;
main() stmct student *p; p=stu;
… 则以下不正确的引用是
A. (p++)->num
B. p++
C. (*p).num
D. P=&stu.age.
二、填空题
1. 数据结构分为线性结构和非线性结构,线性表、栈和队列都属于______。
2. 按“先进后出”原则组织数据的数据结构是______。
3. 软件危机出现于 60 年代末,为了解决软件危机,人们提出了______的原理来设计软件, 这就是软件工程诞生的基础。
4. ______(黑箱或白箱)测试方法完全不考虑程序的内部结构和内部特征。
5. 数据库设计分为以下 6 个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计 阶段、实施阶段、运行和维护阶段。
6. 以下条件表达式可计算:1+|a|的值,请填空。 a>=0? [6] : [7]
7. 下面程序的运行结果是______。 #include<stdio.h> main() int y,a; y=2,a=1; while(y--!=-1) doa*=y;a++;while(y--); printf("%d,%d",a,y);
8. 以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“This is YES.”与 “This is NO.”。空白处需要填入的内容是
#include<stdio.h> void YesNo(char ch) switch(ch) case'y': case'Y':printf("\n This is YES.\n"); case'n': case'N':Printf("\nThis is NO.\n"); main() char ch; printf("\nEnter a char'y','Y'or'n','N’:"); ch=______; printf("ch;%c",ch); YesNo(ch);
9. 定义 int a=5,b;,则执行表达式 b=++a*--a 之后,变量 b 的值为______。
10. 以下程序的输出结果是______。 #include <stdio.h>
void swap(int *a, int *b) int *t;
int i=3,j=5,*p=&i,*q=&j; swap(p,q); printf("%d %d\n",*p,*q);
11. 下面的程序实现的是从指针 p 所指向的地址的 n 个数中,找出最大的和最小的数据,请 填空。
fun(int *p,int n) int *q;
int max,min; max=min=*p; for(q=p;______;q++) if(*q>max)max=*q; else if(*q<min)min=*q;
12. 下面程序的输出结果是______。 main() static char a[]="language",b[]="program"; char *ptrl=a,*ptr2=b; int k for(k=0;k<7;k++) if(*(ptrl+k)==*(ptr2+k)) printf("%c",*(ptr1+k));
13. 已知 bead 指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域 (next),数据域为整型。以下函数求出链表中所有连接点数据域的和值作为函数值返回。请 在横线处填入正确内容。
int data; struct link *next; main()
struct link *head; sam(______); stmct link *p;int s=0; p=head->next; while(p)s+=p->data;p=p->next; return(s);
14. 以下程序的功能是从名为 filea.dat 的文本文件中逐个读入字符并显示在屏幕上。请填空。 majn() FILE *fp; char ch;
fp=fopen(______); ch=fgetc(fp); whle(!feof(fp)) putchar(ch); ch=f8etc(fp); putchar('\n'); fclose(fp);