C语言19笔试题含答案
C语言笔试题带答案

一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)在数据结构中,从逻辑上可以把数据结构分为_______。
A)动态结构和静态结构B)紧凑结构和非紧凑结构C)线性结构和非线性结构D)内部结构和外部结构答案:C评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。
(2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。
A)1,4,3,2 B)2,3,4,lC)3,1,4,2 D)3,4, 2,1答案:C评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。
(3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。
A)希尔排序B)冒泡排序C)插入排序D)选择排序答案:A评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。
(4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。
A)2 B)3 C)4 D)5答案:C评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。
本题中,与ll 比较的关键码分别为15,8,10,12四个。
(5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。
A)n-1 B)n C)n+l D)2n答案:C评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
c语言考试笔试题及答案详解

c语言考试笔试题及答案详解一、选择题(每题2分,共20分)1. C语言中用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言中数组的描述,错误的是:A. 数组必须在编译时确定大小B. 数组可以是多维的C. 数组的元素必须是同一类型D. 数组可以动态分配答案:D3. 在C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strncpyD. strcmp答案:A4. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ::D. ||答案:C5. C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:C6. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. caseD. for答案:C7. 在C语言中,用于声明一个指针的语法是:A. int *p;B. int p*;C. int *p = 0;D. int *p = p;答案:A8. C语言中,用于定义一个枚举类型的关键字是:A. enumB. typedefC. unionD. struct答案:A9. 下列关于C语言中指针的描述,错误的是:A. 指针可以指向任何类型的数据B. 指针可以作为函数的参数C. 指针可以作为函数的返回值D. 指针可以存储函数的地址答案:D10. C语言中,用于定义一个联合体的关键字是:A. structB. unionC. enumD. typedef答案:B二、填空题(每题3分,共15分)1. 在C语言中,使用________关键字可以定义一个变量的存储类型为静态存储。
答案:static2. C语言中,使用________运算符可以计算两个整数的和。
答案:+3. 在C语言中,使用________关键字可以定义一个函数的返回类型为无返回值。
c笔试题目及答案

c笔试题目及答案1. 题目:以下哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable-2答案:C2. 题目:以下哪个关键字用于定义一个函数?A. classB. functionC. defD. int答案:D3. 题目:C语言中,哪个运算符用于将变量的值增加1?A. +=B. --C. +=D. ++答案:D4. 题目:以下哪个选项是C语言中的合法数组声明?A. int arr[10];B. int arr[];C. int arr[10] = {0};D. All of the above答案:D5. 题目:C语言中,哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. count()答案:A6. 题目:以下哪个选项是C语言中正确的注释方式?A. // This is a single line commentB. /* This is a single line comment */C. // This is a single line comment/* This is a multi-line comment */D. All of the above答案:D7. 题目:C语言中,哪个关键字用于定义一个结构体?A. structB. classC. unionD. enum答案:A8. 题目:以下哪个选项是C语言中正确的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include <stdio.h>#include "stdio.h"D. All of the above答案:A9. 题目:以下哪个选项是C语言中正确的条件语句?A. if (condition)B. switch (condition)C. case (condition)D. All of the above答案:A10. 题目:C语言中,哪个关键字用于定义一个指针?A. pointerB. ptrC. *D. reference答案:C。
100条经典C语言笔试题目(全)

100条经典C语言笔试题目1、请填写bool,float,指针变量与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0,FALSE 或者“空指针”。
例如int变量n与“零值”比较的if语句为:if ( n == 0 )if ( n != 0 )以此类推。
(1)请写出 bool flag 与“零值”比较的 if 语句:【标准答案】if ( flag )if ( !flag )(2)请写出 float x 与“零值”比较的 if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
(3)请写出 char *p 与“零值”比较的 if 语句【标准答案】 if (p == NULL)if (p != NULL)2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。
char str[] = “Hello” ;char *p = str ;int n = 10;请计算(1)sizeof (str ) =(2)sizeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4、(3)4(4)void Func ( char str[100]) {……;} 请计算 sizeof( str ) = (5)void *p = malloc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)43、 long a=0x801010;a+5=?【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。
4、用变量a给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针 ;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20.data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。
C笔试题目及答案c语言笔试题目及答案

C笔试题目及答案c语言笔试题目及答案c笔试题目及答案:c语言笔试题目及答案c笔试题目汇总篇11.谋下面函数的返回值(谷歌)intfunc(x){intcountx=0;while(x){countx++;x=x&(x-1);}returncountx;}假定x=。
答案:8思路:将x转变为2十进制,看看所含的1的个数。
2.什么是“引用”?申明和使用“引用”要注意哪些问题?请问:提及就是某个目标变量的“别称”(alias),对应用领域的操作方式与对变量轻易操作方式效果完全相同。
言明一个提及的时候,切勿必须对其展开初始化。
提及声明完后,相等于目标局部变量存有两个名称,即为该目标原名称和提及名,无法再把该提及名做为其他局部变量的别称。
声明一个提及,不是崭新定义了一个变量,它只则表示该提及名就是目标局部变量的一个别称,它本身不是一种数据类型,因此提及本身不占到存储单元,系统也不给提及分配存储单元。
无法创建数组的提及。
3.将“引用”作为函数参数有哪些特点?(1)传达提及给函数与传达指针的效果就是一样的。
这时,被调函数的形参就沦为原来主调函数中的实参变量或对象的一个别称去采用,所以在被调函数中对形参变量的操作方式就是对其适当的目标对象(在主调函数中)的操作方式。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。
因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)采用指针做为函数的参数虽然也能够达至与采用提及的效果,但是,在被调函数中同样必须给形参分配存储单元,且须要重复使用"*指针局部变量"的形式展开运算,这很难产生错误且程序的写作性极差;另一方面,在主调函数的调用点处,必须用变量的地址做为实参。
c语言编写函数笔试题及答案

c语言编写函数笔试题及答案C语言编写函数笔试题及答案1. 题目一:计算阶乘编写一个函数,计算并返回一个整数的阶乘。
阶乘定义为:n! = n * (n-1) * (n-2) * ... * 1,其中n! = 1,当n=0。
函数原型:```clong long factorial(int n);```答案:```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d is %lld\n", num, factorial(num)); return 0;}```2. 题目二:字符串反转编写一个函数,接受一个字符串作为参数,将其反转并返回。
函数原型:```cchar* reverseString(char* str);```答案:```c#include <stdio.h>#include <string.h>char* reverseString(char* str) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}return str;}int main() {char str[] = "Hello, World!";printf("Reversed string: %s\n", reverseString(str));return 0;}```3. 题目三:寻找数组中的最大值编写一个函数,接受一个整数数组和数组的长度作为参数,返回数组中的最大值。
软通动力c语言笔试题及答案
软通动力c语言笔试题及答案软通动力C语言笔试题及答案1. 编写一个C语言程序,实现以下功能:- 输入一个整数n。
- 计算并输出从1到n的所有整数的和。
答案:```c#include <stdio.h>int main() {int n, sum = 0;printf("请输入一个整数:");scanf("%d", &n);for (int i = 1; i <= n; i++) {sum += i;}printf("从1到%d的和是:%d\n", n, sum);return 0;}```2. 已知一个数组,包含10个整数,请编写一个C语言程序,实现以下功能:- 找出数组中的最大值和最小值。
- 计算数组中所有元素的平均值。
```c#include <stdio.h>int main() {int arr[10] = {23, 45, 67, 89, 12, 34, 56, 78, 90, 10}; int max = arr[0], min = arr[0];double sum = 0, average;for (int i = 0; i < 10; i++) {sum += arr[i];if (arr[i] > max) {max = arr[i];}if (arr[i] < min) {min = arr[i];}}average = sum / 10;printf("数组中的最大值是:%d\n", max);printf("数组中的最小值是:%d\n", min);printf("数组中所有元素的平均值是:%.2f\n", average);return 0;}```3. 编写一个C语言程序,实现以下功能:- 输入一个字符串。
c语言笔试期末考试试题及答案
c语言笔试期末考试试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个选项是正确的整型常量?A. 0x12LB. 0x12.3C. 0x12.3LD. 0x12.3E答案:A2. 下列哪个函数不能正确计算数组元素的平均值?A. int average(int arr[], int n) { int sum = 0, i; for(i = 0; i < n; i++) sum += arr[i]; return sum / n; }B. float average(int arr[], int n) { float sum = 0.0, i; for(i = 0; i < n; i++) sum += arr[i]; return sum / n; }C. double average(int arr[], int n) { double sum = 0.0, i; for(i = 0;i < n; i++) sum += arr[i]; return sum / n; }D. float average(int arr[], int n) { int sum = 0, i; for(i = 0; i < n; i++) sum += arr[i]; return (float)sum / n; }答案:B3. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[] = 'Hello';C. char str[] = "Hello", str[6];D. char str[6] = "Hello";答案:A4. 以下哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable-name答案:B5. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][4];B. int array[][];C. int array[3][];D. int array[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};答案:A6. C语言中,以下哪个选项是正确的函数声明?A. int func(int a, int b);B. int func();C. int func(int a, int);D. int func(int, int b);答案:A7. 在C语言中,以下哪个选项是正确的结构体声明?A. struct Student { int id; char name[20]; };B. struct { int id; char name[20]; } Student;C. struct Student { int id; struct { char name[20]; } };D. struct Student { int id; char name; };答案:A8. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color { Red, Green, Blue };B. enum Color { Red = 1, Green = 2, Blue = 3 };C. enum { Red, Green, Blue };D. enum Color { Red = 1, Green = 3, Blue };答案:A9. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. #define PI 3.14159,C. #define PI 3.14159D. #define PI 3.14159;答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr[];C. int (*ptr)[];D. int (*ptr)();答案:A二、填空题(每题2分,共20分)11. C语言中,字符型数据在内存中以___________形式存储。
C_C语言笔试面试题目含答案
C语言试题一:单项选择题1.void Example(char acHello[]){printf("%d", sizeof(acHello));return;}void main(){char acHello[] = "hello";Example(acHello);return;}的输出是( )A 4B 5C 6 D不确定2.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
( )A. 正确B.错误3. int *(*ptr)();则以下叙述中正确的是( )A) ptr是指向一维组数的指针变量B) ptr是指向int型数据的指针变量C) ptr是指向函数的指针,该函数返回一个int型数据D) ptr是指向函数的指针,该函数的返回值是指向int型数据的指针4.此函数实现把32位IP地址(网络序)以字符串的方式打印出来:char *IpAddr2Str(unsigned long ulIpAddr){char szIpAddr[32];unsigned long ulLocIpAddr = ntohl(ulIpAddr);d.%d.%d", ulLocIpAddr >> 24,(ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr & 0xff);return szIpAddr;}下面描述正确的是():A、数组szIpAddr空间不够;B、函数返回局部数组szIpAddr变量地址;C、输出的IP地址次序颠倒;5.#define OK 0#define ERR 1#define ERROR (-1)#define BUFFER_SIZE 256char *GetMemory(unsigned long ulSize){char *pcBuf = NULL;pcBuf = (char *)malloc(ulSize);if(NULL == pcBuf){return ERROR;}return pcBuf;}void Test(void){char *pszBuf = NULL;pszBuf = GetMemory(BUFFER_SIZE);if(NULL != pszBuf){strcpy(pszBuf, "Hello World!\r\n"); printf(pszBuf);free(pszBuf);}return;}如下描述正确的是:A、pszBuf指向的内存不能超过255B、GetMemory函数的异常分支返回了-1,是一个非法地址C、GetMemory中异常分支没有释放空间;D、pcBuf为局部指针,指向的内存将在GetMemory被调用后释放6、#include ""unsigned short *Sum(unsigned char a, unsigned char b){unsigned short s = 0;s = a + b;return &s;}int main(){unsigned short *p = NULL;unsigned char a = 1, b = 2;p = Sum(a, b);printf("%u+%u", a, b);printf("=%u\n", *p);return 0;}程序执行结果是()+2=0 +2=3 +2=NULL D.不可预测7、设有如下定义:BOOL gStatusA = FALSE;BOOL gStatusB = TRUE;int gVarA = 100;int gVarB = 100;则执行main函数后gVarA和gVarB的值分别为( )BOOL CheckA(){if(gStatusA){gVarA++;}else{gVarA--;return gStatusA;}BOOL CheckB(){if(gStatusB){gVarB++;}else{gVarB--;}return gStatusB;}int main(int argc, char* argv[]) {if(CheckA() && CheckB() ){printf(“Status OK”);}return 0;}A, 99和100 B, 99和101 C 99和99 D 101和998.下面的代码中,函数Test执行完毕后,希望输出无符号长整型的1。
C_C++语言笔试面试题目含答案
C_C++语言笔试面试题目含答案C语言语语一:语语语语语1.void Example(char acHello[]){printf("%d", sizeof(acHello));return;}void main(){char acHello[] = "hello";Example(acHello);return;}的语出是( )A 4B 5C 6 D不定确2.语上语语的字语序默语是大字语的~如果主机是小字语序~在语通信语语语语行字语序语语~如果主机是网网大字语序~语了程序的一致性及可移植性~最好也在程序中加上字语序语语的操作;空操作,。
()A. 正确B.语语3. int *(*ptr)();语以下述中正的是叙确( )A) ptr是指向一语语的指语语量数B) ptr是指向int型据的指语语量数C) ptr是指向函的指语数,语函返回一数个int型据数D) ptr是指向函的指语数,语函的返回语是指向数int型据的指语数4.此函语语把数32位IP地址(语序网)以字符串的方式打印出,来char*IpAddr2Str(unsigned long ulIpAddr){char szIpAddr[32];unsigned long ulLocIpAddr = ntohl(ulIpAddr);//把语序语语语主机序网(void)VOS_sprintf(szIpAddr, "%d.%d.%d.%d", ulLocIpAddr >> 24,(ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr & 0xff);return szIpAddr;}下面描述正的是;,,确A、语数szIpAddr空语不语~B、函返回局部语数数szIpAddr语量地址~C、语出的IP地址次序语倒~5.#define OK 0#define ERR 1#define ERROR (-1)#define BUFFER_SIZE256char *GetMemory(unsigned long ulSize){char *pcBuf = NULL;pcBuf = (char *)malloc(ulSize);if(NULL == pcBuf){return ERROR;}return pcBuf;}void Test(void){char *pszBuf = NULL;pszBuf = GetMemory(BUFFER_SIZE);if(NULL != pszBuf){strcpy(pszBuf, "Hello World!\r\n");printf(pszBuf);free(pszBuf);}return;}如下描述正的是,确A、pszBuf指向的存不能超语内255B、GetMemory函的常分支返回了数异-1~是一非法地址个C、GetMemory中常分支有语放空语~异没D、pcBuf语局部指语~指向的存在内将GetMemory被语用后语放6、#include "stdio.h"unsigned short *Sum(unsigned char a, unsigned char b){unsigned short s = 0;s = a + b;return &s;}int main(){unsigned short *p = NULL;unsigned char a = 1, b = 2;p = Sum(a, b);printf("%u+%u", a, b);printf("=%u\n", *p);return 0;}程序语行语果是;,A.1+2=0B.1+2=3C.1+2=NULLD.不可语语7、语有如下定语:BOOL gStatusA = FALSE;BOOL gStatusB = TRUE;int gVarA = 100;int gVarB = 100;语语行main函后数gVarA和gVarB的语分语语( )BOOL CheckA(){if(gStatusA){gVarA++;}else{gVarA--;}return gStatusA;}BOOL CheckB(){if(gStatusB){gVarB++;}else{gVarB--;}return gStatusB;}int main(int argc, char* argv[]) {if(CheckA() && CheckB() ){printf(“Status OK”);}return 0;}A, 99和100 B, 99和101 C 99和99 D 101和998.下面的代语中~函数Test 语行完语后~希望语出无符语整型的号1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19 二级(C与C++语言) 笔 试 试 卷 第一部分 软件技术基础 (共15分) 一、是非判断题(每小题1分,共10分) ( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B ) 1. 在目前,用于保证软件质量的主要手段是进行软件测试。 ( 1 ) 2. 使用DMA方式传送数据期间不需要CPU干预。 ( 2 ) 3. 线性顺序队列会产生“假溢出”,而线性循环队列则不会。 ( 3 ) 4. 对同一种算法,用高级语言编写的程序比用低级语言编写的程序运行速度快。 ( 4 ) 5. 在线性表中,数据的存储方式有顺序和链接两种。 ( 5 ) 6. 进程是由程序块、文件控制块和数据块三部分组成。 ( 6 ) 7. 在面向对象的程序设计中,派生类只能从一个基类产生。 ( 7 ) 8. 操作系统是用户和硬件的接口。 ( 8 ) 9. 个人计算机中可配置的最大内存容量受地址总线位数的限制。 ( 9 ) 10.软件维护中最困难的问题是软件配置不全。 ( 10 )
二、选择题(每小题1分,共5分) 1. 在排序法中,从未排序序列中依次取出元素,与已排序序列中的元素作比较, 将其放入已排序序列的正确位置称为 ( 11 )。 11 (A) 选择排序 (B) 快速排序 (C) 插入排序 (D) 冒泡排序 2. 有X、Y、Z三个元素依次入栈,不可能的出栈顺序是 ( 12 )。 12 (A) Z,Y,X (B) Z,X,Y (C) Y,X,Z (D) X,Y,Z 3. 进程的状态是可以转换的,而以下哪个状态转换是不可能的 ( 13 )。 13 (A) 就绪状态 执行状态 (B) 执行状态 就绪状态 (C) 阻塞状态 就绪状态 (D) 等待状态 执行状态 4. 线性链表的地址 ( 14 )。 14 (A) 必须连续 (B) 部分地址必须连续 (C) 一定不连续 (D) 连续与否均可以 5. 在软件测试中,( 15 )主要分析程序的内部结构。 15 (A) 白盒法 (B) 黑盒法 (C) 因果图法 (D) 错误推测法 第二部分 C与C++语言程序设计 (共85分) 一、单项选择题 ( 每小题1分,共10分 ) 1. 对下列程序段的描述正确的是 ( 16 )。 # include int Fun(int x,int y) { return x+y; } void main() { int i=10; cout<} 16 (A) 程序输入结果不确定 (B) 程序输出结果是20 (C) 程序输出结果是21 (D) 程序输出是22 2. 下列描述正确的是 ( 17 )。 17 (A) C++程序中cout时需要用到预处理命令 # include (B) C++程序必须有return语句 (C) C++程序中的变量必须定义在主程序内部 (D) C++程序中所有使用的符号常量可以不进行定义 3. 下述程序的输出结果是 ( 18 )。 # include void main() { int y=10; while(y--); printf("y=%d",y); } 18 (A) y=0 (B) y=1 (C) y=随机值 (D)y=-1 4. 若有以下说明: char *str1="copy",str2[20],*str3="str",*str4,*str5="good"; 则正确的串操作语句是 ( 19 )。 19 (A) strcpy(str4,str1); (B) strcat(str1,str3); (C) str2="new str"; (D) strcpy(str5,str3); 5.下面程序运行后,x,y,z的值分别为 ( 20 ) 。 # include void main() { int x=0,y=0,z=0; ++x||++y||++z; printf("%d%d%d\n",x,y,z); } 20 (A) 100 (B) 000 (C) 111 (D)001 6. 以下程序运行的结果是 ( 21 )。 # include union myun { struct { int x,y,z; } u; int k; }a; void main() { z.u.x=4; a.u.y=5; a.u.z=6; z.k=0; printf("%d %d %d\n", a.u.x, a.u.y, a.u.z); } 21 (A) 4 5 6 (B) 6 5 4 (C) 0 5 6 (D) 0 6 5 7. 关于C++和C语言学关系描述中,错误的是 ( 22 )。 22 (A) C语言与C++是兼容的 (B) C++对C语言进行了一些改进 (C) C语言是C++的一个子集 (D) C++和C语言都是面向对象的 8. 下列描述中,正确的是 ( 23 )。 23 (A) 子类可以继承其父类的所有属性和操作,但子类不能定义自己特有的属性和操作 (B) 消息传递是类与类之间通信的手段 (C) C++允许函数重载,但不允许运算符重载 (D) C++中可以定义虚函数,通过它来支持动态联编 9. 下面程序运行的结果是 ( 24 )。 # define f(x) 1+x+x*x # include void main() { int a=2,b=3; printf("%d\n",f(a+b)); } 24 (A) 17 (B) 31 (C) 13 (D) 7 10. 下面局部程序代码是C++中的 ( 25 ) 特性的表现。 void display(int var) { cout<} void display(char var) { cout<} void display(int var1,int var2) { cout<} 25 (A) 继承 (B) 重载 (C) 多态性 (D) 封装 二、读程序回答问题 ( 每个选择3分,共45分 ) 1. 有下列程序: # include int f(int m) { static int x[3]={2,3,4}; int i; for(i=0;i<3;i++) x[i]+=x[i]-m; for(i=0;i<3;i++) printf("%d,",x[i]); printf("\n"); return(x[m]); } void main() { int y=1; f(f(y)); } (1)第一次调用f函数的结果是( 26 )。 26 (A) 5,7,9, (B) 1,5,9, (C) 0,1,3, (D) 3,5,7, (2)第二次调用f函数的结果是( 27 )。 27 (A) 3,5,7, (B) 1,5,9, (C) 0,1,3, (D) 5,7,9, 2. 读下列程序,运行时输入:This is a book! # include int change(char *c,int fg) { if( *c==' ' ) L1: return 1; else if ( fg && *c<='z' && *c>='a') *c+='A'-'a'; return 0; } void main() { int flag=1; char ch; do { ch=getchar(); flag=change(&ch,flag); putchar(ch); }while(ch!='\n'); } (1) 程序的运行结果是( 28 )。 28 (A) THIS IS A BOOK! (B) this Is A Book! (C) This Is A Book! (D) This Is a Book! (2) 与L1:return 1等效描述的为( 29 )。 29 (A) return 0 (B) return –1 (C) return 1-1 (D) return !(-1) 3. 读下列程序,回答问题。( 28 )。 # include "iostream.h" int sb(int *s,int y) { static int i=3; y=s[i--]; return y; } void main() { int s[ ]={1,2,3,4}; int i,x=0; for(i=0;i<4;i++) { x=sb(s,x); cout<} cout<} (1) 程序结束后i的值为( 30 )。 30 (A) 4 (B) 0 (C) 2 (D) 1 (2) 该程序的输出结果是( 31 )。 31 (A) 1,2,3,4, (B) 2,3,4,1, (C) 3,4,1,2, (D) 4,3,2,1, 4. 读下列程序,回答问题。 # include "iostream.h" void main() { char *s="213142"; int a=0,b=0,c=0,d=0; int k; for(k=0;s[k];k++) switch(s[k]) { default : d++; case '1': a++; case '3': c++; case '2': b++; } cout<<"a="<} (1) 该程序运行结束时,k的值是( 32 )。 32 (A) 8 (B) 7 (C) 6 (D) 5 (2) 该程序的输出结果是( 33 )。 33 (A) a=4,b=5,c=4,d=1 (B) a=4,b=9,c=3,d=1