c语言笔试题(答案)
- 格式:doc
- 大小:84.50 KB
- 文档页数:10
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语言笔试题目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语言笔试考试题及答案一、选择题1. 在C语言中,字符型数据使用的关键字是:A. charB. intC. floatD. double答案:A2. 下列标识符中合法的是:A. 123nameB. _nameC. name$D. %name答案:B3. 表达式"5 + 3 * 2 - 4 / 2"的值是:A. 9B. 12C. 10D. 8答案:C4. 下列哪个语句可以用于在屏幕上输出字符型变量c的值:A. printf("%c", c);B. printf("%d", c);C. printf("%s", c);D. printf("%f", c);答案:A5. 下列哪个语句可以用于从键盘输入整型变量a的值:A. scanf("%d", a);B. scanf("%f", &a);C. scanf("%s", a);D. scanf("%c", &a);答案:B二、编程题1. 编写一个程序,输入一个整数n,计算并输出n的阶乘。
答案:```c#include <stdio.h>int main() {int n, i;long long factorial = 1;printf("请输入一个整数:");scanf("%d", &n);for (i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘为:%lld\n", n, factorial);return 0;}```2. 编写一个程序,输入一个整数n,判断并输出n是否为素数。
答案:```c#include <stdio.h>int isPrime(int num) {int i;if (num <= 1) {return 0;}for (i = 2; i <= num / 2; i++) { if (num % i == 0) {return 0;}}return 1;}int main() {int n;printf("请输入一个整数:"); scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n); } else {printf("%d不是素数\n", n); }return 0;}```三、简答题1. C语言中的指针有什么作用?答案:指针在C语言中用于直接访问内存地址,可以提高程序的执行效率和灵活性。
c语言笔试考试题及答案C语言笔试考试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. floatC. doubleD. string答案:A2. C语言中,int类型变量的默认初始值是多少?A. 0B. 1C. -1D. 随机值答案:A3. 以下哪个是正确的C语言函数声明?A. int function(int a, int b)B. void function(int a, int b)C. int function(int a, int b) {}D. int function(int a, int b) {return a + b;}答案:B4. 在C语言中,哪个运算符用于求两个数的余数?A. /B. %C. *D. -答案:B5. 下列哪个是C语言中正确的数组声明?A. int array[10];B. int array = 10;C. int array(10);D. int [10] array;答案:A6. C语言中,哪个语句用于结束程序的执行?A. break;B. continue;C. return;D. exit;答案:C7. 在C语言中,哪个函数用于计算两个数的和?A. sum(int a, int b)B. add(int a, int b)C. plus(int a, int b)D. None of the above答案:D8. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. methodD. void答案:A9. 下列哪个选项是C语言中的控制流语句?A. ifB. switchC. caseD. All of the above答案:D10. 在C语言中,哪个语句用于实现循环?A. forB. whileC. do-whileD. All of the above答案:D二、填空题(每空2分,共20分)1. 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语言笔试题(答案)笔试题一、填空题(每个空4分,共28分)1)struct tagABC{char name[10];char sex;long sno;float score[4];}*pAbc;(四字节对齐)pAbc=NULL;那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8)int *p1,*p2;int value;p1=(int*)0×400;p2=(int*)0×408;value = p2-p1;3)如下代码,printf的结果为(2)#include〈stdio.h〉#include〈string.h〉void main(void){char acNew[20]= “\\0\0”;printf(“%d\n”,strlen(acNew));}4) 有如下程序段,运行该程序的输出结果是(33)main (){int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA{Unsigned char ucId:1;Unsigned char ucPara0:2;Unsigned char ucState:6;Unsigned char ucTail:4;Unsigned char ucAvail;Unsigned char unTail2:4;Unsigned long ulData;}AAA_S问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )二、选择题(每题2分,共34分)1)若有说明int(*p)[3];以下叙述正确的是( D )A:p是指针数组B:(*p)[3]和*p[3]等价C:p是指向一维数组中任何一个元素的指针D:p是指向含有3个整型元素的一维数组的指针2)以下关于单元测试的描述,哪些是对的?(D)A:黑盒测试针对软件的功能,不考虑功能的实现细节;B:白盒测试针对源代码的测试,从程序功能的具体实现上找错;C:路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到;D:条件覆盖是百盒测试的一种方法, 编写测试用例使程序的每个判断的各种情况都能到3)以下可以用于任务间通信的有(ABCD)A:共享内存 B:信号量C:消息队列和管道 D:socket调用4)有关结构,以下哪些描述是对的?(BC)A:为了测试方便,尽量把一个结构的功能设计得多一些B:不同结构间的关系不要过于复杂C:结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中D:结构中元素的布局与排列顺序可以随意设计5)关于强制类型转化,下面说法正确的是(ABCD)A:当目的结构的空间大于源结构的空间时,要重点关注内存访问超过源结构范围的情形,可能越界;B:当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构范围的情形,可能遗漏;C:结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的; D:与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎;6)正确的使用assert,软件系统不会对人为原因造成的错误进行处理。
安徽省c语言笔试试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,错误的是()。
A. 变量必须先定义后使用B. 变量的类型决定了变量的存储空间C. 变量的值在定义时必须初始化D. 变量的命名必须符合标识符的规则答案:C2. C语言中,用于定义一个结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A3. 在C语言中,以下哪个选项不是合法的整型常量?A. 0x1AB. 0123C. 1.2E3D. 0b1010答案:C4. 以下哪个函数不能正确地将字符串s复制到字符串t中?A. strcpy(t, s)B. strncpy(t, s, sizeof(t))C. strcat(t, s)D. strncat(t, s, sizeof(t))答案:C5. 在C语言中,以下哪个选项是正确的文件打开模式?A. "r+"B. "w"C. "a+"D. "rb"答案:A6. 下列关于C语言中数组的描述,正确的是()。
A. 数组的索引从1开始B. 数组的大小在定义时确定C. 数组可以存储不同类型的数据D. 数组可以动态分配大小答案:B7. 在C语言中,下列哪个关键字用于定义函数?A. intB. voidC. returnD. struct答案:A8. 以下哪个选项不是C语言中的控制语句?B. forC. whileD. switch答案:D9. C语言中,以下哪个选项是正确的指针声明?A. int *p;B. int *p = 0;C. int *p = 10;D. int *p = "hello";答案:A10. 在C语言中,以下哪个选项是正确的注释?A. // This is a single line commentB. /* This is a single line comment */C. /* This is a multi-line commentD. // This is a multi-line comment答案:A二、填空题(每题2分,共20分)1. 在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语言笔试题及答案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语言笔试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言函数的描述,正确的是:A. 函数必须有返回值B. 函数可以没有返回值C. 函数必须有参数D. 函数不能有参数答案:B3. 在C语言中,以下哪个运算符用于比较两个值是否不相等?A. ==B. !=C. <=D. >=答案:B4. 下列关于数组的描述,错误的是:A. 数组的元素必须是同一数据类型B. 数组可以是多维的C. 数组的大小在编译时确定D. 数组的大小在运行时确定答案:D5. 在C语言中,以下哪个关键字用于定义一个指针?A. intB. charC. floatD. *答案:D6. 下列关于C语言中变量作用域的描述,正确的是:A. 局部变量只能在函数内部使用B. 全局变量只能在函数外部使用C. 局部变量可以在函数外部使用D. 全局变量可以在函数内部使用答案:A7. 在C语言中,以下哪个关键字用于定义一个枚举?A. enumB. structC. unionD. typedef答案:A8. 下列关于C语言中指针的描述,错误的是:A. 指针可以存储地址B. 指针可以存储值C. 指针可以作为函数的参数D. 指针不能作为函数的返回值答案:D9. 在C语言中,以下哪个关键字用于定义一个联合体?A. structB. unionC. enumD. typedef答案:B10. 下列关于C语言中循环的描述,正确的是:A. for循环不能嵌套B. while循环不能嵌套C. do-while循环不能嵌套D. 以上都是错误的答案:D二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 如果要定义一个指向整型变量的指针,应该使用________。
笔试题一、填空题(每个空4分,共28分)1)struct tagABC{char name[10];char sex;long sno;float score[4];}*pAbc;(四字节对齐)pAbc=NULL;那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8)int *p1,*p2;int value;p1=(int*)0×400;p2=(int*)0×408;value = p2-p1;3)如下代码,printf的结果为(2)#include〈stdio.h〉#include〈string.h〉void main(void){char acNew[20]= “\\0\0”;printf(“%d\n”,strlen(acNew));}4) 有如下程序段,运行该程序的输出结果是(33)main (){int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA{Unsigned char ucId:1;Unsigned char ucPara0:2;Unsigned char ucState:6;Unsigned char ucTail:4;Unsigned char ucAvail;Unsigned char unTail2:4;Unsigned long ulData;}AAA_S问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )二、选择题(每题2分,共34分)1)若有说明int(*p)[3];以下叙述正确的是( D )A:p是指针数组B:(*p)[3]和*p[3]等价C:p是指向一维数组中任何一个元素的指针D:p是指向含有3个整型元素的一维数组的指针2)以下关于单元测试的描述,哪些是对的?(D)A:黑盒测试针对软件的功能,不考虑功能的实现细节;B:白盒测试针对源代码的测试,从程序功能的具体实现上找错;C:路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到;D:条件覆盖是百盒测试的一种方法, 编写测试用例使程序的每个判断的各种情况都能到3)以下可以用于任务间通信的有(ABCD)A:共享内存 B:信号量C:消息队列和管道 D:socket调用4)有关结构,以下哪些描述是对的?(BC)A:为了测试方便,尽量把一个结构的功能设计得多一些B:不同结构间的关系不要过于复杂C:结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中D:结构中元素的布局与排列顺序可以随意设计5)关于强制类型转化,下面说法正确的是(ABCD)A:当目的结构的空间大于源结构的空间时,要重点关注内存访问超过源结构范围的情形,可能越界;B:当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构范围的情形,可能遗漏;C:结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的; D:与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎;6)正确的使用assert,软件系统不会对人为原因造成的错误进行处理。
它有利于(A BCD) A:缺陷及早暴露,加快定位进程;B:明确表示函数接口或算法逻辑的校验关系,增强软件代码的可读性;C:去除不必要的容错处理,简化代码处理流程,降低软件处理复杂度;D:强化编程接口之间的契约,增强软件的可维护性;7)对于循环体的执行效率,下述说法正确的是(ABCD )A:循环体内工作量最小化B:在多重循环中,应将最忙的循环放在最内层C:尽量减少循环的嵌套层次D:避免在循环体内做无谓的判断语句,将循环语句置于判读语句的代码块之中8)设数组a[5]={10,20,30,40,50};已知指针p指向a[1];则表达式*++p的值是(A)A.20B.21C.30D.319)有以下程序段, 执行后,mul的值为(B)int a[ ]={1,3,5,7,9};int mul, *data, x;mul=1;data=&a[1];for(x=0; x<3; x++)mul *= *(data+x);A.15B.105C.315D.94510)有以下程序段,执行后的结果为(D)int list[ ]={6,7,8,9,10};int * p;p=list;*(p+2)=10;printf(”%d, %d\n”,*p,*(p+2));A.8, 10B.6, 8C.7, 9D.6, 1011)以下语句不能正确赋值的是(A)A.char s1[10]; s1=”China”;B.char s2[ ]={ ’C’,’h’,’i’,’n’,’a’};C.char s3[20]=”China”;D.char *s=”China”;12)C语言中,定义PI为一个符号常量,正确的是(A)A.#define PI 3.14B.define PI 3.14C.#include PI 3.14D.include PI 3.1413)有以下程序,该程序输出的结果为(B)#define N 3#define M N+2#define NUM 2*M+1main(){int i;i=NUM;printf(”%d\n”,i);}A.11 、B.9C.7D.514)有以下程序,程序运行后的输出结果是(D )#include <string.h>#include <stdio.h>main(){ char *p=“abcde\0fghjik\0”;printf(“%d\n” , strlen(p)); }A.12B.15C.6D.515)为了比较两个字符串s1和s2是否相等,应当使用( C )A.if(s1=s2)B.if(s1==s2)C.if(strcmp(s1, s2)==0)D.if(strcmp(&s1, &s2)==0)16)设有如下结构定义:struct student{ int num;char name[20];char sex;int age;char addr[30];} stud;若用printf(“%s\n”,…)访问该结构中name值的正确方法是(D )A.stud->nameB.&C.stud.&nameD.17)想对一个文本文件的尾部追加写入,应当在fopen语句中使用的文件操作方式指示符号为(D )A.wB.rC.wbD.a三、指出下列程序的错误(每题4分,共20分)1).如下程序用于输出"Welcome Home"。
请指出其中的错误:(4分)void Test(void){char pcArray[12];strcpy(pcArray,"Welcome Home");printf("%s!", pcArray);return;}答案:数组越界。
2).如下程序用于把"blue"字符串返回,请指出其中的错误:(4分)char *GetBLUE(void){char* pcColor ;char* pcNewColor;pcColor = "blue";pcNewColor = (char*)malloc(strlen(pColor));if(NULL == pcNewColor){return NULL;}strcpy(pcNewColor, pcColor);return pcNewColor;}答案:申请内存空间不足,字符串结尾还有'\0'。
3).下面程序期望输出str = hello world,请指出其中的错误:(4分)char * GetStr(char *p){p = "hello world";return p;}void main(){char *str = NULL;if(NULL != GetStr(str)){printf("\r\n str = %s",str);}return;}答案:无法返回字符串,参数使用错误。
4).请指出下面程序错误的地方:(4分)#define BUFFER_SIZE 256void Test(void){char *str = NULL;str = (char *)malloc(BUFFER_SIZE);if(NULL == str){return;}strcpy(str, "hello");free(str);if(NULL != str){strcpy(str, "world");printf(str);}return;}答案:引用了已经释放的内存。
5).请指出下面程序的错误:(4分)void GetMemory(char **ppcChar, int iLength) {if(NULL == ppcChar){return;}*ppcChar = (char *)malloc(iLength);return;}void Test(void){char *szStr = NULL;GetMemory(&szStr, 100);if(NULL != szStr){strcpy(szStr, "hello");printf(szStr);}return;}答案:没有释放内存。
四、简答题(每题4分,共8分)1)写宏定义MAX,求出两个数中的较大者。
(4分)答案: #defined MAX(A,B) ((A)>=(B)?(A):(B) )2) 画出同下面多叉树等价的二叉树,并作说明。
(4分)答案如下:(采用树的孩子兄弟法将树转换成二叉树)五、编程题(共10分)1)给一个单链表,删除某一节点(要求:先找到是否有这个节点,然后再删除,要能保证程序运行正确)(10分)参考解法如下:include<iostream.h>#include<malloc.h>#include<stdio.h>#include<conio.h>typedef struct linkqueue1{int data;struct linkqueue1 *next;}linkqueue1,linklist;linklist *creat(void) //建立链表{linklist *head;int n=1,len;linklist *p1,*p2;cout<<"input number of records:"<<endl;cin>>len;head=p1=p2=(linklist *)malloc(sizeof(linklist));cout<<"input records:"<<endl;cin>>p1->data;head->next=NULL;while(n++<=len-1){p1=(linklist *)malloc(sizeof(linklist));cin>>p1->data;p2->next=p1;p2=p1;p2->next=NULL;}return (head);}void outlink(linklist *head){linklist *p;p=head;while(p){cout<<p->data<<" ";p=p->next;}}int bianli(linklist *head, int Number) //遍历链表,返回1说明有要删除的元素,反之。