一、选择题(每题1分,总计8分)
1.在Win2K下,32位C语言程序中有如下类型的数据,其在存储器中占的字节数为(D )
struct lpa
{
char a:1;
char b:5;
int c;
char m;
};
A.6 B.7 C.9 D.12
2.下列代码中对指针的操作正确的有( B )
#define MAX 10
A.
int fun( void)
{
char *a=NULL;
char *b=NULL;
a=malloc( sizeof(char)* MAX);
b=a;
free(a);
if(b!=NULL)
*b=’0’;
……
return 0;
}
B.
int fun(void)
{
char *a=NULL;
char *b=NULL;
a=malloc( sizeof(char)* MAX);
b=a;
……
free(a);
a=NULL;
b=NULL;
……
return 0;
}
C.
int fun(void)
{
char *a=NULL;
char *b=NULL;
unsigned int i;
a=malloc( sizeof(char)* MAX);
b=a;
for(i=0;i<MAX;i++)
*(b++)=i;
free(b);
free(a);
return 0;
}
D.
int fun(void)
{
char *a=NULL;
int *b=NULL;
a=malloc( sizeof(char)* MAX);
b=a+9;
*b=15;
……
return b;
}
3.有如下代码
typedef struct ptrblock {
char *ptr;
char name[10];
} Node_t;
main()
{
Node_t *p;
p = (PB *)malloc(sizeof(Node_t));
p->ptr = malloc(10);
……
[内存释放语句]
}
请问下面哪段代码正确完成了内存释放(C )
A.
free(p);
free(p->ptr);
B.
free(p->ptr);
free(p->name);
free(p);
C.
free(p->ptr);
free(p);
D.
free(p);
free(p->ptr);
free(p->name);
4.读下列代码:
char a=100;
char b=150;
unsigned char c;
c=(a<b)? a:b;
请问c的值为(B )
A.100 B.150 C.-106 D.204
5.有下列代码:
int main(void)
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
k+=2;
printf(“%d %d %d\n”,i,j,k);
}
程序的运行结果为( C )
A.1 2 3 B.2 3 4 C.2 3 5 D.2 3 6
6.下列函数声明中有语法错误的有:( A )
Ac语言中struct. int func (float p[][] , int n);
B. int func (float *p[] , int n);
C. int func (float p[] , int n);
D. int func (float (*p)[] , int n);
7.下列选项中可以作为C语言合法常量的有( A)
A.-80.
B.-080
C.-8e1.0
D.-80.0e
8.变量定义如下:
char s[10], *p;
char c ;
p = &c ;
则下列语句不正确的有(CD )
A.p=s+4;
B.*p=s[0];
C.s=”sist”;
D.s=p+1;
9. 以下序列中不符合堆定义的是____D____
(102,87,100,79,82,62,84,42,22,12,68)
(102,100,87,84,82,79,68,62,42,22,12)
(12,22,42,62,68,79,82,84,87,100,102)
(102,87,42,79,82,62,68,100,84,12,22)
10. 一个具有767个结点的完全二叉树,其叶子结点个数为__B_____
A. 383 B. 384 C. 385 D. 386
11. 若一个具有n个结点、k条边的非连通无向图是一个森林(n>k),则该森林中必有___C__棵树。
A. k B. n C. n-k D. n+k
12.将两个长度为n的递增有序表归并成一个长度为2n的递增有序表,最少需要进行关键字比较__A____次。
A. 1 B. n-1 C. n D. 2n
13. 对n个元素进行快速排序时,最坏情况下的时间复杂读为___D____
A. 0 (log2n) B. 0 (n) C. 0 (nlog2n) D. 0 (n2)
1 C语言命令参数的表达形式是 (D)
A) main(int argc,int argv) B) main(int argc,char argv[])
C) main(int argc,char*argv) D) main(int argc,char*argv[])
( ) 2 在C语言中,要求运算数必须是整形的运算符是 D
A) / B) ++ C) != D) %
( ) 3 在C语言中,数组名作为参数传递给函数,作为实参数的数组名被处理为 D
A) 该数组的长度 B) 该数组的元素个数
C) 该数组中各元素的值 D)该数组的首地址
() 4 设有如下: A
int *ptr[];
则一下叙述中正确的是
ptr是指向一维数组的指针变量
ptr是指向int型数据的指针变量
ptr是指向函数的指针,该函数返回一个int型数据
ptr是一个函数名,该函数的返回值是指向int形数据的指针
()5 若以下变量均是整形,且num=sum=7;则执行表达式 B
sum=num++;
sum++;
++num后sum的值为
A) 7 B) 8 C) 9 D) 10
(?) 6 设整数a用两个字节表示。表达式a&0x7FFF的作用是:(0111111111111111)C
A) 置a的最低位为0; B) 置a的最低位为1;
C) 置a的最高位为0; D) 置a的最高位为1;
()7 类型定义:(字符串自动加\0)
char S[3]=“AB”;
char *p;
在执行了语句P=S之后,*(P+2)的值是(C)。
A) ‘B’ B) ‘\0’ C)不确定 D字符’B’的地址
()8 设有如下定义:
struct sk{int a;float b;}data,*p;
若有p=&data;,则对data中的a的域的正确引用是
A)(*P).data.a B) (*P).a
C) P->data.a D)p.data.a
( ) 9 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数表达式的值为为“假”。则以下不能满足要求的表达式:C
A) A%2 = =1 B) !(A%2 = = 0) C) !(A%2) D) A%2
( ) 10 下面程序的功能是将字符串s中所有的字符c的删除,请选择填空
#include <stdio.h>
main(){
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论