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。

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个字节. 所以它的大小是20.data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。

c语言常见笔试题及答案

c语言常见笔试题及答案

c语言常见笔试题总结c语言笔试题(九)2006-09-06Tag: C语言1.#include "stdio.h"int main(){int a;int *p;p = &a;*p = 0x500;a = (int )(*(&p));a = (int )(&(*p));if(a == (int)p)printf("equal !\n");elseprintf("not equal !\n");}请问本程序的输出显示是什么?答案:输出显示为”equal!”2.struct {signed int bit0:1;signed int bit1:1;signed int bit2:1;signed int bit3:1;signed int bit4:1;signed int bit5:1;signed int bit6:1;signed int bit7:1;}bits;请问sizeof(bits)是否是正确的表达式?请问语句bits mybits; 的定义是否正确?如果不正确,要如何修改上述的结构定义才能使该语句正确?修改后的结构定义是否会影响sizeof(bits)的正确性?如果正确则该表达式的值为多少?如果将上述的结构中int类型改为char类型,此时sizeof(bits)的大小为多少?答案:1)是正确的表达式,因为sizeof后面的内容可以是类型,也可以是变量。

2)该语句的定义不正确,因为此时的bits为一个变量;应该这样修改结构的定义typedef struct {signed int bit0:1;signed int bit1:1;signed int bit2:1;signed int bit3:1;signed int bit4:1;signed int bit5:1;signed int bit6:1;signed int bit7:1;}bits;修改后sizeof(bits)表达式依然正确,其值为4;类型改为char后其值为1,注意该值是在VC环境中的32位程序中得到的值,在不同的编译器其值有可能不同,因此在编程时不能自己假定类似结构的大小。

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语言笔试试题言过其实,终无大用。

知识愈浅,自信愈深。

以下是店铺为大家搜索整理C语言笔试试题,希望能给大家带来帮助!一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1) 第一台电子数字计算机ENIAC诞生于A.1927年B.1936年C.1946年D.1951年(2) 用FORTRAN语言编制的源程序要变为目标程序,必须经过A.汇编B.解释C.编辑D.编译(3) 计算机软件一般包括系统软件和A.字处理软件B.应用软件C.管理软件D.科学计算机软件(4) 计算机内使用的数是A.二进制数B.八进制数C.十进制数D.十六进制数(5) 目前微型机常用的5.25寸双面高密度软盘的容量是A.360KBB.1.44MBC.760KBD.1.2MB(6) 具有多媒体功能的微机系统常用CD-ROM作为外存储器,它是A.只读内存储器B.只读大容量软盘C.只读硬盘D.只读光盘说明:(7)到(17)题给定的条件如下:微机系统有A和B两个容量相同的软盘驱动器,硬盘C的目录结构为文件AUTOEXEC.BAT的内容为PROMPT $P$GCD F4CD \DOS(7) 微机系统用硬盘C启动后,当前系统提示符是A.C:\>B.C:\DOS>C.C:\F4>D.C>(8) 在用C盘启动后,把A盘格式化成系统盘的命令为A.FORMAT A:B.\FORMAT A:/SC.\DOS\FORMAT A:/SD.\DOS\FORMAT A:\S(9) 设当前盘为C盘,C盘当前目录为\DOS。

把JD1.FOR和JD2.FOR连接起来后存入A盘根目录下,命名为JD3.FOR,应使用命令A.COPY JD1.FOR+JD2.FOR A:JD3.FORB.COPY \F4\JD1.FOR+JD2.FOR A:\JD3.FORC.COPY \F4\JD1.FOR+\F4\JD2.FOR A:\JD3.FORD.COPY \F4\JD1.FOR+\F4\JD2.FOR JD3.FOR(10) 设当前盘为C盘,C盘当前目录为\DOS。

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

C++面试题1 #include “filename.h”和#include <filename.h>的区别?答:对于#include <filename.h>编译器从标准库开始搜索filename.h对于#include “filename.h”编译器从用户工作路径开始搜索filename.h2 头文件的作用是什么?答:一、通过头文件来调用库功能。

在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。

用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。

编译器会从库中提取相应的代码。

二、头文件能加强类型安全检查。

如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则,能大大减轻程序员调试、改错的负担。

3 C++函数中值的传递方式有哪几种?答:C++函数的三种传递方式为:值传递、指针传递和引用传递。

4 内存的分配方式有几种?答:一、从静态存储区域分配。

内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。

例如全局变量。

二、在栈上创建。

在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。

栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

三、从堆上分配,亦称动态内存分配。

程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。

动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

5 实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答:双向链表删除一个节点Ptemplate<class type> void list<type>::delnode(int p){int k=1;listnode<type> *ptr,*t;ptr=first;while(ptr->next!=NULL&&k!=p){ptr=ptr->next;k++;}t=ptr->next;cout<<"你已经将数据项"<<t->data<<"删除"<<endl;ptr->next=ptr->next->next;length--;delete t;}在节点P后插入一个节点:template<class type> bool list<type>::insert(type t,int p){listnode<type> *ptr;ptr=first;int k=1;while(ptr!=NULL&&k<p){ptr=ptr->next;k++;}if(ptr==NULL&&k!=p)return false;else{listnode<type> *tp;tp=new listnode<type>;tp->data=t;tp->next=ptr->next;ptr->next=tp;length++;return true;}}6 写一个函数,将其中的\t都转换成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语言笔试题总结一、选择题(1)下面叙述正确的是(c)a.算法的执行效率与数据的存储结构无关b.算法的空间复杂度是指算法程序中指令(或语句)的条数c.算法的有穷*是指算法必须能在执行有限个步骤之后终止d.以上三种描述都不对(2)以下数据结构中不属于线*数据结构的是(c)a.队列b.线*表c.二叉树d.栈(3)在一棵二叉树上第5层的结点数最多是(b)注:由公式2k-1得a.8b.16c.32d.15(4)下面描述中,符合结构化程序设计风格的是(a)a.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑b.模块只有一个入口,可以有多个出口c.注重提高程序的执行效率d.不使用goto语句(5)下面概念中,不属于面向对象方法的是(d)注:p55-58a.对象b.继承c.类d.过程调用(6)在结构化方法中,用数据流程图(dfd)作为描述工具的软件开发阶段是(b)a.可行*分析b.需求分析c.详细设计d.程序编码(7)在软件开发中,下面任务不属于设计阶段的是(d)a.数据结构设计b.给出系统模块结构c.定义模块算法d.定义需求并建立系统模型(8)数据库系统的核心是(b)a.数据模型b.数据库管理系统c.软件工具d.数据库(9)下列叙述中正确的是(c)a.数据库是一个*的系统,不需要*作系统的支持b.数据库设计是指设计数据库管理系统c.数据库技术的根本目标是要解决数据共享的问题d.数据库系统中,数据的物理结构必须与逻辑结构一致(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是(a)注:p108a.内模式b.外模式c.概念模式d.逻辑模式(11)算法的时间复杂度是指(c)a.执行算法程序所需要的时间b.算法程序的长度c.算法执行过程中所需要的基本运算次数d.算法程序中的指令条数(12)算法的空间复杂度是指(d)a.算法程序的长度b.算法程序中的指令条数c.算法程序所占的存储空间d.算法执行过程中所需要的存储空间(13)设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(b)注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出a.349b.350c.255d.351(14)结构化程序设计主要强调的是(b)a.程序的规模b.程序的易读*c.程序的执行效率d.程序的可移植*(15)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(d)注:即第一个阶段a.概要设计b.详细设计c.可行*分析d.需求分析(16)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。

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语言常见笔试题

c语言常见笔试题

C语言常见笔试题
以下是一些常见的C语言笔试题,这些题目涵盖了基本的语法、数据类型、流程控制等方面。

请注意,这只是一小部分可能出现在C 语言笔试中的题目,实际的笔试可能会根据岗位的不同涵盖更广泛的主题。

基本语法:
编写一个程序,输出"Hello,World!"。

变量与数据类型:
声明一个整数变量并初始化为10,输出该变量的值。

运算符:
编写一个程序,计算并输出两个整数的和、差、积、商和余数。

条件语句:
编写一个程序,输入一个整数,判断它是否是正数、负数还是零,并输出相应的提示信息。

循环结构:
使用循环结构输出1到10的所有偶数。

数组:
声明一个整数数组,存储5个成绩,并计算平均值。

字符串处理:
编写一个程序,输入一个字符串,然后输出字符串的长度。

函数:
编写一个函数,接受两个整数参数,返回它们的和。

指针:
声明一个整数变量,然后声明一个指向该变量的指针,并通过指针修改变量的值。

结构体:
声明一个表示学生的结构体,包括学生的姓名、学号和成绩,并输出这些信息。

文件操作:
编写一个程序,打开一个文件,读取文件中的内容并输出到屏幕上。

这些问题涵盖了C语言中的一些基本概念,包括语法、数据类型、流程控制、函数、指针等。

在准备C语言笔试时,建议练习这些题目以熟悉常见的编程任务。

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; 关键字static的作用是什么这个简单的问题很少有人能回答完全。

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语言笔试题(答案)笔试题一、填空题(每个空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语言是微软公司发布的一种面对对象的、运行于.NET Framework之上的高级程序设计语言。

下面我给大家共享C语言面试笔试题的内容,盼望能够关心大家,欢迎阅读!C语言面试笔试题(1)算法的时间简单度是指_______。

A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数答案:C评析:所谓算法的时间简单度,是指执行算法所需要的计算工作量。

(2)下列叙述中正确的是________。

A)线性表是线性结构B)栈与队列是非线性结构C)线性链表是非线性结构D)二叉树是线性结构答案:A评析:一般将数据结构分为两大类型:线性结构与非线性结构。

线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

(3)下面关于完全二叉树的叙述中,错误的是_________。

A)除了最终一层外,每一层上的结点数均达到最大值B)可能缺少若干个左右叶子结点C)完全二叉树一般不是满二叉树D)具有结点的完全二叉树的深度为[log2n]+1答案:B评析:满二叉树指除最终一层外每一层上全部结点都有两个子结点的二叉树。

完全二叉树指除最终一层外,每一层上的结点数均达到最大值,在最终一层上只缺少右边的若干子结点(叶子结点)的二叉树。

C语言笔试题答案篇(1)结构化程序设计主要强调的是_________。

A)程序的规模B)程序的易读性C)程序的执行效率D)程序的可移植性答案:B评析:结构化程序设计主要强调的是结构化程序清楚易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。

(2)在软件生命周期中,能精确地确定软件系统必需做什么和必需具备哪些功能的阶段是________。

A)概要设计B)具体设计C)可行性分析D)需求分析答案:D评析:需求分析是对待开发软件提出的需求进行分析并给出具体定义,即精确地确定软件系统的功能。

编写软件规格说明书及初步的用户手册,提交评审。

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函数,接收一个字符串作为参数,将其反转并返回。

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

1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

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

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

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

那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。

4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。

5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。

6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。

7.什么函数不能声明为虚函数?Constructor(构造函数)函数不能声明为虚函数。

8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。

9.写出float x 与“零值”比较的if语句。

if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。

11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)IP地址由两部分组成,网络号和主机号。

不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。

写出C程序。

循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。

上海华为的一道关于指针方面的编程题int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。

(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)华为笔试题含答案 [软件工程题]写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。

如:100个1是一个组合,5个1加19个5是一个组合。

请用C++语言写。

答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0<=x<=100,0<=y<=50,0<=z=20,所以可以编程为:number=0;for (x=0; x<=100; x++)for (y=0; y<=50; y++)for (z=0; z<=20; z++)if ((x+2*y+5*z)==100)number++;cout<<number<<endl;上面这个程序一共要循环100*50*20次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。

我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z<=20 x<=100 y<=50所以(x+2y)<=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0, x=100, 98, 96, 0z=1, x=95, 93, ..., 1z=2, x=90, 88, ..., 0z=3, x=85, 83, ..., 1z=4, x=80, 78, ..., 0......z=19, x=5, 3, 1z=20, x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为: (51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1 某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for (int m=0;m<=100;m+=5){number+=(m+2)/2;}cout<<number<<endl;这个程序,只需要循环21次, 两个变量,就可以得到答案,比上面的那个程序高效了许多倍----只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。

而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事——这不是一个专业的研发人员的行为。

那么,那种最容易想到的算法就完全没有用吗?不,这种算法正好可以用来验证新算法的正确性,在调试阶段,这非常有用。

在很多大公司,例如微软,都采用了这种方法:在调试阶段,对一些重要的需要好的算法来实现的程序,而这种好的算法又比较复杂时,同时用证是正确的),那么说明优化的算法出了问题,需要修改。

可以举例表示为:#ifdef DEBUGint simple();#end ifint optimize();......in a function:{result=optimize();ASSERT(result==simple());}这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。

同时,在程序的发布版本,却不会包含笨重的simple()函数。

——任何大型工程软件都需要预先设计良好的调试手段,而这里提到的就是一种有用的方法。

一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。

#include "stdio.h"#include "conio.h"struct stu{char name[20];char sex;int no;int age;struct stu * next;}*linklist;struct stu *creatlist(int n){int i;//h为头结点,p为前一结点,s为当前结点struct stu *h,*p,*s;h = (struct stu *)malloc(sizeof(struct stu));h->next = NULL;p=h;for(i=0;i<n;i++){s = (struct stu *)malloc(sizeof(struct stu));p->next = s;printf("Please input the information of the student: name sex no age \n"); scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);s->next = NULL;p = s;}printf("Create successful!");return(h);}void deletelist(struct stu *s,int a){struct stu *p;while(s->age!=a){p = s;s = s->next;}if(s==NULL)printf("The record is not exist.");else{printf("Delete successful!");}}void display(struct stu *s){s = s->next;while(s!=NULL){printf("%s %c %d %d\n",s->name,s->sex,s->no,s->age); s = s->next;}}int main(){struct stu *s;int n,age;printf("Please input the length of seqlist:\n"); scanf("%d",&n);s = creatlist(n);display(s);printf("Please input the age:\n");scanf("%d",&age);deletelist(s,age);display(s);return 0;}2、实现一个函数,把一个字符串中的字符从小写转为大写。

#include "stdio.h"void uppers(char *s,char *us){for(;*s!='\0';s++,us++){if(*s>='a'&&*s<='z')*us = *s-32;else*us = *s;}*us = '\0';}int main(){char *s,*us;char ss[20];printf("Please input a string:\n");scanf("%s",ss);s = ss;uppers(s,us);printf("The result is:\n%s\n",us);getch();}随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。

不能用字符串库函数/***************************************************************1.函数名称:Symmetry功能:判断一个数时候为回文数(121,35653)输出:若为回文数返回值为1 esle 0******************************************************************/unsigned char Symmetry (long n){long i,temp;i=n; temp=0;while(i) //不用出现长度问题,将数按高低位掉换{temp=temp*10+i%10;i/=10;}return(temp==n);}方法一/* --------------------------------------------------------------------------- 功能:判断字符串是否为回文数字实现:先将字符串转换为正整数,再将正整数逆序组合为新的正整数,两数相同则为回文数字输入:char *s:待判断的字符串输出:无返回:0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字;3:字符串不为回文数字;4:待判断的字符串溢出---------------------------------------------------------------------------- */ unsigned IsSymmetry(char *s){char *p = s;long n = 0;long nTemp = 0;/*判断输入是否为空*/if (*s == \'\\0\')return 1;/*将字符串转换为正整数*/while (*p != \'\\0\'){/*判断字符是否为数字*/if (*p<\'0\' || *p>\'9\')return 2;/*判断正整数是否溢出*/if ((*p-\'0\') > (4294967295-(nNumber*10)))return 4;nNumber = (*p-\'0\') + (nNumber * 10);p++;}/*将数字逆序组合,直接抄楼上高手的代码,莫怪,呵呵*/ n = nNumber;while(n){/*判断正整数是否溢出*/if ((n%10) > (4294967295-(nTemp*10)))return 3;nTemp = nTemp*10 + n%10;n /= 10;}/*比较逆序数和原序数是否相等*/if (nNumber != nTemp)return 3;return 0;}方法二/* --------------------------------------------------------------------------- 功能:判断字符串是否为回文数字实现:先得到字符串的长度,再依次比较字符串的对应位字符是否相同输入:char *s:待判断的字符串输出:无返回:0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字;3:字符串不为回文数字---------------------------------------------------------------------------- */ unsigned IsSymmetry_2(char *s){char *p = s;int nLen = 0;int i = 0;/*判断输入是否为空*/if (*s == \'\\0\')return 1;/*得到字符串长度*/while (*p != \'\\0\'){/*判断字符是否为数字*/if (*p<\'0\' || *p>\'9\') return 2;nLen++;p++;}/*长度不为奇数,不为回文数字*/ if (nLen%2 == 0)return 4;/*长度为1,即为回文数字*/if (nLen == 1)return 0;/*依次比较对应字符是否相同*/p = s;i = nLen/2 - 1;while (i){if (*(p+i) != *(p+nLen-i-1)) return 3;i--;}return 0;}求2~2000的所有素数.有足够的内存,要求尽量快答案:int findvalue[2000]={2};static int find=1;bool adjust(int value){assert(value>=2);if(value==2) return true;for(int i=0;i<=find;i++){if(value%findvalue[i]==0)return false;}findvalue[find++];return true;}华为最后三个大题1.A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。

相关文档
最新文档