《嵌入式LINUX脱产班入学测试题(C语言)》
- 格式:doc
- 大小:29.00 KB
- 文档页数:3
嵌入式Linux C语言应用开发试题及答案一:选择题1.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务2.查看创建目录命令mkdir的帮助文档,可以使用命令( D)。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir3.在C语言中,要求运算数必须是整型的运算符是( D )。
[A] / [B] ++ [C] != [D] %4.C语言程序的三种基本程序是( A )。
[A] 顺序结构,选择结构,循环结构[B] 递归结构,循环结构,转移结构[C] 嵌套结构,递归结构,顺序结构[D] 循环结构,转移结构,顺序结构5.数据结构包含的内容不包括(a)A.线性结构B.存储结构C.逻辑结构D.数据运算6.向一个单链表linklist中的节点t后面插入一个节点p,下列操作正确的是(a)A.p->next = t->next;t->next = p;B.t->next = p->next;t->next = p;C.t->next = p;p->next = t->next;D.t->next = p;t->next = p->next;7.下列哪种打开文件的方式不能修改文件已有的内容( B )[A] r+ [B] r [C] w+ [D] a+8.以下哪种不是进程的状态( B )[A] 运行态[B] 锁定态[C] 睡眠态[D] 停止态9.常用来进行多任务同步的机制是( B )[A]管道[B] 信号量[C]信号[D]共享内存10.下列对于有名管道描述错误的是( D )[A] 可以用于互不相关的进程间[B] 通过路径名来打开有名管道[C] 在文件系统中可见[D] 管道内容保存在磁盘上11.不能被用户进程屏蔽的信号是( B )[A] SIGINT [B] SIGSTOP [C] SIGQUIT [D] SIGILL12.fread()返回值的含义是( B )[A] 读取的字节数[B] 读取的对象数[C] 缓冲区的首地址[D] 013.以下不属于socket的类型的是 ( )。
嵌入式Linux 笔试题库一.选择题1. Linux 的创始人是谁()A、TurbolinuxB、AT&T Bell LaboratryC、University of Helsinki D 、Linus Torvalds2. 在Linux 中,命令解释器是哪个()A、管道B、分级文件系统C、字符型处理器D、shell3. Linux 安装程序提供了两个引导装载程序()A、GROUP 和LLTOB、DIR 和COIDC、GRUB 和LILOD、以上都不是4. 如果当前目录是/home/sea/china,那么“ china”的父目录是哪个目录()A、/home/seaB、/home/C、/D、/sea5. 在Linux中,要删除abc目录及其全部内容的命令为:()A、rm abcB、rm -r abcC、rmdir abcD、rmdir -r abc6. 假定kernel支持vfat分区,下面哪一个操作是将/dev/hda1分区加载到/win目录?()A、mount -t windows /win /dev/hda1B 、mount -fs=msdos /dev/hda1 /winC、mount -s win /dev/hda1 /winD、mount - vfat /dev/hda1 /win7. 显示用户的主目录的命令是什么()A、echo $HOMEB、echo $USERDIRC、echo $ECHOD、echo $ENV8系统中有用户user1和user2,同属于users组。
在user1用户目录下有一文件file1,它拥有644的权限, 如果user2用户想修改user1用户目录下的file1文件,应拥有()权限。
A、744B、664C、646D、7469.如何查看一个RPM 软件包是否安装()A 、rpm-Vc postfixB 、rpm-q postfixC 、rpm--changelog postfixD 、rpm-q—changelogpostfix10*.在Linux 中,提供TCP/IP 包过滤功能的软件叫什么( C )A、rarpB、routeC、iptablesD、filter11.nfs 服务的配置文件是什么?()/etc/mtab B、/etc/fastboot C、/etc/fstab D、/etc/exports12. 用命令ls -al 显示出文件ff 的描述:-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff 由此可知文件ff 的类型为:()A、普通文件B、硬连接C、目录D符号连接13.Linux 操作系统中的shell 是()A、命令解释器B、程序设计语言C、脚本编辑器D、编译器14.能实现文件系统远程挂载的是()。
c语言嵌入式试题以下是一些C语言嵌入式试题:1.以下关于C语言嵌入式编程的说法正确的是?(A)C语言嵌入式编程需要考虑内存管理。
(B)C语言嵌入式编程需要考虑实时性。
(C)C语言嵌入式编程需要考虑硬件资源的利用。
(D)以上都正确。
答案:(D)2.以下关于C语言嵌入式编程的内存管理的说法正确的是?(A)嵌入式系统通常内存有限,因此需要精心管理内存。
(B)嵌入式系统通常使用动态内存分配,因此需要注意内存泄漏。
(C)嵌入式系统通常使用静态内存分配,因此不需要考虑内存泄漏。
(D)以上都正确。
答案:(A)、(B)3.以下关于C语言嵌入式编程的实时性的说法正确的是?(A)嵌入式系统通常需要实时响应外部事件。
(B)嵌入式系统通常需要满足一定的延迟要求。
(C)嵌入式系统通常需要满足一定的吞吐量要求。
(D)以上都正确。
答案:(A)、(B)、(C)4.以下关于C语言嵌入式编程的硬件资源利用的说法正确的是?(A)嵌入式系统通常硬件资源有限,因此需要充分利用硬件资源。
(B)嵌入式系统通常需要考虑功耗,因此需要合理使用硬件资源。
(C)嵌入式系统通常需要考虑成本,因此需要降低硬件资源的使用。
(D)以上都正确。
答案:(A)、(B)、(C)5.以下关于C语言嵌入式编程的常见错误是?(A)使用未定义的变量或函数。
(B)使用不兼容的数据类型。
(C)使用未初始化的变量。
(D)以上都正确。
答案:(A)、(B)、(C)6.以下关于C语言嵌入式编程的常见技巧是?(A)使用宏来实现常见的操作。
(B)使用结构体来封装数据。
(C)使用函数指针来实现灵活的处理。
(D)以上都正确。
答案:(A)、(B)、(C)7.以下关于C语言嵌入式编程的常见工具是?(A)编译器。
(B)链接器。
(C)调试器。
(D)以上都正确。
答案:(A)、(B)、(C)8.以下关于C语言嵌入式编程的常见平台是?(A)ARM。
(B)MIPS。
(C)x86。
(D)以上都正确。
答案:(A)、(B)、(C)9.以下关于C语言嵌入式编程的常见应用是?(A)家用电器。
嵌入式Linux系统基础试题库一.填空题:1. 在Linux系统中,以文件方式访问设备。
2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。
3. Linux文件系统中每个文件用索引节点来标识。
7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。
8. 前台起动的进程使用Ctrl+c终止。
13. 编写的Shell程序运行前必须赋予该脚本文件执行权限。
16. linux内核分为进程调度、内存管理、虚拟文件系统和网络接口、进程间通信这5个子系统。
19. 唯一标识每一个用户的是用户ID 和用户名。
21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。
27. vi编辑器具有三种工作模式:命令模式、输入模式和末行模式。
28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示文件类型,第二段占3位,表示文件所有者对该文件的权限。
29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为:运行态、就绪态和等待态(阻塞态)。
38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是/etc 。
40. 套接字文件的属性位是s ,管道文件的属性位是p。
41. 结束后台进程的命令是kill。
43. Links分为硬链接和符号链接。
44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps -aux 。
46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道。
47. 为脚本程序指定执行权的命令及参数是chmod a+x filename 。
52.在Linux系统中,压缩文件后生成后缀为.gz文件的命令是gzip 。
53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在末行模式下键入:w test.txt。
基础试题(C语言)一、ANSI C/C++方面的知识一.1、简答题。
下面的题目必须全部答对才给分(20分):1、如何在C中初始化一个字符数组。
2、如何在C中为一个数组分配空间。
3、如何初始化一个指针数组。
4、如何定义一个有10个元素的整数型指针数组。
5、s[10]的另外一种表达方式是什么。
6、GCC3.2.2版本中支持哪几种编程语言。
7、要使用CHAR_BIT需要包含哪个头文件。
8、对(-1.2345)取整是多少?9、如何让局部变量具有全局生命期。
10、C中的常量字符串应在何时定义?11、如何在两个.c文件中引用对方的变量。
12、使用malloc之前需要做什么准备工作。
13、realloc函数在使用上要注意什么问题。
14、strtok函数在使用上要注意什么问题。
15、gets函数在使用上要注意什么问题。
16、C语言的词法分析在长度规则方面采用的是什么策略?17、a+++++b所表示的是什么意思?有什么问题?18、如何定义Bool变量的TRUE和FALSE的值。
19、C语言的const的含义是什么。
在定义常量时,为什么推荐使用const,而不是#define。
20、C语言的volatile的含义是什么。
使用时会对编译器有什么暗示。
一.2、问答题。
1、-----------------------------------------------------------"匈牙利命名法"有什么优缺点?(2分)2、-----------------------------------------------------------下面x, y, *p的值是多少,有什么问题?(2分)int x, y, z = 2;int *p=&z;x=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么问题?*/3、-----------------------------------------------------------下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)int (*foo())();int (*foo())[];int (*foo[])();(*(void(*)())0)();void (*signal(int,void(*)(int)))(int);4、-----------------------------------------------------------本题(2分)。
7.C++中为什么用模板类。
答:(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性(5)可用于基本数据类型8.CSingleLock是干什么的。
答:同步多个线程对一个数据类的同时访问12.Linux有内核级线程么。
答:线程通常被定义为一个进程中代码的不同执行路线。
从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
这种线程甚至在象DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似Windows 3.x 的协作式多任务。
另外一种则需要内核的参与,由内核完成线程的调度。
其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。
用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。
Windows NT和OS/2支持内核线程。
Linux 支持内核级的多线程14.使用线程是如何防止出现大的波峰。
答:意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队等候15函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
22.TCP/IP 建立连接的过程?(3-way shake)答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
3.2 填空题(267) 根据编码规范,所有代码都应____级以上的warning编译成功。
(268) 根据编码规范,所有的源文件应是可打印的______,在编辑器中定义TAB 键自动用__8个空格代替。
(269) 根据编码规范,文件名和目录的长度不要超过_255____字符。
(270) 头文件应避免被重复引用,应使用_____________预处理块。
(271) 用#include <filename.h> 格式来引用_________________。
(272) 用#include "filename.h" 格式来引用__________________。
(273) 根据编码规范,声明函数原型时给出参数名称和类型,并且与实现此函数时的参数名称、类型保持一致,无参数的函数,用___void___声明。
(274) 根据编码规范,代码文件不要超过______行,一个函数的代码不要超过_53____行, 每行不应超过______个字符。
(275) 一个程序中的空行数目最好占总代码行的_____,注释行数不应少于总代码行的____20_%_。
(276) 目录、文件的命名均不要超过__255___个字符。
3.3 问答与设计(277) 使用goto语句会有什么不良后果?(278) 为什么要尽量避免函数带有"记忆"功能?尽量避免函数带有“记忆”功能。
相同的输入应当产生相同的输出。
带有“记忆”功能的函数,其行为可能是不可预测的,因为它的行为可能取决于某种“记忆状态”。
这样的函数既不易理解又不利于测试和维护。
在C/C++语言中,函数的static 局部变量是函数的“记忆”存储器。
建议尽量少用static 局部变量,除非必需。
(279) 不设计多参数函数的目的是什么?尽量不设计多参数函数,将不使用的参数从接口中去掉,降低接口复杂度,减少函数间接口的复杂度(280) 分别说明extern、static、auto变量的作用域范围。
一、填空题20%1、定义int** a[3][4]; 则sizeof(a)为48 。
2、一个完整的编译过程,可分为3个阶段,分别为:编译预处理、编译、链接。
3、内存泄露是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。
一般我们常说的内存泄漏是指堆内存的泄漏。
4、对于大印第安序(大端)的机器,数据的低字节存放在高地址。
5、在32位系统中,有一个指向某结构体的指针pFunc,其所占内存大小为 4 字节。
6、断言(Assert)是个只有定义了DEBUG 才起作用的宏,如果其参数的计算结果为假(真、假),则中止调用程序的执行。
7、定义一个指向数组的指针pa,该数组具有10个元素,且元素的类型为int。
int (*pa)[10] 。
二、判断题10%1、int型变量占用的数据长度一定是32位。
(×)2、extern关键字用于声明本文件所使用的变量(或函数)在其他文件中定义。
(√)3、void指针也是可以进行自加运算的。
(×)4、对于具有成千上万个源程序的工程,如果修改了其中一个头文件,则需要对所有的源文件进行重新编译。
(×)5、程序员除了可以在全局数据区(静态区)、堆栈上获得存储空间,还可以在中断向量区随意获取存储空间。
(×)6、在差错处理时,忘了释放已分配的动态存储空间,容易造成内存泄露。
(√)7、在中断服务程序(ISR)中,要格外小心浮点运算的处理,有可能带来执行速度的不确定性。
(√)8、程序员无法对分配在寄存器中的临时变量进行访问。
(×)9、volatile可以用于修饰用以访问硬件寄存器的指针。
(√)10、函数指针可以用于实现底层驱动的接口。
(√)三、简答题30%1、请简述小端字节序和大端字节序的区别?字节序是否会对程序的可移植性造成影响?(5分)书P132、什么是函数的重入?有哪些情况会造成函数的重入?(5分)函数执行一半时被打断了,在中断处理中又进入了该函数。
编者按:非常基本的C语言问题, 一个信息类(计算机,资讯工程,电子工程, 通信工程)专业的本科毕业生应该达到的水平。
题目不难,全部都能快速地答完, 当然也需要一定的知识储备。
对于大多数人, 我们预期你可能答错3) 4) 15)题, 所以答错3道以内的, 我们认为你很棒。
答错5道题以内, 我们认为你还不错(你还可能答错第9题)。
如果你有6道以上的题目不能答对,基本上我们都不好说什么了....约定:1) 下面的测试题中, 认为所有必须的头文件都已经正确的包含了2) 数据类型char 一个字节1 byteint 两个字节2 byte (16位系统, 认为整型是2个字节)long int 四个字节4 bytefloat 四个字节4 byetdouble 八个字节8 bytelong double 十个字节10 bytepointer 两个字节2 byte(注意, 16位系统, 地址总线只有16位)第1题:考查对volatile关键字的认识#include<setjmp.h>static jmp_buf buf;main(){volatileint b;b=3;if(setjmp(buf)!=0){printf("%d", b);exit(0);}b=5;longjmp(buf ,1);}请问, 这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:考查类型转换main(){struct node{int a;int b;int c;};struct node s= {3,5,6 };struct node*pt=&s;printf("%d" , *(int*)pt);}这段程序的输出是:(a) 3(b) 5(c) 6(d) 7第3题:考查递归调用int foo (int x ,int n){int val;val=1;if (n>0){if (n%2==1) val= val*x;val= val* foo(x*x , n/2);}return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂)(b) x*n(x与n的乘积)(c) n^x(n的x次幂)(d) 以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人main(){int a[5]= {1,2,3,4,5};int*ptr= (int*)(&a+1);printf("%d %d" ,*(a+1),*(ptr-1));}这段程序的输出是:(a) 2 2(b) 2 1(c) 2 5(d) 以上均不是第5题:考查**数组与指针void foo(int [][3]);main(){int a [3][3]= { {1,2,3} , {4,5,6},{7,8,9}};foo(a);printf("%d" , a[2][1]);}void foo(int b[][3]){++ b;b[1][1]=9;}这段程序的输出是:(a) 8(b) 9(c) 7(d)以上均不对第6题:考查逗号表达式main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3(b) c=5 d=3(c) c=3 d=5(d) c=5 d=5第7题:考查指针数组main(){int a[][3]= {1,2,3 ,4,5,6};int (*ptr)[3]= a;printf("%d %d", (*ptr)[1], (*ptr)[2]);++ptr;printf("%d %d" , (*ptr)[1], (*ptr)[2]); }这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(c) 4 5 0 0(d) 以上均不对第8题:考查函数指针int*f1(void){return(&x);}int*f2(void){int*ptr;*ptr=10;return ptr;}int*f3(void){int*ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f3第9题:考查自加操作(++)main(){int i=3;int j;j=sizeof(++i+++i);printf("i=%d j=%d", i ,j);}这段程序的输出是:(b) i=3 j=2(c) i=3 j=4(d) i=3 j=6第10题:考查形式参数, 实际参数, 指针和数组void f1(int*,int);void f2(int*,int);void(*p[2]) (int*,int);main(){int a;int b;p[0]= f1;p[1]= f2;a=3;b=5;p[0](&a, b);printf("%d\t %d\t", a, b);p[1](&a, b);printf("%d\t %d\t", a, b);}void f1(int* p ,int q){int tmp;tmp=*p;*p= q;q= tmp;}void f2(int* p ,int q){int tmp;*p= q;q= tmp;}这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3 5 3(d) 3 3 3 3第11题:考查自减操作(--)void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d", n);e(--n);}}这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针, 该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:数组与指针的区别与联系main(){char p;char buf[10]={1,2,3,4,5,6,9,8};p= (buf+1)[5];printf("%d" , p);}这段程序的输出是:(a) 5(b) 6(c) 9(d) 以上都不对第14题:考查指针数组的指针void f(char**);main(){char* argv[]= {"ab" ,"cd" ,"ef" ,"gh","ij" ,"kl" };f( argv );}void f(char**p ){char* t;t= (p+=sizeof(int))[-1];printf("%s" , t);}这段程序的输出是:(a) ab(b) cd(c) ef(d) gh第15题:此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会情有可原#include<stdarg.h>int ripple (int , );main(){int num;num= ripple (3,5,7);printf("%d" , num);}int ripple (int n, ){int i , j;int k;va_list p;k=0;j=1;va_start(p, n);for (; j<n;++j){i= va_arg(p ,int);for (; i; i&=i-1 )++k;}return k;}这段程序的输出是:(a) 7(b) 6(c) 5(d) 3第16题:考查静态变量的知识int counter (int i){staticint count=0;count= count+i;return (count );}main(){int i , j;for (i=0; i<=5; i++)j= counter(i);}本程序执行到最后,j的值是:(a) 10(b) 15(c) 6(d) 7详细参考答案第1题: (b)volatile字面意思是易于挥发的。
9.1 填空题(768) 下面程序的输出是_____,为什么?char *ptr;if ((ptr = (char *)malloc(0)) == NULL){puts("Got a null pointer");}else{puts("Got a valid pointer");}(769) 以下程序运行后的输出结果是______ 。
main(){char m;m='B'+32; printf("%c\n",m);}已有定义如下:struct node{int data;struct node *next;} *p;以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。
请填空。
p = (struct node *)malloc(________);(770) 在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。
unsigned char *p = (unsigned char *)0xF000FF00;*p = ‘a’;9.2 问答与设计(771) 对下面程序段进行解释:typedef void (*lpFunction)();lpFunction lpReset = (lpFunction)0xF000FFF0;lpReset();(772) 结合编译优化原理,指出下面程序存在的问题并修改。
int a,b,c;a = inWord(0x100); // 读取I/O空间0x100端口的内容存入a变量b = a;a = inWord (0x100); // 再次读取I/O空间0x100端口的内容存入a变量c = a;(773) 以下为常见的内存错误,请分别给出解决措施:a. 内存分配未成功,却使用了它;b. 内存分配虽然成功,但是尚未初始化就引用它;c. 忘记了释放内存,造成内存泄露;d. 内存释放成功,却继续使用它。
GEC 嵌入式LINUX就业班入学测试题姓名:__________________ 报名班次:________________ 手机号码:_________________
1.对于一个正常运行的C程序,以下叙述中正确的是:
A)程序的执行总是从main函数开始。
B)程序的执行总是从程序的第一个函数开始。
C)程序的执行总是从最后一个函数开始。
D)程序的执行从哪个函数开始是不确定的。
2.设有定义:
int k = 0;
以下选项的四个表达式中,运算之后k的值不变的是:
A)k++; B) k += 1; C) ++k; D) k+1;
3.以下选项中,当x为大于1的奇数时,值为0的表达式:
A) x % 2 == 1 B) x / 2 C) x % 2 != 0 D) x % 2 == 0
4.以下叙述中正确的是:
A)break语句只能用于switch语句题中。
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环。
C)break 语句只能用在循环体内和switch语句体内。
D)在循环体内使用break语句和continue语句的作用相同。
5.有以下程序:
int main(void)
{
int k = 5, n = 0;
do {
swith( k)
{
case 1:
case 3: n += 1; break;
default: n = 0; k--;
case 2:
case 4: n += 2; k--; break;
}
printf(“%d”, n);
}while(k > 0 && n < 5);
}
程序运行之后的输出结果是:
A) 235 B) 0235 C) 02356 D) 2345
6.有以下程序:
int main(void)
{
char ch[ ] = “uvwxyz”;
char *p;
p = ch;
printf(“ %c ”, *(p + 5));
}
程序运行之后的输出结果是:
A) z B) 0 C) 元素ch[5]的地址D) 字符y的地址
7.分析下面的代码:
char *a = “hello”;
char *b = “hello”
if(a == b)
printf(“YES”);
else
printf(“NO”);
程序运行之后的输出结果是:
A) YES B) NO C) 跟编译器设置有关D) 程序有语法错误
8.下列叙述错误的是:
A)复合语句中定义的函数只在该复合语句中有效。
B)return( ) 语句中的括号内,可以是变量,常量或者有确定值的表达式。
C)形式参数也是局部变量。
D)主函数中定义的变量在整个程序中都是有效的。
9.假设有以下语句:
char *p[2] = {“abcd”, “ABCD”};
则下面说法正确的是:
A)p是一个数组,里面有2个元素,分别是两个指向“abcd”和“ABCD”的指针。
B)p是一个指针,指向一个包含了两个字符串的数组。
C)p[0]的值是字符串“abcd”的大小。
D)p[1]是一个一维数组,里面放了一个字符串“ABCD”。
10.设整型变量a为5,使b不为2的表达式是:
A) b = a/2; A) b = 6 - (--a); C) b = a % 2; D) b = a>3 ? 2 : 1
11.下面语句不正确的是:
A)int a[5];
B)char b[ ] = {…a‟, …b‟, …c‟};
C)int a[ ] = {2, 3, 4, 5};
D)char b[3 ][ ] = {1, 2, 3, 4, 5};
12.假如有如下定义:char c = 0; 则以下语句不正确的是:
A) c = …\n‟; A) c += 6; C) c = …A‟; D) c = “hello”;
13.以下说法正确是:
A)带参数的宏定义中的参数是有类型的。
B)宏展开将会占用程序的运行时间。
C)可以在一个逻辑行中写多条宏定义命令。
D)一般而言,函数的声明语句可以放在头文件中。
14.C语言中,switch语句后的括号中的表达式的值可以是:
A)整型。
B)整型,字符型,枚举型。
C)整型和字符型。
D)任何类型。
15.若函数的形参为一维数组,则下列说法正确的是:
A)调用时对应的实参必须是一个数组。
B)形参数组的元素个数必须多于实参数组的元素个数。
C)形参数组的元素个数必须等于实参数组的元素个数。
D)该形参实际上是一个指针。