常见C笔试题目含答案完整版

合集下载

c笔试题及答案

c笔试题及答案

c笔试题及答案一、选择题(每题2分,共10分)1. 下列哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. intD. variable$2答案:B2. C语言中,哪个关键字用于定义一个函数?A. varB. defineC. functionD. void答案:D3. 在C语言中,以下哪个选项表示逻辑与运算?A. &&B. ||C. andD. or答案:A4. 在C语言中,哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. count()答案:A5. 下面哪个选项是C语言中的整型数据类型?A. intB. floatC. charD. All of the above答案:D二、填空题(每题2分,共10分)1. 在C语言中,一个程序的执行从________函数开始。

答案:main2. 如果一个变量的值在程序执行过程中不会改变,那么它应该被声明为________。

答案:const3. C语言中,________运算符用于将一个值赋给变量。

答案:=4. 在C语言中,________关键字用于定义一个结构体。

答案:struct5. C语言中,________函数用于将一个字符串复制到另一个字符串。

答案:strcpy三、简答题(每题5分,共20分)1. 请简述C语言中数组的定义方式。

答案:在C语言中,数组的定义方式如下:类型名数组名[数组大小];例如,定义一个包含10个整数的数组:int numbers[10];2. 解释C语言中指针的概念。

答案:在C语言中,指针是一个变量,其存储的是另一个变量的内存地址。

通过指针,程序可以直接访问和操作内存中的数据。

3. 请描述C语言中函数的原型声明。

答案:函数原型声明在C语言中用于告知编译器函数的名称、返回类型、参数类型和数量,但不提供函数的实现。

函数原型声明的一般形式为:返回类型函数名(参数类型参数名, ...);4. 举例说明C语言中如何实现文件的读写。

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语言一般只比汇编程序生成的目标代码效率低10%~20%。

下面就由店铺为大家介绍一下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)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。

常见C++笔试题目整理(含答案)

常见C++笔试题目整理(含答案)

1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。

private 也被集成,只事派生类没有访问权限而已。

virtual 可加可不加。

子类的空间里有父类的所有变量(static除外)。

同一个函数只存在一个实体(inline 除外)。

子类覆盖它的函数不加virtual ,也能实现多态。

在子类的空间里,有父类的私有变量。

私有变量不能直接访问。

————————————————————————–2.输入一个字符串,将其逆序后输出。

(使用C++,不建议用伪码)#include <iostream>using namespace std;void main(){char a[50];memset(a,0,sizeof(a));int i=0,j;char t;cin.getline(a,50,’\n’);for(i=0,j=strlen(a)-1;i<strlen(a)/2;i++,j–){t=a[i];a[i]=a[j];a[j]=t;}cout<<a<<endl;}//第二种string str;cin>>str;str.replace;cout<<str;————————————————————————–3.请简单描述Windows内存管理的方法。

内存管理是操作系统中的重要部分,两三句话恐怕谁也说不清楚吧~~我先说个大概,希望能够抛砖引玉吧当程序运行时需要从内存中读出这段程序的代码。

代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的概念。

把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。

这个就是内存管理所要做的事。

内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。

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. 题目三:寻找数组中的最大值编写一个函数,接受一个整数数组和数组的长度作为参数,返回数组中的最大值。

100条经典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个字节. 所以它的大小是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语言笔试题答案_1

_C语言笔试题答案_1

C语言笔试题答案C语言笔试题答案篇1(1)下述关于数据库系统的叙述中正确的是________。

A)数据库系统减少了数据冗余B)数据库系统避免了一切冗余C)数据库系统中数据的一致性是指数据类型的一致D)数据库系统比文件系统能管理更多的数据答案:A评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。

所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

(2)关系表中的每一横行称为一个________。

A)元组 B)字段 C)属性 D)码答案:A评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。

二维表是由表框架及表元组组成。

在表框架中,按行可以存放数据,每行数据称为元组。

(3)数据库设计包括两个方面的设计内容,它们是________。

A)概念设计和逻辑设计 B)模式设计和内模式设计C)内模式设计和物理设计 D)结构特性设计和行为特性设计答案:A评析:数据库设计可分为概念设计与逻辑设计。

概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。

逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。

(4)请读程序:includemain(){int a;float b,c;scanf(“%2d%3P%4f,a,b,C);printf(”\na=%d,b=%ec。

%f\n”,a,b,C);}若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。

A)a=98,b=765,c=432 1B)a=1 0,b=432,c=8765C)a=98,b=765.000000,c=432 1.000000D)a=98,b=765.0,c=432 1.0答案:C评析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。

c招聘试题及答案

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 算法笔试题及答案

c 算法笔试题及答案C算法笔试题及答案在计算机科学中,算法是解决问题的方法和步骤的有序集合。

C语言是一种广泛应用于系统编程和嵌入式开发中的高级编程语言。

C算法的笔试题常常涉及到对程序的设计和实现,以及对基本数据结构和算法的理解与运用。

本文将介绍一些常见的C算法笔试题,并为每个问题提供答案。

一、排序算法1. 冒泡排序(Bubble Sort):通过相邻元素的比较和交换,每轮将最大(或最小)的元素移动到序列的最末端。

答案:具体的冒泡排序算法实现可参考如下代码:```cvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```2. 快速排序(Quick Sort):通过选择一个基准元素,将序列分成小于基准的部分和大于基准的部分,然后递归地对两个部分进行排序。

答案:具体的快速排序算法实现可参考如下代码:```cint partition(int arr[], int low, int high) {int pivot = arr[high];int i = (low - 1);for (int j = low; j <= high - 1; j++) {if (arr[j] < pivot) {i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return (i + 1);}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}}```二、查找算法1. 二分查找(Binary Search):对于已排序的数组,通过比较给定值与数组中间元素的大小,将查找范围缩小一半,直到找到目标元素或查找范围为空。

大学c笔试题及答案

大学c笔试题及答案

大学c笔试题及答案一、选择题(每题2分,共20分)1. 在C语言中,用于定义一个字符常量的是()。

A. 单引号B. 双引号C. 反引号D. 尖括号2. 下列哪个选项是C语言中的合法标识符?()A. 2variableB. intC. _variableD. variable-3. C语言中,用于表示逻辑“与”操作的运算符是()。

A. &&B. ||C. !D. =4. 在C语言中,哪个关键字用于定义一个函数?()A. classB. functionC. defD. int5. 下列关于数组的描述,错误的是()。

A. 数组可以存储相同类型的多个元素B. 数组的索引从0开始C. 数组的大小在定义后可以改变D. 数组在定义时必须指定大小6. C语言中,用于从标准输入读取一个字符的函数是()。

A. getchar()B. scanf()C. printf()D. scanff()7. 在C语言中,用于定义一个结构体的关键字是()。

A. structB. unionC. enumD. typedef8. C语言中,用于实现条件判断的关键字是()。

A. ifB. switchC. caseD. default9. 下列哪个选项不是C语言中的基本数据类型?()A. intB. floatC. stringD. char10. 在C语言中,用于声明一个指针变量的关键字是()。

A. pointerB. ptrC. *D. &二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型变量的正确语句是:______。

2. 一个C语言程序的执行从______函数开始。

3. 在C语言中,表示逻辑“或”操作的运算符是______。

4. 用于定义一个全局变量的关键字是______。

5. C语言中,用于实现循环结构的关键字包括______和______。

6. 在C语言中,______运算符用于计算两个整数的商并向下取整。

C语言笔试题及答案

C语言笔试题及答案

C语言笔试题及答案C语言笔试题及答案引导语:笔试是面试程序员的必过一关,以下是店铺分享给大家的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个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。

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);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语言是一种广泛使用的编程语言,可以用于解决各种计算机编程问题。

因此,题目的选择范围非常广泛。

以下是一些思考题和示例答案,供您参考。

题目一:写一个程序,计算并输出一个给定数组的平均值。

```c#include <stdio.h>int main() {int arr[] = {5, 10, 15, 20, 25};int n = sizeof(arr) / sizeof(arr[0]);int sum = 0;for(int i = 0; i < n; i++) {sum += arr[i];}float average = (float) sum / n;printf("平均值为:%.2f\n", average);return 0;}```题目二:写一个程序,将一个给定的字符串反转并输出。

```c#include <stdio.h>#include <string.h>void reverse(char* str) {int start = 0;int end = strlen(str) - 1;while(start < end) {char temp = str[start];str[start] = str[end];str[end] = temp;start++;end--;}}int main() {char str[] = "Hello World!";printf("原始字符串:%s\n", str);reverse(str);printf("反转字符串:%s\n", str);return 0;}```题目三:写一个程序,输入一个正整数n,输出从1到n的所有偶数。

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语言笔试题带答案8.doc

C语言笔试题带答案8.doc

C语言笔试题带答案8.doc2021-09-2506:30:01阅读(82)1525人收藏本页标签: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―firstinlastout)。

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

a)冒泡排序为n2b)冒泡排序为nc)快速排序为nd)快速排序为n(n一1)/2答案:d评析:假设线性表的长度为n,则在最坏情况下,冒泡排序须要经过n/2遍的从前往后读取和n/2遍的从后往前读取,须要比较次数为n(n-1)/2。

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

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

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

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

(5)以下对于线性链表的叙述中恰当的就是________。

a)存储空间不一定是连续,且各元素的存储顺序是任意的b)存储空间不一定就是已连续,且前件元素一定存储在后件元素的前面c)存储空间必须连续,且前件元素一定存储在后件元素的前面d)存储空间必须已连续,且各元素的存储顺序就是任一的答案:a评析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

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

c c 笔试试题及答案

c c 笔试试题及答案1. 选择题(每小题2分,共40分)1) 下列哪个选项不是计算机科学的基本原理?A. 算法B. 数据结构C. 程序设计D. 物理学2) 在C语言中,下列哪个选项不属于逻辑运算符?A. &&B. ||C. !D. ==3) 哪个存储器层次结构中存取速度最快?A. 寄存器B. 缓存C. 主存D. 辅助存储器4) 在面向对象编程中,继承关系中的"父类"和"子类"分别对应什么?A. 接口、实现类B. 派生类、基类C. 子类、父类D. 父类、子类5) 下列哪个排序算法的时间复杂度最好?A. 冒泡排序B. 插入排序C. 堆排序D. 快速排序2. 编程题(共40分)题目:编写一个Python程序,它接受用户输入的一个数字n,并计算出n的阶乘。

```pythondef factorial(n):if n == 0 or n == 1:return 1else:return n * factorial(n-1)n = int(input("请输入一个数字:"))result = factorial(n)print("{}的阶乘是:{}".format(n, result))```3. 简答题(每小题10分,共20分)题目:简述什么是机器学习,并举例说明。

机器学习是一种利用计算机技术和统计方法来使计算机能够从数据中自动学习并改善性能的方法。

它通过训练模型来对未知数据进行预测和决策。

机器学习可以分为监督学习和无监督学习两种类型。

举例说明:假设我们要训练一个垃圾邮件过滤器。

我们可以使用监督学习算法,提供一些已标记为垃圾邮件和非垃圾邮件的样本数据作为训练集,然后让算法学习识别垃圾邮件和非垃圾邮件的特征。

之后,当我们将新的邮件输入到模型中时,模型可以自动进行分类,将其标记为垃圾邮件或非垃圾邮件。

这就是机器学习在实际问题中的应用之一。

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语言笔试集含答案.doc

C语言笔试集含答案.doc

C语言笔试集(含答案)下面的题目必须全部答对才给分:1、如何在c中初始化一个字符数组。

2、如何在C中为一个数组分配空间。

3、如何初始化一个指针数组。

4、如何定义一个有10个元素的整数型指针数组。

5、s[10]的另外一种表达方式是什么。

6、版本中支持哪几种编程语言。

7、要使用CHAR_BIT需要包含哪个头文件。

8、对(-)取整是多少?9、如何让局部变量具有全局生命期。

10、C中的常量字符串应在何时定义?11、如何在两个.c文件中引用对方的变量。

12、使用mal loc之前需要做什么准备工作。

13、r e al loc函数在使用上要注意什么问题。

14、s trtok函数在使用上要注意什么问题。

15、g ets函数在使用上要注意什么问题。

16、C语言的词法分析在长度规则方面采用的是什么策略?17、a+++++b所表示的是什么意思?有什么问题?18、如何定义Bool变量的TRUE和FALSE的值。

19、C语言的con st的含义是什么。

在定义常量时,为什么推荐使用co nst,而不是#define。

20、C语言的volati le的含义是什么。

使用时会对编译器有什么暗示。

这部分是A NSI C的一些问题,题目的前提是必须都答对,看似很变态,但是细想一下,这些都是最基础的,虽然我们在使用他们的时候会犯这样那样的错误,但是最终目的是不犯错误,不是么,那么好,从最基础的开始。

1、如何在C中初始化一个字符数组。

这个问题看似很简单,但是我们要将最简单的问题用最严谨的态度来对待。

关键的地方:初始化、字符型、数组。

最简单的方法是chararray 口;。

这个问题看似解决了, 但是在初始化上好像还欠缺点什么,个人认为:chararra y ⑸二{' 1’,' 2 ' , ' 3’,' 4 ' , ' 5’ };或者 c hara rray[5 ] = { " 1 2345 " };或者ch arar ray[2] [ 10]={ “China ” , " Beijing" };也许更符合“初始化”的意思。

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在字节对齐分别为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,软件系统不会对人为原因造成的错误进行处理。

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

常见C笔试题目含答案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态virtual修饰符会被隐形继承的。

private 也被集成,只事派生类没有访问权限而已。

virtual可加可不加。

子类的空间里有父类的所有变量(static除外)。

同一个函数只存在一个实体(inline除外)。

子类覆盖它的函数不加virtual ,也能实现多态。

在子类的空间里,有父类的私有变量。

私有变量不能直接访问。

————————————————————————–2.输入一个字符串,将其逆序后输出。

(使用C++,不建议用伪码)#include <iostream>using namespace std;void main(){char a[50];memset(a,0,sizeof(a));int i=0,j;char t;cin.getlin e(a,50,’\n’);for(i=0,j=strlen(a)-1;i<strlen(a)/2;i++,j–){t=a[i];a[i]=a[j];a[j]=t;}cout<<a<<endl;}//第二种string str;cin>>str;str.replace;cout<<str;————————————————————————–3.请简单描述Windows内存管理的方法。

内存管理是操作系统中的重要部分,两三句话恐怕谁也说不清楚吧~~我先说个大概,希望能够抛砖引玉吧当程序运行时需要从内存中读出这段程序的代码。

代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的概念。

把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。

这个就是内存管理所要做的事。

内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。

内存管理有块式管理,页式管理,段式和段页式管理。

现在常用段页式管理块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。

这样会造成很大的浪费,平均浪费了50%的内存空间,但时易于管理。

页式管理:把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方法的空间利用率要比块式管理高很多。

段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。

一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一段的物理地址上(计算机最耗时间的大家都知道是I/O吧)。

段页式管理:结合了段式管理和页式管理的优点。

把主存分为若干页,每一页又分为若干段。

好处就很明显,不用我多说了吧。

各种内存管理都有它自己的方法来计算出程序片断在主存中的物理地址,其实都很相似。

这只是一个大概而已,不足以说明内存管理的皮毛。

无论哪一本操作系统书上都有详细的讲解————————————————————————–4.#include “stdafx.h”#define SQR(X) X*Xint main(int argc, char* argv[]){int a = 10;int k = 2;int m = 1;a /= SQR(k+m)/SQR(k+m);printf(“%d\n”,a);return 0;}这道题目的结果是什么啊define 只是定义而已,在编择时只是简单代换X*X而已,并不经过算术法则的a /= (k+m)*(k+m)/(k+m)*(k+m);=>a /= (k+m)*1*(k+m);=>a = a/9;=>a = 1;————————————————————————–5.const 符号常量;(1)const char *p(2)char const *p(3)char * const p说明上面三种描述的区别;如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

(1)const char *p一个指向char类型的const对象指针,p不是常量,我们可以修改p的值,使其指向不同的char,但是不能改变它指向非char对象,如:const char *p;char c1=’a';char c2=’b';p=&c1;//okp=&c2;//ok*p=c1;//error(3)char * const p此时*p可以修改,而p不能修改。

(4)const char * const p这种是地址及指向对象都不能修改。

————————————————————————–6.下面是C语言中两种if语句判断方式。

请问哪种写法更好为什么int n;if (n == 10) // 第一种判断方式if (10 == n) // 第二种判断方式如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了= ————————————————————————–7.下面的代码有什么问题?void DoSomeThing(…){char* p;…p = malloc(1024); // 分配1K的空间if (NULL == p)return;…p = realloc(p, 2048); // 空间不够,重新分配到2Kif (NULL == p)return;…}A:p = malloc(1024);应该写成: p = (char *) malloc(1024);没有释放p的空间,造成内存泄漏。

————————————————————————–8.下面的代码有什么问题?并请给出正确的写法。

void DoSomeThing(char* p){char str[16];int n;assert(NULL != p);sscanf(p, “%s%d”, str, n);if (0 == strcmp(str, “something”)){…}}A:sscanf(p, “%s%d”, str, n);这句该写成: ssc anf(p, “%s%d”, str, &n);————————————————————————–9.下面代码有什么错误Void test1(){char string[10];char *str1=”0123456789″;strcpy(string, str1);}数组越界————————————————————————–10.下面代码有什么问题Void test2(){char string[10], str1[10];for(i=0; i<10;i++){str1[i] =’a';}strcpy(string, str1);}数组越界11.下面代码有什么问题Void test3(char* str1){char string[10];if(strlen(str1)<=10){strcpy(string, str1);}}==数组越界==strcpy拷贝的结束标志是查找字符串中的\0 因此如果字符串中没有遇到\0的话会一直复制,直到遇到\0,上面的123都因此产生越界的情况建议使用 strncpy 和 memcpy ————————————————————————–12.下面代码有什么问题#define MAX_SRM 256DSN get_SRM_no(){static int SRM_no; //是不是这里没赋初值?int I;for(I=0;I<MAX_SRM;I++,SRM_no++){SRM_no %= MAX_SRM;if(MY_SRM.state==IDLE){break;}}if(I>=MAX_SRM)return (NULL_SRM);elsereturn SRM_no;}系统会初始化static int变量为0,但该值会一直保存,所谓的不可重入…————————————————————————–13.写出运行结果:{// test1char str[] = “world”; cout << sizeof(str) << “: “;char *p = str; cout << sizeof(p) << “: “;char i = 10; cout << sizeof(i) << “: “;void *pp= malloc(10); cout << sizeof(p) << endl;}6:4:1:4————————————————————————–14.写出运行结果:{// test2union V {struct X {unsigned char s1:2;unsigned char s2:3;unsigned char s3:3;} x;unsigned char c;} v;v.c = 100;printf(“%d”, v.x.s3);}3————————————————————————–15.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数A1:16位的系统下,int i = 65536;cout << i; // 输出0;int i = 65535;cout << i; // 输出-1;32位的系统下,int i = 65536;cout << i; // 输出65536;int i = 65535;cout << i; // 输出65535;A2:int a = ~0;if( a>65536 ){cout<<”32 bit”<<endl;}else{cout<<”16 bit”<<endl;}————————————————————————–16.C和C++有什么不同从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。

但是,c++编写面向对象的程序比c容易从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。

相关文档
最新文档