C语言招聘笔试题
C语言软件工程师笔试题大全
C语言软件工程师笔试题大全1. 基础知识题1.1 变量和数据类型1.请描述int和float这两种数据类型分别在内存中所占的字节数以及其取值范围。
2.什么是变量,变量的命名规则有哪些限制?3.请简要介绍C语言中的整型常量、浮点型常量和字符常量。
1.2 运算符和表达式1.C语言中的逻辑运算符有哪些?它们的运算规则是什么?2.请解释C语言中的前缀递增和后缀递增运算符的区别。
3.下面的表达式的结果是多少?int x = 5; int y = x++;1.3 控制结构1.请解释C语言中的if-else语句的用法和语法。
2.请解释C语言中的for循环语句的用法和语法。
3.请解释C语言中的switch语句的用法和语法。
2. 中级知识题2.1 数组和字符串1.请解释C语言中的一维数组和多维数组的定义和使用方法。
2.请编写一个程序,实现对一个整型数组的冒泡排序。
3.请编写一个程序,实现两个字符串的拼接。
2.2 指针和内存管理1.请解释C语言中的指针的概念和作用,并说明指针的运算规则。
2.请编写一个程序,交换两个变量的值,使用指针作为函数的参数。
3.请解释C语言中的动态内存分配和释放的方法,并编写一个例子。
2.3 结构体和联合体1.请解释C语言中的结构体的概念和用法,并编写一个例子。
2.请解释C语言中的联合体的概念和用法,并编写一个例子。
3.请解释C语言中的位字段的概念和用法,并编写一个例子。
3. 高级知识题3.1 函数和库1.请解释C语言中的函数指针的概念和用法,并编写一个例子。
2.请解释C语言中的标准库和自定义库的区别,并说明如何使用自定义库。
3.请解释C语言中的递归函数的概念和用法,并编写一个例子。
3.2 文件操作1.请解释C语言中的文件指针的概念和用法,并说明如何打开、读取和关闭文件。
2.请编写一个程序,实现对一个文本文件的读取和统计某个字符出现的次数。
3.请编写一个程序,实现对一个文本文件的写入操作,将一个字符串写入文件。
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语言笔试考试题及答案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语言笔试题及答案1. 请写出C语言中声明一个结构体的语法,并给出一个示例。
答案:在C语言中,声明一个结构体的语法如下:```cstruct 结构体名 {成员列表;};```示例:```cstruct Student {int id;char name[20];float score;};```2. 描述C语言中指针和数组的关系。
答案:在C语言中,指针和数组有着密切的关系。
数组名可以被看作是一个指向数组首元素的指针。
例如,如果有一个数组`intarr[10];`,那么`arr`就是指向数组第一个元素的指针。
3. 请解释C语言中的预处理指令`#include`的作用。
答案:预处理指令`#include`用于在编译前将指定的文件包含到当前文件中。
它通常用于包含标准库头文件或用户自定义的头文件。
例如:#include <stdio.h>```这行代码会将标准输入输出库的头文件包含到当前文件中。
4. 在C语言中,如何定义一个函数?答案:在C语言中定义一个函数的语法如下:```c返回类型函数名(参数列表) {函数体;}```例如:```cint add(int a, int b) {return a + b;}```5. 解释C语言中`sizeof`运算符的作用。
答案:`sizeof`运算符用于计算数据类型或变量所占用的字节数。
例如:```cint size = sizeof(int);```这行代码会将`int`类型所占用的字节数赋值给变量`size`。
6. 请写出一个C语言程序,实现两个整数的交换。
```c#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int x = 10, y = 20;printf("Before swap: x = %d, y = %d\n", x, y);swap(&x, &y);printf("After swap: x = %d, y = %d\n", x, y);return 0;}```7. 描述C语言中`break`和`continue`语句的作用。
安徽省c语言笔试试题及答案
安徽省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语言笔试考试题及答案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语言中数组和指针的区别。
华为C语言招聘笔试题目_笔试题目doc
华为C 语言招聘笔试题目_笔试题目一、对或错(用“T”代表正确,用“F”代表错误,并解释原因。
每项4 分,共20 分)1.有一个数组定义int a={{1} ,{2,3 } };值为0。
( )2.int (*ptr)() ,ptr 是一维数组的名称。
( )3.指针可以在任何情况下进行操作。
( )4.在switch(c) 语句中,c 可以是int 、long、char、float 、unsigned int 类型。
( )5、#定义打印(x) printf( 编号,#x,是)第二,填空(共30 分)1、在windows 下,写运行结果,每空2 分,共10 分。
你好;char * p=strint n=10sizeof(str)=(sizeof(p)=(sizeof(n)=(void func(char 字符串){ }sizeof(str)=(2、void setmemory(char **p ,int num){ * p=(char *)malloc(num) ;}空隙测试(空隙){字符*字符串=空;getmemory( 字符串,100);strcpy(str ,hello);printf(str) ;}运行测试功能的结果是什么?()10 分3.设置int arr={6 ,7,8,9,10}。
int * ptr=arr(ptr)=123 ;printf(%d ,%d,*ptr,*(ptr)) ;三、程序设计试题(第一项20 分,第二项30 分)1.编写函数intstrcmp (char * source,char * dest ),而不使用库函数。
相等返回0,不相等返回-1;2.写一个函数int fun(char *p) 来判断一个字符串是否是回文。
它返回1 而不是0。
错误返回-1。
c语言笔试面试题目及答案
c语言笔试面试题目及答案一、概述C语言作为一种高级编程语言,具有广泛应用的特点,常常是面试中的重要内容。
本文将列举一些常见的C语言笔试面试题目,并提供相应的答案,以供参考。
二、变量与数据类型1. 请解释C语言中的变量是什么?答:变量是一种具有可变值的存储空间,用于存储和表示不同类型的数据。
2. 请列举C语言中的基本数据类型。
答:C语言中的基本数据类型包括int、float、char、double等。
3. 请解释int和float数据类型的区别。
答:int是整型数据类型,用于表示整数;float是浮点型数据类型,用于表示带有小数点的数。
4. 请解释C语言中的数组。
答:数组是由相同数据类型的元素组成的集合,通过索引来访问每个元素。
三、控制流1. 请解释C语言中的条件语句。
答:条件语句用于根据给定的条件执行不同的代码块。
常见的条件语句有if语句和switch语句。
2. 请解释for循环和while循环的区别。
答:for循环用于在已知循环次数的情况下重复执行一段代码;while循环用于在满足条件的情况下重复执行一段代码,循环次数不确定。
3. 请解释C语言中的跳转语句。
答:C语言中的跳转语句用于改变程序的执行顺序,包括break、continue和goto等。
四、函数与指针1. 请解释C语言中的函数。
答:函数是一段封装了特定功能的代码块,通过给定的输入(参数)来产生输出(返回值)。
2. 请解释C语言中的指针。
答:指针是一个变量,用于存储其他变量的内存地址。
通过指针,可以间接访问和操作该地址处的数据。
3. 请解释C语言中的递归函数。
答:递归函数是一种调用自身的函数,适用于解决可以被分解为相同问题的问题,通过不断调用自身来实现。
五、文件操作1. 请解释C语言中的文件操作。
答:文件操作用于读取和写入文件的数据,包括打开文件、读取文件内容、写入文件内容和关闭文件等步骤。
2. 请解释C语言中的文件指针。
答:文件指针是一个用于表示文件位置的指针变量,可以用于定位读写文件的位置。
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. 选择题- 1.1 以下哪个选项是C语言中的关键字?A. intB. stringC. varD. void答案:A- 1.2 C语言中,用于定义函数的关键字是什么?A. functionB. defineC. defD. int答案:D2. 填空题- 2.1 在C语言中,定义一个整型变量的正确语法是____。
答案:int variable_name;- 2.2 如果要声明一个指向整型变量的指针,正确的语法是____。
答案:int *pointer_name;3. 简答题- 3.1 请解释C语言中的数组和指针的区别。
答案:数组是一种数据结构,用于存储相同类型的多个元素,而指针是一个变量,它存储了另一个变量的内存地址。
数组名本身代表数组首元素的地址,而指针变量可以被赋值指向不同的地址。
- 3.2 描述C语言中如何实现函数的递归调用。
答案:递归调用是指函数在其定义中调用自身。
在C语言中,实现递归调用需要定义一个函数,该函数在其内部调用自身,并且有一个递归结束的条件,以避免无限递归。
4. 编程题- 4.1 编写一个C语言函数,计算并返回两个整数的和。
答案:```cint add(int a, int b) {return a + b;}```- 4.2 编写一个C语言程序,实现字符串的反转。
答案:```c#include <string.h>#include <stdio.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;}```5. 论述题- 5.1 讨论C语言中结构体和联合体的区别。
c语言笔试题及答案
c语言笔试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义一个函数?A. structB. intC. voidD. function答案:B2. 下列哪个选项是C语言中正确的注释方式?A. // 这是注释B. /* 这是注释 */C. <!—这是注释—>D. /* 这是注释答案:A3. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. variable2C. _variableD. variable答案:D4. C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello, World!";B. char str[] = 'Hello, World!';C. char str[] = "Hello, World!";D. char str[] = {"Hello, World!"};答案:A5. 以下哪个选项是C语言中正确的整型常量?A. 012B. 0x1AC. 1.0E2D. 0b1010答案:B二、填空题1. 在C语言中,_________ 运算符用于比较两个值是否相等。
答案:==2. C语言中,_________ 函数用于将字符串转换为浮点数。
答案:atof3. 在C语言中,_________ 运算符用于取一个数的相反数。
答案:-4. C语言中,_________ 函数用于输出字符串。
答案:printf5. 在C语言中,_________ 运算符用于连接两个字符串。
答案:+三、编程题1. 编写一个C语言程序,计算并输出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;}```2. 编写一个C语言程序,实现字符串的反转。
校园招聘C语言类笔试题
一、预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL考点:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4).表达式中用到UL(表示无符号长整型)2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) ? (A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。
这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来4).讨论下面宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);二、数据声明(Data declarations)用变量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 integer三、Static关键字static的作用是什么?在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
c语言笔试题及答案
c语言笔试题及答案**C语言笔试题及答案**1. 以下哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. variable-nameD. variable#name**答案:B**解析:在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头,不能包含空格、标点符号等特殊字符。
因此,只有选项B "variable2" 是合法的标识符。
2. 若有以下定义:```cint a = 5, b = 10, c = 15;```则表达式 `a + b > c && a < b+2` 的值是多少?A. 1B. 0C. 2D. 3**答案:A**解析:表达式 `a + b > c && a < b+2` 可以分解为两部分:`a + b > c` 和 `a < b+2`。
首先计算 `a + b > c`,即 `5 + 10 > 15`,结果为假(0)。
由于逻辑与操作(&&)要求两边都为真,整个表达式的结果才为真,因此整个表达式的结果为假(0)。
但由于C语言中假值用0表示,真值用1表示,所以最终结果为1。
3. 以下哪个选项是C语言中正确的字符串声明?A. char str[] = "Hello, World!";B. char str[13] = "Hello, World!";C. char str[] = {"Hello, World!"};D. char str = "Hello, World!";**答案:A**解析:在C语言中,字符串应该使用字符数组来存储,并以null字符('\0')结尾。
选项A正确地声明了一个字符串数组,并自动在末尾添加了null字符。
c语言笔试题及答案
c语言笔试题及答案C语言笔试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言的关键字?A. voidB. intC. floatD. all of the above答案:D2. C语言中,哪个函数用于计算两个数的和?A. add()B. sum()C. max()D. min()答案:A3. 在C语言中,以下哪个是正确的字符串定义方式?A. char str[10] = "Hello";B. string str = "Hello";C. char str[] = "Hello";D. char str = "Hello";答案:A4. 以下哪个选项不是C语言的基本数据类型?A. intB. floatC. doubleD. string答案:D5. 在C语言中,以下哪个语句是正确的循环语句?A. whileB. do-whileC. forD. all of the above答案:D二、填空题(每空2分,共20分)6. C语言中,定义一个整型变量的关键字是________。
答案:int7. 在C语言中,表示逻辑与的运算符是________。
答案:&&8. 一个C语言程序的执行从________函数开始。
答案:main9. 在C语言中,数组的索引从________开始。
答案:010. C语言中,表示逻辑非的运算符是________。
答案:!三、简答题(每题10分,共20分)11. 简述C语言中函数的定义和调用过程。
答案:在C语言中,函数定义包括返回类型、函数名、参数列表和函数体。
调用函数时,需要使用函数名和相应的参数列表。
12. 解释C语言中指针的概念及其用途。
答案:指针是C语言中一种特殊的变量,它存储了另一个变量的内存地址。
指针主要用于直接访问内存地址,实现动态内存分配,以及函数参数的传递等。
c语言招聘试题及答案
c语言招聘试题及答案一、选择题(每题4分,共10题)1. 下列哪个是C语言中的关键字?A. printfB. outputC. writeD. yield2. C语言中,用于定义常量的关键字是?A. constantB. defineC. constD. var3. 在C语言中,变量名的命名规则是什么?A. 只能使用英文字母B. 只能使用数字C. 只能使用下划线D. 可以使用字母、数字和下划线,且必须以字母或下划线开头4. C语言的注释方式是什么?A. // 单行注释B. /\* \*/ 块注释C. # 开头的注释D. ''' ''' 注释5. 下列哪个运算符的优先级最高?A. +B. *C. =D. /6. 在C语言中,用于循环执行的关键字是?A. forB. ifC. switchD. continue7. 下列哪个函数用于从标准输入读取一个字符?A. getchar()B. putchar()C. scanf()D. printf()8. 在C语言中,条件语句的格式是怎样的?A. if(condition) { statement; }B. for(condition) { statement; }C. while(condition) { statement; }D. do { statement; } while (condition);9. 下列哪个函数用于将一个字符转换为整数?A. atoi()B. itoa()C. getchar()D. putchar()10. 在C语言中,判断两个数是否相等的运算符是?A. ==B. >C. <D. !=二、填空题(每题4分,共5题)1. 在C语言中,输出到屏幕上的函数是__printf__。
2. 在C语言中,& 是取__地址__运算符。
3. 使用__while__语句实现的循环会先判断条件是否成立。
(完整版)C语言考试题库及答案
(完整版)C语言考试题库及答案一、选择题1. 以下哪个选项是C语言的合法标识符?A. intB. 2abcC. voidD. a+b答案:C2. 在C语言中,下列哪个选项是正确的数据类型?A. floatB. integerC. doubleD. All of the above答案:D3. 若变量定义如下:int a = 5;,则执行语句printf("%d", a++); 后,a的值是多少?A. 4B. 5C. 6D. 无法确定答案:C4. 以下哪个函数用于动态分配内存?A. malloc()B. alloc()C. new()D. calloc()答案:A5. 在C语言中,哪个运算符用于取模(取余)?A. %B. /C. &D. |答案:A以下是判断题部分:6. C语言中的数组名可以作为指向该数组首元素的指针使用。
()答案:正确7. 在C语言中,结构体变量可以作为函数的参数传递。
()答案:正确8. 在C语言中,静态存储类别的变量在程序运行期间始终占据内存空间。
()答案:正确二、填空题9. 在C语言中,定义一个整型变量需要使用关键字______。
答案:int10. 若变量定义如下:int a = 10;,则执行语句printf("%d", a--); 后,a的值是______。
答案:911. 在C语言中,用于动态分配内存的函数是______。
答案:malloc12. 在C语言中,用于释放动态分配的内存的函数是______。
答案:free13. 在C语言中,用于清空标准输入缓冲区的函数是______。
答案:getchar()三、编程题14. 编写一个C语言程序,实现以下功能:输入一个整数,输出它的阶乘。
答案:```c#include <stdio.h>int main() {int n, i;long factorial = 1;printf("Enter an integer: ");scanf("%d", &n);if (n < 0) {printf("Factorial of a negative number doesn't exist.\n");} else {for (i = 1; i <= n; i++) {factorial = i;}printf("Factorial of %d is %ld\n", n, factorial);}return 0;}```15. 编写一个C语言程序,实现以下功能:输入一个字符串,判断它是否是回文(正读和反读都一样的字符串)。
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语言测试题(众多知名企业用作招聘笔试题)
一个很牛的人出的被众多知名IT企业用作面试题的看似很简单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 )以此类推。
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)三、简答题(25分)1、头文件中的ifndef/define/endif 干什么用?2、#include <filename.h> 和#include “filename.h” 有什么区别?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的字符串库函数,请编写函数strcpy2)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); // 赋值函数char *m_data; // 用于保存字符串};请编写String的上述4个函数。
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语言笔试题目及答案一、选择题(每题2分,共10分)1. 下列哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. C语言中,用于定义一个字符常量的是?A. 'a'B. "a"C. aD. 1答案:A3. 下列哪个选项是正确的C语言函数定义?A. int function();B. int function;C. int function int x;D. int function(int x)答案:D4. 以下哪个选项不是C语言中的运算符?A. %=B. &&C. ::D. ||答案:C5. 在C语言中,一个变量的声明应该放在?A. 函数内部B. 函数外部C. 函数内部或外部D. 只能放在函数内部答案:C二、填空题(每题2分,共10分)1. 在C语言中,____关键字用于声明一个外部变量。
答案:extern2. C语言中,用于定义一个指针的语法是____。
答案:*变量名3. 用于在C语言中声明一个函数的关键字是____。
答案:int4. 在C语言中,____运算符用于计算两个整数的差。
答案:-5. 用于在C语言中声明一个数组的语法是____。
答案:类型名数组名[数组大小]三、简答题(每题5分,共20分)1. 简述C语言中数组和指针的关系。
答案:在C语言中,数组名可以被看作是一个指向数组首元素的指针,数组的每个元素可以通过指针运算来访问。
2. 解释C语言中的递归函数是什么?答案:递归函数是指在函数定义中调用自身的函数,它通常用于解决可以分解为更小、相似问题的任务。
3. 什么是C语言中的预处理指令?答案:预处理指令是C语言编译过程中处理的特殊指令,它们不是C语言的一部分,但对编译过程有影响,如#include、#define等。
4. 描述C语言中如何实现文件的读写。
答案:在C语言中,可以使用fopen、fprintf、fscanf、fclose 等函数来实现文件的打开、写入、读取和关闭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)以此类推。
请写出BOOL flag与“零值”比较的if语句:请写出float x与“零值”比较的if语句:请写出char*p与“零值”比较的if语句:二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[]=“Hello”; char*p=str;int n=10;请计算sizeof(str)=void Func(char str[100]) {请计算sizeof(str)=}sizeof(p)= sizeof(n)=void*p=malloc(100);请计算sizeof(p)=三、简答题(25分)1、头文件中的ifndef/define/endif干什么用?2、#include<filename.h>和#include“filename.h”有什么区别?3、const有什么用途?(请至少说明两种)4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?5、请简述以下两个for循环的优缺点//第一个for(i=0;i<N;i++) {if(condition)DoSomething();elseDoOtherthing(); }//第二个if(condition){for(i=0;i<N;i++)DoSomething();}else{for(i=0;i<N;i++)DoOtherthing(); }优点:缺点:优点:缺点:四、有关内存的思考题(20分)void GetMemory(char*p){p=(char*)malloc(100);}void Test(void){char*str=NULL;GetMemory(str);strcpy(str,"hello world");printf(str);}请问运行Test函数会有什么样的结果?答:char*GetMemory(void){char p[]="hello world";return p;}void Test(void){char*str=NULL;str=GetMemory();printf(str);}请问运行Test函数会有什么样的结果?答:Void GetMemory2(char**p,int num) {*p=(char*)malloc(num);}void Test(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf(str);}void Test(void){char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){strcpy(str,“world”);printf(str);}}请问运行Test函数会有什么样的结果?答:请问运行Test函数会有什么样的结果?答:五、编写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试题的答案与评分标准一、请填写BOOL,float,指针变量与“零值”比较的if语句。
(10分)二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[]=“Hello”;char*p=str;int n=10;请计算sizeof(str)=6(2分)sizeof(p)=4(2分)sizeof(n)=4(2分)void Func(char str[100]){请计算sizeof(str)=4(2分)}void*p=malloc(100);请计算sizeof(p)=4(2分)三、简答题(25分)1、头文件中的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、请简述以下两个for循环的优缺点(5分)for(i=0;i<N;i++) {if(condition)DoSomething();elseDoOtherthing(); }if(condition){for(i=0;i<N;i++)DoSomething();}else{for(i=0;i<N;i++)DoOtherthing(); }优点:程序简洁缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
优点:循环的效率高缺点:程序不简洁四、有关内存的思考题(每小题5分,共20分)void GetMemory(char*p){p=(char*)malloc(100);}void Test(void){char*str=NULL;GetMemory(str);strcpy(str,"hello world");printf(str);}请问运行Test函数会有什么样的结果?答:程序崩溃。
因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL。
strcpy(str,"hello world");将使程序崩溃。
char*GetMemory(void){char p[]="hello world";return p;}void Test(void){char*str=NULL;str=GetMemory();printf(str);}请问运行Test函数会有什么样的结果?答:可能是乱码。
因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原现的内容已经被清除,新内容不可知。
void GetMemory2(char**p,int num) {*p=(char*)malloc(num);}void Test(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf(str);}请问运行Test函数会有什么样的结果?答:(1)能够输出hello(2)内存泄漏void Test(void){char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){strcpy(str,“world”);printf(str);}}请问运行Test函数会有什么样的结果?答:篡改动态内存区的内容,后果难以预料,非常危险。
因为free(str);之后,str成为野指针,if(str!=NULL)语句不起作用。
五、编写strcpy函数(10分)已知strcpy函数的原型是char*strcpy(char*strDest,const char*strSrc);其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数strcpychar*strcpy(char*strDest,const char*strSrc);{assert((str Dest!=NULL)&&(strSrc!=NULL));//2分char*address=str Dest;//2分while((*str Dest++=*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个函数。