c语言答案
更新时间:2023-11-09 18:18:01 阅读量: 教育文库 文档下载
C语言基础
一、选择题(每题3分)
1.指针运算:int *p1, *p2; int value;
p1 = (int *)0x500; p2 = (int *) 0x518; value = p2-p1;问:value的值? A 8 B 4 C 2 D 6 答案:D
2、void main(void)
{ char x = 127; char a = x + 1; long b = x + 1;
printf(\}请问输出多少 _____
A: 128, 128 B: -128, -128 C: 128, -128 D: -128, 128
答案:D
3.下面堆(Heap)与栈(stack)的差别叙述不正确的是
A) Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。 B) C中的malloc函数分配的内存空间即在堆上 C)局部非静态变量和函数的入参都在栈中分配。
D) 程序中定义变量尽可能从堆中分配,因为堆的效率比栈高
答案:D
4. 定义如下变题和数组:
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][0]);
A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 答案:B
5.关于sizeof下列哪些说法是正确的(A)
A)sizeof运算符在编译阶段执行。 B)sizeof的参数不可以是常量。 C)sizeof运算符在程序运行阶段执行。 D)sizeof运算符与系统字节对齐没有关系。
6.关于strlen和sizeof,下列哪些说法是正确的(B) A)sizeof函数是在程序运行阶段执行。 B)strlen函数是在程序运行阶段执行。 C)sizeof函数的结果跟字节序有关系。 D)strlen函数的结果跟字节对齐有关系。
7.关于编译的说法哪些是正确的(AB)
A)#if #endif等标志符在预编译阶段处理。
B)宏定义在预编译阶段就已进行分析并替换到程序中。 C)全局变量定义在堆中。 D)全局变量定义在栈中。
8.请问编译器将1##2理解为_C__
A、\、'1'和'2' C、12 D、1>>2
9.二维整形数组a[][]中,a[i]代表一维数组名,本身不占实际的内存单元,也不存放a数组
中各个元素的值。(B) A 正确 B 错误
10.struct s
{
int x, *y; } *p;
int data[5]={0, 1, 2, 3, 4}; struct s array[5]= {
0, &data[0], 1, &data[1], 2, &data[2], 3, &data[3], 4, &data[4] };
void main ( ) {
p=&array[0];
printf(\}
程序输出结果为:( B) A. 0 B. 1 C. 2 D. 3 E. 4
11.如下题,请问tmp是什么类型变量? C
typedef int (*test) ( float * , float*)
test tmp;
(a) 一个函数的指针(此函数有两个float指针形参) (b) int
(c) 一个函数的指针(此函数有两个float指针形参,且返回值为int) (d) 语法错
12.若已建立如下图所示的单向链表结构 ,
在该链表结构中,指针 p 、 s 分别指向图中所示结点,则不能将 s 所指的结点插入到链表末尾仍构成单向链表的语句组是 A A) p =p->next; s->next=p; p->next=s; B) p =p->next; s->next=p->next; p->next=s; C) s->next=NULL; p=p->next; p->next=s; D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 13.执行以下程序段后,m的值为 A 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
14.下列说法正确的是:( D )
A、全局变量定义在可被多个.C文件包含的头文件中.
B、char* (*p)(int); 声明了一个参数为int的函数指针,它的返回值是char类型。 C、char a[5]; char *p; 则我们可以这样赋值a = p;
D、我们可以这样声明一个int型数组的指针 int (*pa)[5]. 15.下面程序打印出的结果是:result is _ . B #define MUL(x) x*2 #define ADD(x) x++
int main(int argc, char* argv[])
{
int a = 5; int b = 2; int c = 0; c = MUL(ADD(a+b)); printf(\ return; }
A, 11 B, 9 C, 14 D, 16 16.以下程序运行后,输出结果是:_____ B________ main() {
static char a[]=\ char *p1,*p2; int k; p1=a; p2=b;
for(k=0;k<=7;k++) {
if (*(p1+k)==*(p2+k)) {
printf(\c\
} }
printf(\}
A) ABCDEFG B) CDG C) abcdefgh D) abCDefGh
17.给出以下定义: char acX[ ]= \
char acY[ ]= {'a','b','c','d','e','f','g'}; 则正确的叙述为( C )
A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同 C) 数组acX的长度大于数组acY的长度 D) 数组acX的长度小于数组acY的长度 18..在函数内部定义的变量(静态变量、寄存器变量等特殊变量除外)的内存是在栈内存中,所以在定义函数内部的变量的时候,一定要保证栈不能够溢出。如果临时变量
占用空间较大,应该使用内存申请的方式,这样该变量指向的内存就是在堆内存中了。A A. 正确 B. 错误 19.设有以下宏定义:
#define N 3
#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/ 则执行语句:z = 2 * (N + Y(5 + 1));后,z的值为( C ) A) 出错 B) 42 C) 48 D)54
20. 0x12345678 在采用BigEndian中内存的排列顺序是__A____,在采用LittleEndian内存中的排列顺序是___C____.
(答案从左到右内存地址依次增加)
A.12 34 56 78 B.34 12 78 56 C.78 56 34 12 D.56 78 12 34 二、填空题(每题4分)
1. typedef union {
long a; char b[6];
}un; sizeof(un) = __8___
2.在一个双向链表中,若指针p所指结点不是首结点,也不是尾结点,则把p从链表中删除,
应执行语句___p->prev->next = p->next__________;
___p->next->prev = p->prev_________ ; ___free(p);_______________ __。
链表的数据结构如下: struct LINK{ char data; struct LINK *prev; struct LINK *next; }
3.不同对齐方式下的结构大小,下面程序的输出结果是什么?
Typedef struct student1{
Char name[10]; Long sno; Char sex;
Float score [4];
} STU1;
Typedef struct student2{
Char name[10]; Char sex; Long sno; Float score [4];
} STU2; STU1 a[5]; STU2 b[5];
强制四字节对齐情况下,请指出sizeof(a) = ___180_____; sizeof(b) = __160____; 强制一字节对齐情况下,请指出sizeof(a) = ___155_____; sizeof(b) = __155______;
4.下面函数的输出是___token3 = 4___
#define paster( n ) printf( \void fun() { int token3 = 4; int tokenn = 3; paster( 3 );}
5.一个整形二维数组int a[2][4]={{10,20,30,40},{100,200,300,400}};已知二维数组的首地址
是1000 (10进制地址),a[1]+1 =(1020), 三、单项改错题(每题5分)
1.此函数为一个2字节的字节序转换函数
01 unsigned short VOS_NTOHS(unsigned short x) 02 {
03 unsigned short y;
04 y = ((x & 0xFF) << 8) || ((x & 0xFF00) >> 8); 05 return y; 06 }
y = ((x & 0xFF) << 8) | ((x & 0xFF00) >> 8);
2. 请指出下面程序中的错误: void main()
{
char* s=\ printf(\
s[0]='B'; //s指向常量字符 不应该被赋值修改 printf(\ return; }
3.请指出下面程序错误的地方:
#define BUFFER_SIZE 256 void Test(void) { char *str = NULL;
str = (char *)malloc(BUFFER_SIZE); if(NULL == str){ return; } strcpy(str, \
free(str); //free之后 str并不为NULL且指向未知区域,下面的if中语句会继续执行
if(NULL != str){
strcpy(str, \
printf(str); } return; }
4.请指出下题的1处错误 01 void main() //没错误? 02 {
03 char *pctest1, *pctest2; 04 pctest1 = (char*)malloc(10); 05 pctest2 = (char*)malloc(20);
06 if((NULL == pctest1)&&(NULL == pctest2))
07 {
08 return; 09 }
10 memset(pctest1, 0x0, 10);
11 strcpy(pctest2, \12 free(pctest1); 13 free(pctest2);
14 }
正在阅读:
c语言答案11-09
计量经济学论文01-28
2021年在交通强省建设动员大会上的讲话08-17
工商企业管理实习报告06-01
健身教练简历模板12-11
店长岗位职责指导说明书03-23
七年级学生寒假评语02-24
2017-2022年中国杂粮市场调查与发展趋势研究报告(目录)08-24
泉州石材机械红外线对刀仪06-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 答案
- 语言