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个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。

A)n-1 B)n C)n+l D)2n答案:C评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。

c语言笔试模拟题以及答案

c语言笔试模拟题以及答案

1.一、单选题:(每题1.5分,共60分)1、 C语言程序的基本单位是_______.A. 语句B. 函数C. 程序行D. 字符答案: B2、 C语言程序由( )组成A. 子程序B. 过程C. 函数D. 主程序段程序答案: C3、算法的表示方法有________。

A. 自然语言,传统流程图,N-S流程图,伪代码,计算机语言B. 高级语言,汇编语言,机器语言C. C语言,QBASIC语言,InterDevD. 图形图像法,描述法,编程法E. 计算机语言答案: A4、以下程序的输出结果是main( ){ int k=17;printf(“%d,%o,%x \n”,k,k,k);}A. 17,021,0×11B. 17,17,17C. 17,0×11,021D. 17,21,11答案: D5、下列变量定义中合法的是A. short _a=1-.le-1;B. double b=1+5e2.5;C. long do=0xfdaL;D. float 2_and=1-e-3;答案: A6、 C语言中合法的字符常量是____A. ‘\084′B. ‘\X43′C. ‘ab’D. “\0″答案: B7、下面说法中正确的是( )A. int型和long型运算先将int型转换成unsigned型,再转换B. 两个float型运算结果为double型C. 只要表达式中存在double型,所有其他类型数据都必须转D. 表达式中的类型转换与运算顺序有关答案: C8、以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值答案: D9、设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是A. n=(n*100+0.5)/100.0B. m=n*100+0.5,n=m/100.0C. n=n*100+0.5/100.0D. n=(n/100+0.5)*100.0答案: B10、下列运算符中优先级最高的是A. <B. +C. &&D. !=答案: B11、若变量已正确定义并赋值,下面符合C语言语法的表达式是A. a:=b+1B. a=b=c+2C. int 18.5%3D. a=a+7:c+b答案: B12、设CH是字符型变量,其值为’A',下列表达式的值是CH=(CH > =’A'&&CH < =’Z')?(CH+32):CHA. AB. aC. zD. Z答案: B13、表达式18/4*sqrt(4.0)/8值的数据类型为A. intB. floatC. doubleD. 不确定答案: C14、在C语言中,要求运算数必须是整型的运算符是A. /B. %C. !D. >答案: B15、以下说法中正确的是A. #define和printf都是C语句B. #define是C语句,而printf不是C. printf是C语句,但#define不是D. #define和printf都不是C语句答案: D16、下面程序的输出是main(){int a=-1,b=4,k;k=(a++<=0)&&(!(b–<=0));printf(“%d%d%d%\n”,k,a,b);}A. 0 0 3B. 0 1 2C. 1 0 3D. 1 1 2答案: C17、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行 (m=a > b)&&(n=c > d)后n的值是A. 1B. 2C. 3D. 4答案: B18、若有条件表达式 (exp)?a++:b–,则以下表达式中能完全等价于表达式(exp)的是A. (exp==0B. (exp!=0)C. (exp==1)D. (exp!=1)答案: B19、为表示关系X≥Y≥Z应使用C语言表达式:__A. (X > =Y)&&(Y > =Z)B. (X > =Y)and(Y > =Z)C. (X≥ Y≥ Z)D. (X≥ Y)&(Y≥ Z)答案: A20、能正确表示逻辑关系:”a ≥ =10或a ≤ 0″的C语言表达式是A. a > =10 or a< =0B. a > =0||a < =10C. a > =10 && a < =0D. a < =0 || a>=10答案: D21、下面的程序是______main(){ int x=3,y=0,z=0;if (x==y+z) printf(“****”);else printf(“####”);}A. 有语法错误不能过通过编译B. 输出****C. 可能通过编译,但是不能通过连接,因而不能运行D. 输出####答案: D22、执行下面语句后的输出为( )int i= -1;if (i < =0)printf(“****\n”)else printf(“%%%%\n”)A. ****B. %%%%C. %%%%CD. 有语法错,不能执行答案: D23、若运行以下程序时,从键盘输入 ADescriptor < CR > ( < CR > 表示回车),则下面程序的运行结果是#include <stdio.h>main(){char c;int v0=0,v1=0,v2=0;do{switch(c=getchar()){case ‘a’:case ‘A’:case ‘e’:case ‘E’:case ‘i’:case ‘I’:case ‘o’:case ‘O’:case ‘u’:case ‘U’:v1+=1;default:v0+=1;v2+=1;}}while(c!=’\n’);printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);}A. v0=7,v1=4,v2=7B. v0=8,v1=4,v2=8C. v0=11,v1=4,v2=11D. v0=12,v1=4,v2=12答案: D24、以下程序的输出结果是main( ){ int n=4;while(n–)printf(“%d “,–n);}A. 2 0B. 3 1C. 3 2 1D. 2 1 0答案: A25、有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。

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语言笔试考试题及答案一、选择题1. 在C语言中,字符型数据使用的关键字是:A. charB. intC. floatD. double答案:A2. 下列标识符中合法的是:A. 123nameB. _nameC. name$D. %name答案:B3. 表达式"5 + 3 * 2 - 4 / 2"的值是:A. 9B. 12C. 10D. 8答案:C4. 下列哪个语句可以用于在屏幕上输出字符型变量c的值:A. printf("%c", c);B. printf("%d", c);C. printf("%s", c);D. printf("%f", c);答案:A5. 下列哪个语句可以用于从键盘输入整型变量a的值:A. scanf("%d", a);B. scanf("%f", &a);C. scanf("%s", a);D. scanf("%c", &a);答案:B二、编程题1. 编写一个程序,输入一个整数n,计算并输出n的阶乘。

答案:```c#include <stdio.h>int main() {int n, i;long long factorial = 1;printf("请输入一个整数:");scanf("%d", &n);for (i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘为:%lld\n", n, factorial);return 0;}```2. 编写一个程序,输入一个整数n,判断并输出n是否为素数。

答案:```c#include <stdio.h>int isPrime(int num) {int i;if (num <= 1) {return 0;}for (i = 2; i <= num / 2; i++) { if (num % i == 0) {return 0;}}return 1;}int main() {int n;printf("请输入一个整数:"); scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n); } else {printf("%d不是素数\n", n); }return 0;}```三、简答题1. C语言中的指针有什么作用?答案:指针在C语言中用于直接访问内存地址,可以提高程序的执行效率和灵活性。

c语言笔试考试题及答案

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笔试题目及答案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语言笔试考试题及答案一、选择题(每题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语言编写函数笔试题及答案

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语言笔试考试题汇总含答案
A、int a[]={1,2}; B、char *a[3];
C、char s[10]="test"; D、int n=5,a[n];
<标准答案>=d
[题目描述]
19、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回实参
D、传递方式由用户指定
<标准答案>=b
[题目描述]
21、以下的for循环______ 。
for(x=0, y=0; (y!=123)&&(x<4);x++);
scanf("%d",&x);
if(x--<5) printf("%d",x);
else printf("%d",x++);
}
程序运行后,如果从键盘上输人5,则输出结果是______ 。
A、3 B、 4 C、 5 D、 6
b++; c++;
return(a+b+c);
}
main()
{int a = 2, i;
for(i=0;i<3;i++) printf("%d\n",f(a));
}
A、 7 B、 7 C、 7 D、 7
m=2、n=1,则逻辑表达式(m==a>b)&&(n==c>d) 的值为______。
A、0 B、 1 C、2 D、 3
<标准答案>=a

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语言笔试题及参考答案-东软集团一、选择题(共30题,每题2分,满分60分)1、(数据结构)对图中的二叉树,按先根次序遍历得到的结点序列为BA、ABCDHEIFGB、ABDHIECFGC、HDIBEAFCGD、HIDBEFGAC2、(数据结构)设线性表(a1,a2,a3,...,a500)中所有元素的值由小到大排列,对一个给定的值K,用二分法查找表中与K相等的元素,在查找不成功的情况下,至多需要比较 A 次。

(本人拿不准)A、8B、9C、10D、113、(数据结构)二叉树的查找有深度优先和广度优先,深度优先包括 AA、前序遍历、后序遍历、中序遍历B、前序遍历、后序遍历、层次遍历C、前序遍历、中序遍历、层次遍历D、中序遍历、后序遍历、层次遍历4、(数据结构)已知二叉树的先序序列为ABDECF,中序序列为DBEAFC,则后序序列为DA、DEBAFCB、DEFBCAC、DEBCFAD、DEBFCA5、(数据结构)队列是一种常用的数据结构,其元素的入队与出队遵循A 原则。

A、先进先出B、先进后出C、随机进、随机出D、顺序进、随机出6、(数据结构)在数据结构中,结点及结点间的相互关系是数据的逻辑结构,数据结构按逻辑关系的不同,通常可分为两类A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构7、(数据结构)队列是一种常用的数据结构,其元素的入队与出队遵循原则。

A、先进先出B、先进后出C、随机进、顺序出D、顺序进、随机出8、(数据结构)与单向链表相比,双向链表的优点之一是A、更节省存储空间B、便于进行随机访问C、更容易访问相邻结点D、可以省略头指针和尾指针9、(操作系统)在文件存储设备管理中,有三类常用字的空闲块管理方法,即位图向量法,空闲块链表法和A、级目录法B、多级目录法C、分区法D、索引法10、(操作系统)在进程管理中,当时,进程从阻塞状态变为就绪状态。

A、进程被进程调度程序选中B、等待某一事件C、等待事件发生D、时间片用完11、(操作系统)若进程P1正在运行,操作系统强行撤下P1进程所占用的CPU,让具有更高优先级的进程P2运行,这种调度方式称为A、中断方式B、抢占方式C、非抢占方式D、查询方式12、(操作系统)I/O控制方式有多种,一般用于大型、高效的计算机系统中。

c语言笔试题及答案

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

c语言笔试题带答案第一题:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```答案:输出 "Hello World!"第二题:```c#include <stdio.h>int main() {int a = 5;int b = 3;int c = a + b;printf("%d\n", c);return 0;}```答案:输出 "8"第三题:```c#include <stdio.h>int main() {int x = 10;int y = 3;float z = (float) x / y; printf("%.2f\n", z); return 0;}```答案:输出 "3.33"第四题:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```答案:根据输入的整数判断是偶数还是奇数并打印相应结果。

第五题:```c#include <stdio.h>int main() {int n;scanf("%d", &n);int sum = 0;int num;for (int i = 0; i < n; i++) {printf("请输入第%d个整数:", i + 1);scanf("%d", &num);sum += num;}printf("这%d个整数的和为:%d\n", n, sum);return 0;}```答案:根据输入的整数个数和整数值求和并打印结果。

c语言笔试题及答案

c语言笔试题及答案

c语言笔试题及答案# C语言笔试题及答案## 一、选择题1. 题目:以下哪个是C语言的标准输入输出库函数? - A. `printf()`- B. `scanf()`- C. `cout`- D. `cin`答案:A、B2. 题目:C语言中,哪个关键字用于声明一个函数? - A. `int`- B. `void`- C. `return`- D. `function`答案:A3. 题目:以下哪个语句是正确的C语言语句?- A. `int a = 5;`- B. `int a = 5.5;`- C. `int a = "5";`- D. `int a = true;`答案:A## 二、简答题1. 题目:简述C语言中指针的概念及其用途。

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

指针的主要用途包括动态内存分配、数组操作、函数参数传递等。

通过指针,可以间接访问和修改其他变量的值,实现数据共享和高效内存使用。

2. 题目:解释C语言中的递归函数。

答案:递归函数是指在函数内部调用自身的函数。

递归函数通常用于解决可以分解为相同问题的子问题的问题,如阶乘计算、斐波那契数列等。

递归函数需要有一个明确的结束条件,以避免无限递归。

## 三、编程题1. 题目:编写一个C语言程序,实现求两个整数的最大公约数。

```c#include <stdio.h>int gcd(int a, int b) {if (b == 0)return a;return gcd(b, a % b);}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数是:%d\n", gcd(num1, num2)); return 0;}```2. 题目:编写一个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语言经典笔试题及答案详解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语言笔试题目及答案1. 编写一个程序,从键盘上输入两个整数,然后输出它们的和。

```c#include <stdio.h>int main() {int num1, num2, sum;printf("输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```2. 编写一个程序,判断一个输入的整数是奇数还是偶数。

```c#include <stdio.h>int main() {int num;printf("输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```3. 编写一个程序,输入一个字符,判断它是否为小写字母。

```c#include <stdio.h>int main() {char ch;printf("输入一个字符:");scanf(" %c", &ch);if (ch >= 'a' && ch <= 'z') {printf("%c是小写字母\n", ch);} else {printf("%c不是小写字母\n", ch);}return 0;}```4. 编写一个程序,计算输入的两个数的最大公约数。

```c#include <stdio.h>int main() {int num1, num2, i, gcd;printf("输入两个整数:");scanf("%d %d", &num1, &num2);for (i = 1; i <= num1 && i <= num2; i++) {if (num1 % i == 0 && num2 % i == 0) {gcd = i;}}printf("最大公约数为:%d\n", gcd);return 0;}```5. 编写一个程序,判断一个输入的年份是否是闰年。

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

笔试题一、填空题(每个空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,软件系统不会对人为原因造成的错误进行处理。

它有利于(A BCD) A:缺陷及早暴露,加快定位进程;B:明确表示函数接口或算法逻辑的校验关系,增强软件代码的可读性;C:去除不必要的容错处理,简化代码处理流程,降低软件处理复杂度;D:强化编程接口之间的契约,增强软件的可维护性;7)对于循环体的执行效率,下述说确的是(ABCD )A:循环体工作量最小化B:在多重循环中,应将最忙的循环放在最层C:尽量减少循环的嵌套层次D:避免在循环体做无谓的判断语句,将循环语句置于判读语句的代码块之中8)设数组a[5]={10,20,30,40,50};已知指针p指向a[1];则表达式*++p的值是(A)A.20B.21C.30D.319)有以下程序段, 执行后,mul的值为(B)int a[ ]={1,3,5,7,9};int mul, *data, x;mul=1;data=&a[1];for(x=0; x<3; x++) mul *= *(data+x);A.15B.105C.315D.94510)有以下程序段,执行后的结果为(D)int list[ ]={6,7,8,9,10};int * p;p=list;*(p+2)=10;printf(”%d, %d\n”,*p,*(p+2));A.8, 10B.6, 8C.7, 9D.6, 1011)以下语句不能正确赋值的是(A)A.char s1[10]; s1=”China”;B.char s2[ ]={ ’C’,’h’,’i’,’n’,’a’}; C.char s3[20]=”China”;D.char *s=”China”;12)C语言中,定义PI为一个符号常量,正确的是(A) A.#define PI 3.14B.define PI 3.14C.#include PI 3.14D.include PI 3.1413)有以下程序,该程序输出的结果为(B)#define N 3#define M N+2#define NUM 2*M+1main(){int i;i=NUM;printf(”%d\n”,i);}A.11 、B.9C.7D.514)有以下程序,程序运行后的输出结果是(D )#include <string.h>#include <stdio.h>main(){ char *p=“abcde\0fghjik\0”;printf(“%d\n” , strlen(p)); }A.12B.15C.6D.515)为了比较两个字符串s1和s2是否相等,应当使用( C )A.if(s1=s2)B.if(s1==s2)C.if(strcmp(s1, s2)==0)D.if(strcmp(&s1, &s2)==0)16)设有如下结构定义:struct student{ int num;char name[20];char sex;int age;char addr[30];} stud;若用printf(“%s\n”,…)访问该结构中name值的正确方法是(D )A.stud->nameB.&C.stud.&nameD.17)想对一个文本文件的尾部追加写入,应当在fopen语句中使用的文件操作方式指示符号为( D )A.wB.rC.wbD.a三、指出下列程序的错误(每题4分,共20分)1).如下程序用于输出"Welcome Home"。

请指出其中的错误:(4分)void Test(void){char pcArray[12];strcpy(pcArray,"Welcome Home");printf("%s!", pcArray);return;}答案:数组越界。

2).如下程序用于把"blue"字符串返回,请指出其中的错误:(4分)char *GetBLUE(void){char* pcColor ;char* pcNewColor;pcColor = "blue";pcNewColor = (char*)malloc(strlen(pColor));if(NULL == pcNewColor){return NULL;}strcpy(pcNewColor, pcColor);return pcNewColor;}答案:申请存空间不足,字符串结尾还有'\0'。

3).下面程序期望输出str = hello world,请指出其中的错误:(4分)char * GetStr(char *p){p = "hello world";return p;}void main(){char *str = NULL;if(NULL != GetStr(str)){printf("\r\n str = %s",str);}return;}答案:无法返回字符串,参数使用错误。

4).请指出下面程序错误的地方:(4分)#define BUFFER_SIZE 256void Test(void){char *str = NULL;str = (char *)malloc(BUFFER_SIZE);if(NULL == str){return;}strcpy(str, "hello");free(str);if(NULL != str){strcpy(str, "world");printf(str);}return;}答案:引用了已经释放的存。

5).请指出下面程序的错误:(4分)void GetMemory(char **ppcChar, int iLength) {if(NULL == ppcChar){return;}*ppcChar = (char *)malloc(iLength);return;}void Test(void){char *szStr = NULL;GetMemory(&szStr, 100);if(NULL != szStr){strcpy(szStr, "hello");printf(szStr);}return;}答案:没有释放存。

四、简答题(每题4分,共8分)1)写宏定义MAX,求出两个数中的较大者。

(4分)答案: #defined MAX(A,B) ((A)>=(B)?(A):(B) )2) 画出同下面多叉树等价的二叉树,并作说明。

(4分)答案如下:(采用树的孩子兄弟法将树转换成二叉树)五、编程题(共10分)1)给一个单链表,删除某一节点(要求:先找到是否有这个节点,然后再删除,要能保证程序运行正确)(10分)参考解法如下:include<iostream.h>#include<malloc.h>#include<stdio.h>#include<conio.h>typedef struct linkqueue1{int data;struct linkqueue1 *next;}linkqueue1,linklist;linklist *creat(void) //建立链表{linklist *head;int n=1,len;linklist *p1,*p2;cout<<"input number of records:"<<endl;cin>>len;head=p1=p2=(linklist *)malloc(sizeof(linklist));cout<<"input records:"<<endl;cin>>p1->data;head->next=NULL;while(n++<=len-1){p1=(linklist *)malloc(sizeof(linklist));cin>>p1->data;p2->next=p1;p2=p1;p2->next=NULL;}return (head);}void outlink(linklist *head){linklist *p;p=head;while(p){cout<<p->data<<" ";p=p->next;}}int bianli(linklist *head, int Number) //遍历链表,返回1说明有要删除的元素,反之。

相关文档
最新文档