c和c经典笔试题及答案

合集下载

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。

C笔试题目及答案c语言笔试题目及答案

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语言笔试题目及答案C语言是一门通用计算机编程语言,应用广泛。

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

下面是c语言笔试题目及答案,请参考。

c语言笔试题目及答案一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)数据的存储结构是指________。

A)存储在外存中的数据 B)数据所占的存储空间量C)数据在计算机中的顺序存储方式D)数据的逻辑结构在计算机中的表示答案:D评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。

(2)下列关于栈的描述中错误的是________。

A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针答案:B评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。

(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是________。

A)冒泡排序为n2 B)冒泡排序为nC)快速排序为n D)快速排序为n(n一1)/2答案:D评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。

快速排序法的最坏情况比较次数也是n(n-1)/2。

(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。

A)log2n B)n/2 C)n D)n+l答案:C评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。

对长度为n的线性表进行顺序查找,在最坏情况下需要比较n 次。

c语言笔试题带答案

c语言笔试题带答案

c语言笔试题带答案【篇一:c语言的面试题_带答案-中软国际整理】p class=txt>1)限制变量的作用域2)设置变量的存储域(堆,主动分配内存也是堆)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

那就是,这个函数被限制在声明它的模块的本地范围内使用。

4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在栈6.堆栈溢出一般是由什么原因导致的?堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。

没有回收垃圾资源导致的是内存泄露最后内存耗尽。

20.不能做switch()的参数类型是:switch的参数不能为实型。

(只能是int char)9.写出float x 与“零值”比较的if语句。

if(x0.000001x-0.000001)3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?函数名: atol功能: 把字符串转换成长整型数函数的原型: long atol(const char *nptr);程序例:#include stdlib.h#include stdio.hint main(void){long l;char *str = 98765432;l = atol(lstr);printf(string = %s integer = %ld\n, str, l);return(0);}1.对于一个频繁使用的短小函数,在c语言中应用什么实现,在c++中应用什么实现?c用宏定义,c++用inline8.软件测试都有那些种类?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口9.确定模块的功能和模块的接口是在软件设计的那个阶段完成的?概要设计阶段11.unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;请问p1+5=? ;p2+5=? ;答:p1+5=0x801005 ;p2+5=0x810014 ;1.请问下面程序有什么错误?int a[60][250][1000],i,j,k;for(k=0;k1000;k++)for(j=0;j250;j++)for(i=0;i60;i++)a[i][j][k]=0;把循环语句内外换一下(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)2.#define max_cb 500void lmiquerycsmd(struct msgcb * pmsg){unsigned char uccmdnum;......for(uccmdnum=0;uccmdnummax_cb;uccmdnum++){......;}死循环(unsigned char 0 到 255)3.以下是求一个数的平方的程序,请找出错误:#define square(a)((a)*(a))int a=5;int b;b=square(a++);//a被加了2次 a=7,b=252、有一个16位的整数,每4位为一个数,写函数求他们的和。

c和c经典笔试题及答案

c和c经典笔试题及答案

C++/C经典笔试题及答案C++/C试题本试题仅用于考查C++/C程序员的基本编程技能。

内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。

考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。

笔试时间90分钟。

请考生认真答题,切勿轻视。

一、请填写BOOL , float, 指针变量与“零值”比较的if 语句。

(10分)提示:这里“零值”可以是0, , FALSE或者“空指针”。

例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 )if ( n != 0 )以此类推。

二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)三、简答题(25分)1、头文件中的ifndef/define/endif 干什么用?2、#include <> 和 #include “” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C++ 程序中调用被C编译器编译后的函数,为什么要加extern “C”声明?5、请简述以下两个for循环的优缺点四、有关内存的思考题(20分)五、编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcpy(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数private:char *m_data; // 用于保存字符串};请编写String的上述4个函数。

c c笔试题及答案

c c笔试题及答案

c c笔试题及答案C C语言是一种广泛应用于系统开发和嵌入式设备的程序设计语言。

在这篇文章中,我们将为大家提供一些C C笔试题及其答案,帮助大家更好地理解和掌握这门语言。

题目一:下面的代码段有什么问题,如何解决?```c#include <stdio.h>int main(){int num1 = 5;int num2;printf("请输入一个整数:");scanf("%d", &num2);int sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```答案一:这段代码有一个问题,即没有对输入的整数进行验证。

当我们输入非整数时,程序将会出现错误。

为了解决这个问题,我们可以使用条件语句来判断输入是否为整数,并进行相应的处理。

以下是修复后的代码:```c#include <stdio.h>int main(){int num1 = 5;int num2;printf("请输入一个整数:");if (scanf("%d", &num2) != 1){printf("输入错误,请重新输入一个整数。

\n");return 1;}int sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```题目二:请解释下面代码的输出结果,并给出原因。

```c#include <stdio.h>int main(){int x = 5;int y = x++;printf("x = %d\n", x);printf("y = %d\n", y);return 0;}```答案二:这段代码的输出结果为:```x = 6y = 5```原因是在表达式`int y = x++;`中,先将x的值赋给y,然后再对x进行自增操作。

c、c++笔试题,面试题

c、c++笔试题,面试题

2010 C、C++笔试题大全,被问的概率几乎100%。

很少有真正精通了C语言编程的学员,一般都有或多或少概念不是完全清楚的问题,特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义指向函数的指针类型,这也是导致学习C困难的一个原因。

下面有几个简单测试将能发现你对C语言的掌握情况。

1)int x=35;char str[10];//问:strlen(str)和sizeof(str)的值分别是多少?答:strlen(str) 值不确定,strlen根据'\0'确定字符串是否结束。

sizeof(str)=10 sizeof一个数组为数组长度strcpy(str,""/*共13个字母*/);//问:此时x和strlen(str)的值分别是多少?答:x 为35strcpy(char* dest, const char* src)根据src来复制dest,依照src的'\0'决定复制的长度,而dest必须要提供足够的长度,这里会引起溢出,strlen返回13,但是数组外部的数据已经被破坏strlen的值为13,在VC++环境下,x的值是要改变的(其他编译器下没试,).虽然表面上看来,在程序中并没有修改x的值,但是实际运行的结果是上面的x的值发生了修改,这是因为strcpy以后,把多余的数据拷贝进了str的邻居(int类型的x)中,所以x的数据也就变了.这是一个曾让我刻骨铭心的问题,在我刚出道时遇到这个问题,虽然在朋友的帮助下解决了这个问题,但一直不明白x的值为何变了,只有最后走上培训教师的岗位,才开始梳理自己曾经的困惑,才开始总结以前的经验供学员们借鉴.我觉得这个题目的价值非常之大,它能引起学员对字符串拷贝越界问题的足够重视,并且通过这个问题更能明白字符串的处理是怎么回时,更能明白字符串与字符数组的关系:字符串就是一个字符数组,只是把这个字符数组用在处理串的函数中时,这些函数不考虑数组的长度,只是记住数组的首地址,从首地址开始处理,并在遇到0时结束处理,3)char str[10];str=""; // also can use :memcpy(str, "")//编译能通过吗?答:数组不能赋值,只能初始化。

c语言经典笔试题(非常全)

c语言经典笔试题(非常全)

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语言和C++语言方面

软件开发经典笔试题C语言和C++语言方面

int y); 该函数被C 编译器编译后在库中的名字为_foo , 而C++ 编译器则
会产生像
_foo_int_int 之类的名字。 C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。
全国最大、最专业和最具人性化的就业辅导和职场分享的互动平台

3.4 一个类有基类、内部有一个其他类的成员对象,构造函数的执行 顺序是怎样 的。(Autodesk) 答:先执行基类的(如果基类当中有虚基类,要先执行虚基类的,其 他基类则 按照声明派生类时的顺序依次执行),再执行成员对象的,最后执行 自己的。 3.5 请描述一个你熟悉的设计模式(Autodesk) 3.6 在UML 中,聚合(aggregation)和组合(composition)有什么区别 Autodesk) 答案:聚合关系更强,类似于pages 和book 的关系;组合关系要弱, 类似于books 和bookshelf 的关系。 3.7C#和C++除了语法上的差别以外,有什么不同的地方?(Autodesk, Microsoft) 答案:(C#我只是了解,不是很精通) (1)c#有垃圾自动回收机制,程序员不用担心对象的回收。(2)c#严禁 使用指针, 只能处理对象。如果希望使用指针,则仅可在unsafe 程序块中能使用 指针。(3)c# 只能单继承。(4)必须通过类名访问静态成员。不能像C++中那样,通 过对象访
5.请说出const 与#define 相比优点
答案: (1) const 常量有数据类型,而宏常量没有数据类型。编译器可以 对前者进行 类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且 在字符替 换可能会产生意料不到的错误。 (2) 有些集成化的调试工具可以对const 常量进行调试,但是不能 对宏常量进 行调试。

c 笔试题及答案详解

c 笔试题及答案详解

c 笔试题及答案详解C笔试题及答案详解一、判断题1. c答案:正确解析:根据题目给出的信息,对于C语言开发环境搭建的目的是为了方便进行C语言的学习和开发工作,因此判断为正确。

2. c答案:错误解析:C语言是一种面向过程的程序设计语言,不具备垃圾回收机制,需要手动管理内存。

3. c答案:错误解析:C语言的注释分为单行注释和多行注释两种形式,而不是只有单行注释。

4. c答案:正确解析:C语言中的表达式可以包含常量、变量、运算符和函数调用等。

5. c答案:错误解析:C语言中的数据类型包括基本数据类型(如整型、字符型、浮点型等)和构造数据类型(如结构体、枚举等)。

二、选择题1. c答案:B解析:对于sizeof算符,它的作用是获取变量或类型的字节大小。

sizeof(char)返回值为1,因为char类型占用一个字节。

2. c答案:C解析:C语言中的switch语句只能用于排斥某个值的情况。

对于范围的判断需要借助if语句完成。

3. c答案:D解析:在C语言中,数组是一种顺序存储的数据结构,可以通过下标来访问数组中的元素。

4. c答案:A解析:对于逻辑运算符&&,它的左右两个操作数都为真时结果才为真,否则结果为假。

5. c答案:C解析:在C语言中,结构体是一种自定义的数据类型,可以包含多个不同类型的成员。

三、编程题代码如下:```c#include <stdio.h>void printStars(int n) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++) {printf("* ");}printf("\n");}}int main() {int n;printf("请输入要打印的行数:");scanf("%d", &n);printStars(n);return 0;}```解析:上述代码实现了一个功能,根据用户输入的行数,打印相应行数的星号图案。

c c 笔试题及答案详解

c c 笔试题及答案详解

c c 笔试题及答案详解C C笔试题及答案详解C C是一种通用的编程语言,广泛用于系统软件和应用程序开发。

在程序员面试和招聘过程中,C C笔试题是常见的一部分。

本文将详细解析几道经典的C C笔试题及其答案,帮助读者对C C语言的使用和理解有更深入的认识。

题目一:请编写一个C C程序,将一个整数数组中的元素按照从小到大的顺序进行排序。

答案详解:```c#include <stdio.h>int main() {int arr[] = {50, 20, 40, 10, 30};int n = sizeof(arr)/sizeof(arr[0]);int i, j, temp;for (i = 0; i < n-1; i++) {for (j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}printf("排序后的数组:");for(i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```题目二:请编写一个C C程序,计算并输出斐波那契数列的前20个数字。

答案详解:```c#include <stdio.h>int main() {int n = 20;int fib[n];int i;fib[0] = 0;fib[1] = 1;for(i = 2; i < n; i++) {fib[i] = fib[i-1] + fib[i-2];}printf("斐波那契数列的前20个数字:");for(i = 0; i < n; i++) {printf("%d ", fib[i]);}return 0;}```题目三:请编写一个C C程序,将一个字符串中的所有小写字母转换为大写字母。

c语言笔试题目100及最佳答案

c语言笔试题目100及最佳答案

c语言笔试题目100及最佳答案1. 以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪种数据类型是用于存储字符的?A. intB. charC. floatD. double答案:B3. 以下哪个选项不是C语言中的控制语句?A. ifB. whileC. forD. switch答案:D4. 在C语言中,以下哪个运算符用于执行算术运算?A. %B. &&C. ==D. +答案:D5. 如何定义一个具有10个元素的整型数组?A. int array[10];B. int array(10);C. int array[10] = {0};D. int array = 10;答案:A6. 在C语言中,以下哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B7. 在C语言中,以下哪个函数用于计算数组中元素的数量?A. sizeofB. lengthC. countD. size答案:A8. 在C语言中,以下哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C9. 在C语言中,以下哪个关键字用于声明一个全局变量?A. externB. staticC. globalD. local答案:A10. 在C语言中,以下哪个函数用于打开一个文件?A. fopenB. openC. readD. write答案:A11. 在C语言中,以下哪个函数用于关闭一个文件?A. fcloseB. closeC. endD. finish答案:A12. 在C语言中,以下哪个函数用于读取一个字符?A. getcharB. getcC. fgetcD. scanf答案:A13. 在C语言中,以下哪个函数用于写入一个字符?A. putcharB. putcC. fputcD. printf答案:A14. 在C语言中,以下哪个函数用于格式化输出?A. printfB. sprintfC. fprintfD. all of the above答案:D15. 在C语言中,以下哪个函数用于格式化输入?A. scanfB. sscanfC. fscanfD. all of the above答案:D16. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlenB. lengthC. sizeD. count答案:A17. 在C语言中,以下哪个函数用于连接两个字符串?A. strcatB. strncatC. strcpyD. strncpy答案:A18. 在C语言中,以下哪个函数用于复制一个字符串?A. strcatB. strncatC. strcpyD. strncpy答案:C19. 在C语言中,以下哪个函数用于比较两个字符串?A. strcmpB. strcpyC. strcatD. strncpy答案:A20. 在C语言中,以下哪个函数用于查找字符串中子串的位置?A. strstrB. strchrC. strrchrD. strcspn答案:A。

c笔试题及答案

c笔试题及答案

c笔试题及答案# c笔试题及答案1. 题目:编写一个函数,实现字符串反转。

答案:```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```2. 题目:编写一个程序,计算并输出100以内所有偶数的和。

答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum); return 0;}```3. 题目:给定一个整数数组,请找出数组中第二大的数。

答案:```c#include <stdio.h>#include <limits.h>int findSecondLargest(int arr[], int size) {int largest = INT_MIN, secondLargest = INT_MIN;for (int i = 0; i < size; i++) {if (arr[i] > largest) {secondLargest = largest;largest = arr[i];} else if (arr[i] > secondLargest && arr[i] !=largest) {secondLargest = arr[i];}}return secondLargest;}int main() {int arr[] = {1, 5, 3, 6, 8, 4, 6, 5};int n = sizeof(arr)/sizeof(arr[0]);int secondLargest = findSecondLargest(arr, n);printf("Second largest number is: %d\n", secondLargest); return 0;}```4. 题目:编写一个函数,实现数组的排序。

c语言c语言考试题库及答案

c语言c语言考试题库及答案

c语言c语言考试题库及答案一、选择题1. 在C语言中,用于定义变量的关键字是:A. defineB. varC. intD. let答案:C2. 下列哪个是C语言中的合法标识符?A. 2variableB. variable2C. variable-twoD. variable#答案:B3. 在C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C4. C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello\nWorld"D. "Hello\tWorld"答案:A5. 以下哪个是C语言中的控制语句?A. ifB. switchC. both A and BD. none of the above答案:C二、填空题6. 在C语言中,一个基本的程序结构包括____、____和____。

答案:预处理指令;函数定义;语句7. 一个C语言程序的执行从____函数开始。

答案:main8. 在C语言中,使用____关键字可以定义一个函数。

答案:void 或其他数据类型9. 一个C语言数组的元素默认情况下是按照____顺序存储的。

答案:连续10. C语言中的____运算符用于连接字符串。

答案:+三、简答题11. 解释C语言中指针的概念。

答案:指针是一种变量,它存储了另一个变量的内存地址。

通过指针,可以直接操作内存地址中的数据,实现数据的间接引用。

12. 描述C语言中结构体的定义和使用。

答案:结构体是一种用户自定义的数据类型,它允许将多个不同类型的变量组合成一个单一的类型。

定义结构体时,使用struct关键字,然后定义结构体的名称和成员。

使用结构体时,可以创建结构体变量,并通过点(.)运算符访问其成员。

四、编程题13. 编写一个C语言程序,计算并输出1到100的整数之和。

c语言经典笔试题及答案详解

c语言经典笔试题及答案详解

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。

c语言笔试题(答案)

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 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经典笔试题及答案

C和C经典笔试题及答案

C和C经典笔试题及答案C语言和C++语言是计算机科学中非常常见的编程语言,常被用于算法实现、系统开发以及游戏开发等方面。

下面是一些经典的C和C++笔试题及其答案,希望能对大家的学习和面试有所帮助。

题目一:交换两个变量的值请编写一个C函数,能够交换两个整型变量的值,并在调用函数之后打印交换后的结果。

```c#include <stdio.h>void swap(int* a, int* b) {int temp;temp = *a;*a = *b;*b = temp;}int main() {int x = 10;int y = 20;printf("交换前:x = %d, y = %d\n", x, y);swap(&x, &y);printf("交换后:x = %d, y = %d\n", x, y);return 0;}```题目二:查找数组中的最大值请编写一个C函数,接收一个整型数组和该数组的长度作为参数,返回数组中的最大值。

```c#include <stdio.h>int findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {1, 3, 5, 2, 4};int n = sizeof(arr) / sizeof(arr[0]);int maxValue = findMax(arr, n);printf("数组中的最大值为: %d\n", maxValue);return 0;}```题目三:字符串反转请编写一个C函数,接收一个字符串作为参数,将其反转并返回。

C语言笔试题_C笔试题大全14_附答案

C语言笔试题_C笔试题大全14_附答案

C语言笔试题_C笔试题大全14_附答案c语言常见笔试题总结【1 使用宏】1.1 #error的作用?#error用于向编译器报错,并输出它后面带的错误信息。

例如:#ifndef SOMETHING#error SOMETHING not defined!#endif如果在这段代码之前未定义过SOMETHING,则在编译时出错,并给出"SOMETHING not defined!"的错误信息。

1.2 定义一个宏,求出给定数组中的元素的个数#define NELEMENTS(array) (sizeof(array) / sizeof((array)[0])) 【2 数据声明和定义】给定以下类型的变量a的定义式:a) An integerint a;b) A pointer to an integerint *a;c) A pointer to a pointer to an integerint **a;d) An array of 10 integersint a[10];e) An array of 10 pointers to integersint *a[10];f) A pointer to an array of 10 integersint (*a)[10];g) A pointer to a function that takes an integer as an argument and returns an integerint (*a)(int );h) An array of ten pointers to function s that take an integer argument and return an integeri nt (*a[10] ) (int );【3 复杂类型(1)】有如下表达式:char (*(*x())[])();请用文字描述x是什么。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c和c经典笔试题及答案集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)C++/C经典笔试题及答案C++/C试题???本试题仅用于考查C++/C程序员的基本编程技能。

内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。

考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。

???????笔试时间90分钟。

请考生认真答题,切勿轻视。

一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。

(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。

例如 int 变量 n 与“零值”比较的 if 语句为:????if ( n == 0 )????if ( n != 0 )1、头文件中的 ifndef/define/endif 干什么用?2、#include??<filename.h>???和??#include??“filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?5已知strcpy函数的原型是???????char *strcpy(char *strDest, const char *strSrc); ???????其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpy(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:????class String????{??????public:????????String(const char *str = NULL); // 普通构造函数????????String(const String &other);????????// 拷贝构造函数????????~ String(void);?????????????????????// 析构函数????????String & operate =(const String &other);????// 赋值函数??????private:????????char????*m_data;????????????????// 用于保存字符串????};???????请编写String的上述4个函数。

C++/C试题的答案与评分标准一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。

(101、头文件中的 ifndef/define/endif 干什么用?(5分)答:防止该头文件被重复引用。

2、#include??<filename.h>???和??#include??“filename.h” 有什么区别?(5分)答:对于#include??<filename.h> ,编译器从标准库路径开始搜索filename.h????对于#include??“filename.h” ,编译器从用户的工作路径开始搜索 filename.h3、const 有什么用途?(请至少说明两种)(5分)答:(1)可以定义 const 常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。

被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”?(5分)答:C++语言支持函数重载,C语言不支持函数重载。

函数被C++编译后在库中的名字与C语言的不同。

假设某个函数的原型为: void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。

C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。

5已知strcpy函数的原型是???????char *strcpy(char *strDest, const char *strSrc); ???????其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc);{????assert((strDest!=NULL) && (strSrc !=NULL)); // 2分????char *address = strDest;???????????????????// 2分????while( (*strDest++ = * strSrc++) != ‘\0’ )????// 2分???????NULL ;????return address ;??????????????????????????// 2分}(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?答:为了实现链式表达式。

??????????????????????????????????????????????// 2分例如???????int length = strlen( strcpy( strDest, “hello world”) );六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:????class String????{??????public:????????String(const char *str = NULL); // 普通构造函数????????String(const String &other);????????// 拷贝构造函数????????~ String(void);?????????????????????// 析构函数????????String & operate =(const String &other);????// 赋值函数??????private:????????char????*m_data;????????????????// 用于保存字符串????};???????请编写String的上述4个函数。

标准答案:// String的析构函数???????String::~String(void)???????????????// 3分{????delete [] m_data; ?????????????????????// 由于m_data是内部数据类型,也可以写成 delete m_data; ???????}???????// String的普通构造函数????????????????????String::String(const char *str)??????// 6分{????if(str==NULL)??????????????????????????????{???????m_data = new char[1];????// 若能加 NULL 判断则更好???????*m_data = ‘\0’;??????????????????????????}??????????????????????????????????????????????else????{???????int length = strlen(str);??????????????????m_data = new char[length+1];??// 若能加 NULL 判断则更好?????????????strcpy(m_data, str);????????????????????}}???// 拷贝构造函数????String::String(const String &other)???// 3分????{???????int length = strlen(other.m_data);????m_data = new char[length+1];??????// 若能加 NULL 判断则更好????????strcpy(m_data, other.m_data);?????????}// 赋值函数????String & String::operate =(const String &other)????// 13分????{??????????// (1) 检查自赋值?????????????????????// 4分???????if(this == &other)???????????return *this;// (2) 释放原有的内存资源????????????// 3分???????delete [] m_data;???????// (3)分配新的内存资源,并复制内容 // 3分????int length = strlen(other.m_data);????m_data = new char[length+1];?????????// 若能加 NULL 判断则更好???????strcpy(m_data, other.m_data);???????// (4)返回本对象的引用??????????? // 3分???????return *this;}???。

相关文档
最新文档