C语言与数据结构试题算法
1.下面程序的输出结果是_____d_____
int i=0,j=0,a=6;
if((++i>0)||(++j>0)) a++;
printf("i=%d,j=%d,a=d%\n",i,j,a);
A、i=0,j=0,a=6 B、i=1,j=0,a=7
C、i=1,j=1,a=6 D、i=1,j=1,a=7数组
2.下面各语句行中,正确执行字符串操做的语句行是b数据结构
A)char st[4][5]={"ABCDE"};函数
B)char s[5]={'A','B','C','D','E'};
C)char *s;s=“ABCDE”;
D)char *s;scanf(“%S”,S);spa
3. 设有以下定义:
int (*ptr)*(c);
则如下叙述中正确的是
A)ptr是指向一维组数的指针变量3d
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针指针
4.设有如下定义:
typedef union{ int k[5];char c;} DATE;
struct date { int cat;DATE cow;double dog;}too;
DATE max;
则下列语句的执行结果是排序
printf("%d",sizeof(struct date)+sizeof(max));
A) 25 B) 30 C) 18 D) 8队列
5. 设有如下说明语句
则下面叙述中正确的是
typedef struct
{ int n;
char ch[8];
}PER;
A) PER 是结构体变量名 B) PER是结构体类型名
C) typedef struct 是结构体类型 D) struct 是结构体类型名内存
6. 在C语言中,char型数据在内存中的存储形式是:
A)补码 B)反码 C)原码 D)ASCII码
7. 如下程序的运行结果是 :
main()
{ int m=5;
if(m++>5) printf(" %d\n",m);
e1se printf("%d\n",m--); }
A)4 B)5 C)6 D)7
8. 下面程序段: d
for(t=1;t<=100;t++)
{ scanf("%d",&x);
if(x<0) continue;
printf("%3d",t); }
A) 当x<0时整个循环结束
B) x>=0时什么也不输出
C) printf函数永远也不执行
D) 最多容许输出100个非负整数
9. main()
{ int num= 0;
while(num<=2)
{ num++; printf("%d\n",num);
}
以上程序的输出结果是 A) 1 B) 1 C)1 D) l
2 2 2
3 3
4
10. 如下程序的输出结果是
A) 20 B) 24 C) 25 D) 15
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
11. 如有下面的程序片断:
int a[12]={0}, *p[3], **pp, i;
for(i=0; i<3; i++)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是d
A)pp[0][1] B)a[10] C)p[3][1] D)*(*(p+2)+2)
12. 如有定义: float w; int a, b; 则合法的switch语句是
A) switch(w) B) switch(a);
{ case 1.0: printf("*\n"); { case 1 printf("*\n");
case 2.0: printf("**\n"); case 2 printf("**\n");
} }
C) switch(b); D) switch(a+b)
{ case 1: printf("*\n"); { case 1: printf("*\n");
default: printf("\n"); case 2: printf("**\n");
case 1+2: printf("**\n"); default: printf("\n");
} }
13. 不能把字符串:Hello!赋给数组b的语句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
14. #include<stdio.h>
main()
{ int a,b,c,d;
scanf("%d%d",&a,&b);
c=gbs(a,b);
d=gys(a,b);
printf("a=%db=%d gbs=%d gys=%d\n",a,b,c,d);
}
gbs(a,b)
int a,b;
{ int c;
a=a>0?a:-a;
b=b>0?b:-b;
c=a*b;
if(c==0) return(0);
while(a!=b) if(a>b) a-=b;
else b-=a;
return(c/a);
}
gys(a,b)
int a,b;
{ if(a*b==0) return(0);
a=a>0?a:-a;
b=b>0?b:-b;
while(a!=b) if(a>b) a-=b;else b-=a;
return(a);
}
请写出上面程序的运行结果:
A、a=30 b=63 gbs=189 gys=9
B、a=27 b=63 gbs=190 gys=10
C、a=27 b=63 gbs=189 gys=9
D、a=27 b=63 gbs=188 gys=10
15. 判断字符串a和b是否相等,应当使用_____.
A) if(a==b) B) if(a=b)
C) if(strcpy(a,b)) D) if(!strcmp(a,b))
16.有下面的程序段
char a[3],b[]="china"; a=b;
printf("%s",a);
则_____.
A)运行后将输出Chm B)运行后将输出Ch
C)运行后将输出Chi D)编译出错
17. 如有下面的说明和定义,
则sizeof(struct test )的值是____ A)12 B)16 C)14 D)9
struct test
{ int ml; char m2; float m3;
union uu {char ul[5]; int u2[2];} ua;
} myaa;
18. 如有如下定义和语句:a
int w[2][3],(*pw)[3];
pw=w;
则对w数组元素非法引用是
A)*(w[0]+2) B)*(pw+1)[2] C)pw[0][0] D)*(pw[1]+2)
19. 如有如下说明和定义,
在必要的赋值以后,对fun函数的正确调用语句是
fun(int *c){ }
main()
{ int (*a)()=fun,*b(),w[10],c;
┆
}
A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);
20. 如有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
21. 若指针p已正肯定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)malloc(2,sizeof(int));
22.设已有定义: char *st="how are you"; 下列程序段中正确的是 B) char a[11]; strcpy(++a, st); |
23.以下程序的输出结果是 A) 运行错误 B) 100 C) i的地址 D) j的地址 |
24.设一整型(int)变量占用2个字节则下述共同体变量x所占用内存字节数为________。 |
25.设x的值为4,则表达式(++x)+(++x)+(++x)的值是 |
26.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是 |
27.设有以下枚举类型定义: |
28.设有以下函数定义: |
29.设有说明int(*ptr)[m];其中的标识符ptr是( )。 |
30.为表示关系x≥y≥z,应使用C语言表达式 31.在数据结构中,从逻辑上能够把数据结构分为 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构
|
32. 不带头结点的单链表head为空的断定条件是
A.head == NULL B head->next ==NULL
C.head->next ==head D head!=NULL
33. 带头结点的单链表head为空的断定条件是
A.head == NULL B head->next ==NULL
C.head->next ==head D head!=NULL
34. 在循环双链表的p所指的结点以前插入s所指结点的操做是
A.p->prior = s;s->next = p;p->prior->next = s;s->prior = p->prior
B.p->prior = s;p->prior->next = s;s->next = p;s->prior = p->prior
C.s->next = p;s->prior = p->prior;p->prior = s;p->prior->next = s
D.s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s
35.若是最经常使用的操做是取第i个结点及其前驱,则采用 存储方式最节省时间。
A.单链表 B.双链表 C.单循环链表 D. 顺序表
36.在长度为n的顺序表的第i个位置上插入一个元素(1≤ i ≤n+1),元素的移动次数为: 。
A.n – i + 1 B.n – i C.i D.i – 1
37.在单链表指针为p的结点以后插入指针为s的结点,正确的操做是 。
A.p->next=s;s->next=p->next B. s->next=p->next ;p->next=s;
C.p->next=s;p->next=s->next D.p->next=s->next;p->next=s
38.栈和队列的共同点是 。
A.都是先进后出 B.都是先进先出
C.只容许在端点处插入和删除元素 D.没有共同点
39.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为 。
A.i B.n-i C.n-i+1 D.不肯定
40.设有两个串p和q,求q在p中首次出现的位置的运算称为 。
A.链接 B. 模式匹配 C.求子串 D.求串长
41.树最适合用来表示 。
A.有序数据元素 B.无序数据元素
C.元素之间具备分支层次关系的数据 D.元素之间无联系的数据
22222
42.深度为5的二叉树至多有 b 个结点。
A.16 B. 32 C. 31 C. 10
43.具备10个叶子结点的二叉树中有 个度为2的结点。
A.8 B.9 C.10 D.11
44.在一个无向图中,全部顶点的度数之和等于全部边数的 倍。
A.1/2 B 1 C 2 D 4
45.某二叉树结点的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为:
A.3 B.2 C.4 D.5
46.采用邻接表存储的图的深度优先遍历算法相似于二叉树的___ ____。
A.先序遍历 B.中序遍历 C.后序遍历 D.按层遍历
47.对线性表进行折半查找时,要求线性表必须 。
A 以顺序方式存储 B 以顺序方式存储,且结点按关键字有序排列
C 以链式方式存储 D 以链式方式存储,且结点按关键字有序排列
48.排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为 。
A.希尔排序 B。冒泡排序 C插入排序 D。选择排序
49.算法分析的目的是 ,算法分析的两个主要方面是 。
(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进 C.分析算法的易读性和文档性
(2)A.空间复杂度和时间复杂度 B.正确性和简明性
C.可读性和文档性 D.数据复杂性和程序复杂性