C语言基础部分笔试习题
- 格式:doc
- 大小:118.50 KB
- 文档页数:19
一、选择题(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语言概述一单项选择题1.一个C程序的执行是从( A )。
A、本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序的main函数结束2.以下叙述正确的是(C )。
A、在C程序中,main函数必须位于程序的最前面B) C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D) 在对一个C 程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是(D )。
A、一个C源程序可由一个或多个函数组成B) 一个C源程序必须包含一个main函数C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面4.C语言规定,在一个源程序中,main函数的位置( C )。
A、必须在最开始 B) 必须在系统调用的库函数的后面C) 可以任意 D) 必须在最后5.一个C语言源程序是由(B )。
A、一个主程序和若干子程序组成 B) 函数组成C) 若干过程组成 D) 若干子程序组成二填空题1.C源程序的基本单位是函数。
2.一个C源程序中至少应包括一个main函数。
3.在一个C源程序中,注释部分两侧的分界符分别为/* 和 */。
4.一个函数是由两部分组成的,它们分别是函数首部和函数体。
5.在C语言中,一个函数的函数体一般包括声明部分和执行部分。
6.在每个C语句和数据定义的最后必须有一个;。
7.C语言本身没有输入输出语句。
其输入输出是由函数来完成。
8.程序是指一组能使计算机识别和执行的指令,每一个指令都使计算机能够执行相应的操作。
9.源程序是指用高级语言编写的程序。
C源程序文件的扩展名为.c 。
10.目标程序是指计算机不能识别和执行高级语言程序,只能通过高编译系统将高级语言程序转化为二进制的目标程序。
目标程序文件的扩展名为.obj 。
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语言笔试考试题及答案一、选择题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语言笔试题目及答案1. 以下哪个选项是C语言中的关键字?A. intB. floatC. doubleD. all of the above答案:D2. 在C语言中,以下哪个数据类型用于存储字符?A. intB. charC. floatD. double答案:B3. C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. strcpy()D. strcmp()答案:A5. 以下哪个选项不是C语言中的控制结构?A. if-elseB. switch-caseC. forD. goto答案:B6. 在C语言中,以下哪个关键字用于定义函数?A. functionB. defC. voidD. int答案:C7. C语言中,以下哪个关键字用于定义指针?A. pointerB. ptrC. *D. ref答案:C8. 在C语言中,以下哪个函数用于将一个字符串复制到另一个字符串?A. strcpy()C. strlen()D. strcmp()答案:A9. C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A10. 在C语言中,以下哪个函数用于将一个字符串连接到另一个字符串?A. strcpy()B. strcat()C. strlen()D. strcmp()答案:B。
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语言笔试考试题及答案C语言笔试考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个是合法的变量名?A. 2variableB. variable-nameC. variable_nameD. variable$name答案:C2. 下列哪个选项是C语言的关键字?A. defineB. intC. integerD. float答案:B3. 以下哪个语句不能通过编译?A. int a = 10;B. int b = 10.5;C. int c = 'a';D. int d = 1.0;答案:B4. C语言中,以下哪个函数用于计算两个数的和?A. pow()B. sqrt()C. sin()D. sum()答案:D(注意:sum()不是C语言标准库函数,这里假设它是一个自定义函数)5. 以下哪个选项是正确的C语言数组声明?A. int numbers[];B. int numbers[10] = {};C. int numbers = 10;D. int [10] numbers;答案:B6. 以下哪个是C语言中正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello\nWorld"D. "Hello\"World"答案:A7. 在C语言中,以下哪个是正确的函数声明?A. void myFunction();B. int myFunction;C. myFunction();D. int myFunction()答案:A8. 下列哪个选项不是C语言的标准输入输出库函数?A. printf()B. scanf()C. cout()D. getchar()答案:C9. 在C语言中,以下哪个是正确的逻辑运算符?A. &&B. ||C. ||D. ++答案:A10. 下列哪个选项是C语言的预处理指令?A. #includeB. defineC. ifD. else答案:A二、简答题(每题5分,共20分)1. 请简述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个字节. 所以它的大小是20data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是20 + 32 = 52.当然...在某些16位编辑器下, int可能是2字节,那么结果是int2 + DATE10 + double8 = 20 6、请问以下代码有什么问题:int main(){char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;}【标准答案】没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。
c语言程序设计基础试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是C语言中的合法整数?A. 0x10B. 0X1GC. 08D. 0L答案:A3. 在C语言中,用于定义一个函数的关键字是?A. defineB. functionC. defD. void答案:B4. C语言中,以下哪个是正确的字符串定义?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A5. 在C语言中,以下哪个运算符用于求余?A. %B. /C. //D. %答案:A二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 如果一个函数没有返回值,应该使用________关键字声明。
答案:void3. 在C语言中,________运算符用于连接字符串。
答案:+4. C语言中,________运算符用于比较两个值是否相等。
答案:==5. 在C语言中,________关键字用于定义一个指针变量。
答案:*三、简答题(每题5分,共20分)1. 简述C语言中数组和指针的关系。
答案:在C语言中,数组名可以被当作指向数组第一个元素的指针。
数组的每个元素可以通过指针运算来访问。
2. 解释C语言中函数原型声明的作用。
答案:函数原型声明提供了函数的名称、返回类型和参数类型,但不需要函数体。
它允许在函数定义之前调用函数,同时帮助编译器检查函数调用的正确性。
3. 什么是C语言中的预处理指令,举例说明。
答案:预处理指令是C语言中的特殊命令,用于在编译之前处理源代码。
c语言程序与设计基础知识试题及答案一、单项选择题(每题2分,共20分)1. C语言中,用于定义结构体的关键字是:A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是C语言中的合法整型常量?A. 0x12B. 0123C. 0.12ED. 12e答案:A3. 在C语言中,用于定义数组的关键字是:A. arrayB. listC. vectorD. none of the above答案:D4. 下列哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B5. C语言中,用于文件操作的库函数是:A. stdio.hB. string.hC. math.hD. stdlib.h答案:A6. 下列关于指针的描述,错误的是:A. 指针可以存储变量的地址B. 指针可以存储一个值C. 指针可以作为函数的参数D. 指针可以作为函数的返回值答案:B7. 在C语言中,用于定义函数的关键字是:A. functionB. defineC. defD. void答案:D8. 下列哪个选项不是C语言中的控制结构?A. if-elseB. switch-caseC. forD. goto答案:D9. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. all of the above答案:D10. C语言中,用于定义枚举类型的关键字是:A. enumB. typedefC. structD. union答案:A二、填空题(每题2分,共10分)1. C语言中,用于定义一个名为“person”的结构体,包含姓名和年龄两个成员,正确的定义方式是:struct person { char name[50];int age; }。
答案:正确2. 在C语言中,使用________函数可以输出格式化的字符串到控制台。
第一章 C语言程序概述一、选择题。
1、C语言程序的基本单位是()A)函数 B)过程 C)子程序 D)子例程2、以下选项中正确的整型常量是()A)34.1 B) -80 C) 2,000 D)1 2 33、在C程序中,可以作为用户标识符的一组标识符是()A)void define WORD B) as_b3 _224 ElseC) Switch -wer case D) 4b DO SIG4、在TURBO C中,int类型变量所占的字节数是()A)1 B)2 C)3 D)45、以下选项中不正确的实型常量是()A)123E+1.5 B) 1e4 C)3.640E-1 D)0.356、以下选项中合法的C语言赋值语句是()A)a=b=34 B) a=34,b=34 C) --i; D) m=(int)(x+y);7、以下()是不正确的转义字符。
A)'\\' B) '\'' C) '020' D) '\0'8、以下所列的C语言常量中,错误的是 ( )A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’二、填空题。
1、用字符串的形式表示China____________。
2、C程序执行过程生成的3种文件及扩展名为_______,________,________。
3、C语言中的标识符只能由3种字符组成,他们是_______,_______和________。
第二章 C语言基本数据类型与表达式一、选择题。
1、在C语言中,要求参加运算的数必须是整数的运算符是()A)% B)/ C)! D)*2、若已定义x和y为 double类型,则表达式“x=1.0,y=x+3/2”的值是()A)1 B)2 C)2.0 D) 2.5-3、若变量已正确定义并赋值,符合C语言语法的表达式是()A)a=a+7; B) a=7+b+c,a++ C) int (12.3/4 ) D) a=a+7=c+b4、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为()(x+y)%2+(int)a/(int)bA)1.0 B)1 C) 2.0 D)25、若x和 n均是 int型变量,且 x的初值为12,n的初值为5 ,则执行下面表达式后x 的值为()x%=(n%=2)A) 0 B)1 C) 2 D)36、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()A)7 B)8 C)9 D)107、指出下列哪一个选项的程序是错误的()A)#include<stdio.h> B) #include<stdio.h>main( ) main( ){int x,y,z; {int x,y,z;x=0;y=x+1; x=0,y=x+1;z=x+y; z=x+y;} }C) #include<stdio.h> D) #include<stdio.h>main( ) main( ){int x,y,z; {int x,y,z;x=0;y=x+1, x=0,y=x+1;z=x+y; z=x+y,} }8、若a为整型变量,则以下语句( )a=-2L;printf(“%d\n”,a);A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2-9、若变量a,i已经正确定义,且i已正确赋值,则合法的语句是()A)i=int(a) B) ++i; C)a=a++=5; D) a=int(i);-10、若执行以下程序段后,c3的值为()int c1=1,c2=2,c3;c3=1.0/c2*c1;A)0 B)0.5 C)1 D)211、如下程序的运行结果是()#include<stdio.h>main( ){ int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A)3 4 B) 4 2 C) 4 3 D) 3 312、以下程序的输入结果为()main( ){int i=4,a;a=i++;printf(“a=%d,i=%d’,a,i);}A)a=4,i=4 B)a=5,i=4C)a=4,i=5 D)a=5,i=513、以下程序的输出结果是()#include <stdio.h>main( ){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b?(a>c?a:c):(b));}A) 5 B) 4 C) 6 D) 不确定14、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A)7 B)6 C)5 D)415、已知int i;float f;,正确的语句是()A)(int f)%i; B)int(f)%i; C) int(f%i); D)(int)f%i;16、已知 int j,i=1;执行语句j=-i++;后,j的值是()A)1 B)2 C)-1 D)-2-17、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是()A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=a*(a=3)18、C语言中运算对象必须是整型的运算符是 ( )A) %= B) / C) = D)〈=19、有以下程序main(){ int m=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是( )A)12353514 B)12353513 C)12343514 D)1234351320、有以下程序main( ){ int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是 ( )A)0256 0400 B)0256 256 C)256 400 D)400 400二、填空题1、若i为int整型变量且赋值为6,则运算i++后的表达式的值是______,变量i的值是_______。
C笔试题目及答案:c语言笔试题目及答案C 笔试题目汇总篇11.求下面函数的返回值( 微软)int func(x){int countx =0;while(x){countx ++;x = x&(x-1);}return countx;}假定x = 9999。
答案:8思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。
申明一个引用的时候,切记要对其进行初始化。
引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。
不能建立数组的引用。
3. 将“引用”作为函数参数有哪些特点?(1)传递引用给函数与传递指针的效果是一样的。
这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。
因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。
而引用更容易使用,更清晰。
4. 在什么时候需要使用“常引用”?如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
c语言笔试题目
以下是一些C语言笔试题目:
1. 什么是C语言?C语言有哪些特点?
2. C语言程序的基本结构是什么?
3. 什么是数据类型?C语言中有哪些常见的数据类型?
4. 什么是变量?变量在C语言中的作用是什么?
5. C语言中的运算符有哪些?它们的优先级和结合性是如何的?
6. 写出C语言中常用的控制结构,如if语句、for循环、while循环等。
7. 什么是函数?函数在C语言中的作用是什么?如何定义和调用函数?
8. 什么是数组?数组在C语言中的作用是什么?如何定义和初始化数组?
9. 什么是指针?指针在C语言中的作用是什么?如何定义和初始化指针?
10. 什么是结构体?结构体在C语言中的作用是什么?如何定义和初始化结构体?
11. C语言中如何进行文件操作,如文件的打开、读写和关闭等?
12. C语言中的内存管理是如何进行的?什么是动态内存分配和释放?
13. C语言中的位运算有哪些?它们的作用是什么?
14. C语言中的预处理器指令有哪些?它们的作用是什么?
15. C语言中的错误处理机制是如何的?如何进行错误处理?
以上是一些常见的C语言笔试题目,希望对你有所帮助。
基础的c语言程序试题及答案基础的C语言程序试题及答案1. 题目:编写一个C语言程序,计算并输出1到100之间所有奇数的和。
答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```2. 题目:编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除运算。
答案:```c#include <stdio.h>int main() {double num1, num2;char operator;double result;printf("请输入第一个数字:");scanf("%lf", &num1);printf("请输入运算符(+,-,*,/):"); scanf(" %c", &operator);printf("请输入第二个数字:");scanf("%lf", &num2);switch (operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if (num2 != 0) {result = num1 / num2;} else {printf("除数不能为0\n");return 1;}break;default:printf("无效的运算符\n");return 1;}printf("%.2lf %c %.2lf = %.2lf\n", num1, operator, num2, result);return 0;}```3. 题目:编写一个C语言程序,实现字符串的反转。
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 tagAAAUnsigned 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语言经典笔试题及答案详解1. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {int a = 1;int b = 2;int c = a + b;printf("%d", c);return 0;}```答案:输出是3。
2. 题目:如何使用指针交换两个变量的值?答案:可以使用以下代码:```c#include <stdio.h>void swap(int *x, int *y) {int temp = *x;*x = *y;*y = temp;}int main() {int a = 10;int b = 20;swap(&a, &b);printf("a = %d, b = %d\n", a, b); return 0;}```输出将是:a = 20, b = 10。
3. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {char *str = "Hello, World!";printf("%c", *(str + 7));return 0;}```答案:输出是W。
4. 题目:以下代码段的输出是什么?```c#include <stdio.h>int main() {int x = 10;if (x = 20)printf("x is 20\n");elseprintf("x is not 20\n");return 0;```答案:输出是x is 20。
注意这里if语句中使用了赋值运算符(=)而不是比较运算符(==),因此x被赋值为20,条件判断为真。
5. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {int a = 2;int b = 4;int c = a & b;printf("%d", c);return 0;}```答案:输出是0。
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : (B))4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}第三个方案是用gotoLoop:...goto Loop;5. 用变量a给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )答案是:a) int a; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer6. 关键字static的作用是什么?这个简单的问题很少有人能回答完全。
C语言考试试题基础版一、选择题1. 在每个C 程序中都必须包含有这样一个函数,该函数的函数名为。
A. mainB. MAINC. nameD. function2. 在以下关于C 语言的注释的叙述中,不正确的是。
A .注释可用"/*"、"*/"形式表示,也可用"//"形式表示B .编译器在编译一个程序时,将跳过注释,不对其进行处理C .编译器在编译一个程序时,可发现注释中的单词拼写错误D .程序中注释的多少不会影响所生成的可执行文件的长度3. 以下叙述不正确的是。
A .在C 程序中,严格区分大小写字母B .一个C 源程序有且仅有一个main 函数C .在C 程序中,注释只能位于一条语句的后面D .一个C 程序总是从main 函数开始执行4. 下列合法的标识符为A. abde+B. #KDJFC. 67KDJD. DK3_5. 关于字符串和字符的关系正确的是A. “A ”与’A ’是相同的B. 字符串是常量,字符是变量C. “A ”与’A ’是不同的D. “A ”与“A ”是相同的6. 下面关于语句的说确的是A. 下面这两段程序的执行效果是一致的B. 空语句是只有一个分号的语句,它其实什么也不干C. 语句的构成不一定需要分号D. 语句的书写对程序的运行不起作用,因此可以随便写都可以7. 以下各标识符中,合法的用户标识符组为。
A. PAd ,P#d ,b-b ,abc ,_0123,ssipedif (x>y){z=x; s=z*z;}else{z=y;s=1/(z*z);}if (x>y) z=x; s=z*z; else z=y;s=1/(z*z);B. cin,a10,CPP,float,del_word,signedC. void,max,hiy,,list,*jerD. a,temp,_isw,INT,keep,wind8.字符串“\”E OF= -\61\””的长度是。
1.C语言字符型(char)数据在内存中是以()形式存储的.A、原码、B、补码、C、反码、D、ASCII码2.在C语言中,合法的长整形常量是:A.0LB.4962710C.324562&D.216D3.以下表示十六进制长整型常量的是:A、0xFFB、017C、0xFGLD、0xFfL4.以下表八进制长整型常量的是:A、17B、08C、07LD、777L5.该语句printf(“%d”,’\001’)输入的值为:A、001 B、0 C、1 D、’\001’6.该语句printf(“%d”,’\x1’)输入的值为:A、001 B、0 C、1 D、’\001’7.该语句printf(“%o”,’\001’)输入的值为:A、01 B、0 C、1 D、’\001’8.该语句printf(“%#o”,’\001’)输入的值为:A、01 B、0 C、1 D、’\001’9.该语句printf(“%x”,’\001’)输入的值为:A、0x1 B、0 C、1 D、’\001’10.该语句printf(“%#x”,’\001’)输入的值为:A、0x1 B、0 C、1 D、’\001’11.下面的常量表示正确并且在内存中占两个字节空间的是::A、2B、’\000’C、’HH’D“W”12.字符串“Hello”的长度是:A、7B、6 C、5 D、413.C语言中整型(int)数据在内存中是以()形式存储的A、原码、B、补码、C、反码、D、ASCII码14.以下常量与char类型数据在内存中占用的空间相同的是:A、’5’B、5 C、”5”D、\n15.以下选项中正确的实型常量是A)0 B)3.1415L C)0.329×10(2)(10 的2 次方) D).87116.以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e2.0 C)-77.77 D)456e-217.下面是表示无符号长整型常量的是:A、40000 B、40000L C、40000U D、40000UL18.在16位C编译系统上若定义long a;,则能给a赋40000的正确语句是:A、a=20000+20000;B、a=4000*10C、a=30000+10000D、a=4000L*10L19.通常一个字节包含____个二进制位。
在一个字节中能存放的最大(十进制)整数是____,它的二进制数的形式是____;最小(十进制)整数是____,它的二进制数的形式是____。
答案:8、255、1111 1111、-128、1000 000020.当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。
答案:65535、-32768、1000 0000 0000 000021.以下选项中不属于C语言的类型的是:A>signed short int B>unsigned long int C>unsigned int D>long short22.不合法的八进制数是(注意讲解0也表示八进制也表达十进制)A)0 B)028 C)077 D)0123.以下选项中不合法的用户标识符是A)abc.c B)file C)Main D)PRINTF24.以下选项中不合法的用户标识符是A)_123 B)printf C)A$ D)Dim25.下面不能定义为用户标识符的:A:Scanf B:Void c:_3com_ d:int26.C 语言中运算对象必需是整型的运算符是A)% B)/ C)+ D)*27.C语言中算术运算表达式10 / 3 得到的结果可能是:A、3.33B、3.33333C、3.000000D、328.C语言中算术运算表达式10 / 3 * 1.0 得到的结果可能是:A、3.33B、3.33333C、3.000000D、329.C语言中printf(“ %f ”,(float)10 / 3);得到的结果可能是:A、3.33B、3.333333C、3.000000D、330.表达式3.5+1/2 的计算结果是____A、3.5B、4C、4.0D、4.531.若k 为int 整型变量且赋值11。
请写出运算k++后表达式的值A)_____和变量的值B)_____。
A、11 12B、11 11C、12 12D、12 1132.若x 为double 型变量,请写出运算x=3.2,++x 后表达式的值A)_____和变量的值B)_____。
A、4.2、4.2B、4.2 3.2C、3.2 3.2 D、3.2 4.233.表达式-5/3的值是:A)1 B)-1 C)2 D)-234.表达式-5 % 3的值是:A)1 B)-1 C)2 D)-235.可在C 程序中用作用户标识符的一组标识符是A)void define WORDB)as_b3 _123 MainC)For -abc printfD)2c DO SIG36.若变量已正确定义并赋值,符合C 语言语法的表达式是A)a=a+7; B)a=7+b+c C)int(12.3%4) D)a=a+7=c+b37.不合法的十六进制数是A)oxff B)0Xabc C)0x11 D)0x1938.00000000和10000000表示整型:A、0 -1 B、0 1 C、0 0 D、0 -12839.计算机8位可表示()个数据A、127B、128C、255D、25640. C 语言中,字符占内存____个字节。
答案:141.在vc++6.0 环境中用RUN 命令运行一个C 程序时,所运行的程序的后缀是______。
答案:.exe42. C 语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:.c .obj .exe43.结构化程序由_____、_____、_____三种基本结构组成。
答案:顺序、选择、循环44.调用C 语言对字符处理的库函数时,在#include 命令行中应包括的头文件是____。
答案:string.h45.C 语言中的标识符可分为____、____、和预定义标识符三类。
答案:关键字、用户标识符46.在C 语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。
答案:int、float、double47.把a1、a2 定义成单精度实型变量,并赋初值1 的定义语句是____。
答案:float a1=1.0,a2=1.0;48.表达式3.5+1/2 的计算结果是____。
答案:3.549.计算机中内存储器的最小存储单位称____,其中能容纳的数是____,8位为____字节答案:位、0 或150.若a、b、c、d 都是int 类型变量且初值为0,以下选项中不正确的赋值语句是A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++);51.以下叙述中正确的是A)a 是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
C)执行表达式a=b 后,在内存中a 和b 存储单元中的原有值都将被改变,a 的值已由原值改变为b 的值,b 的值由原值变为0。
D)已有a=3,b=5。
当执行了表达式a=b,b=a 之后,已使a 中的值为5,b 中的值为3。
答案:B52.C程序的基本组成单位是____答案:函数53.以下选项中不是C 语句的是A) {int i; i++; printf("%d\\n", i); }B) ;C) a=5,c=10D) { ; }54.以下合法的C 语言赋值语句是A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i;答案:D55.若变量已正确说明为float 类型,要通过以下赋值语句给a 赋予10、b 赋予22、c 赋予33,以下不正确的输入形式是scanf("%f %f %f", &a, &b, &c);A) 10<CR> 22<CR> 33<CR>B) 10.0,22.0,33.0<CR>C) 10.0<CR> 22.0 33.0<CR>D) 10 22<CR> 33<CR>56.若变量已正确说明,要求用以下语句给a 赋予3.12、给b 赋予9.0,则正确的输入形式是(□代表空格)scanf("a=%f,b=%f",&a,&b); <CR>表示Enter 键A) 3.12□□9.0<CR>B) a=□□3.12b=□□□9<CR>C) a=3.12,b=9<CR>D) a=3.12□□,b=9□□□□<CR>57.当运行以下程序时,在键盘上从第一列开始输入9876543210<CR>(此处<CR>代表Enter),则程序的输出结果是A) a=98,b=765,c=4321B) a=10,b=432,c=8765C) a=98,b=765.000000,c=4321.000000D) a=98,b=765,c=4321.0main(){int a; float b,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\\na=%d,b=%f,c=%f\\n",a,b,c);}58.若变量已正确定义,以下程序段的输出结果是A) 输出格式说明与输出项不匹配,输出无定值B) 5.17000C) 5.168000D) 5.169000double x=5.16894;printf("%f\\n",(int)(x*1000+0.5)/(float)1000);59.以下程序的输出结果是A) a=%2,b=%5B) a=2,b=5C) a=%%d,b=%%dD) a=%d,b=%dmain(){ int a=2,b=5;printf("a=%%d,b=%%d\\n",a,b);}60.若有以下程序段,c3 中的值是A) 0 B) 1/2 C) 0.5 D) 1int c1=1,c2=2,c3;c3=c1/c2;61.下边程序运行结果是:int n1,n2,n3;n1=3.2;n2=45.66;n3=45.66;printf("%d,%d,%d",n1,n2,n3);62.若有以下程序段,其输出结果是A) 0,0,-10B) 0,0,5C) -10,3,-10D) 3,3,-10int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf("%d,%d,%d\\n",a,b,c);若将第二行的语句改为:c=((a-=a-5),(a=b,b+3));程序输出多少?63.若变量以正确定义,要将a 和b 中的数进行交换,下面不正确的语句组是A) a=a+b,b=a-b,a=a-b; B) t=a,a=b,b=t;C) a=t; t=b; b=a; D) t=b; b=a; a=t;64.以下程序段的输出是A) *496 *B) * 496*C) *000496*D)输出格式符不合法int x=496;printf("*%-06d*\\n",x);(讲解格式控制符中间的如果是负数则,如果是正数则。