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 )。

A、本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序的main函数结束2.以下叙述正确的是(C )。

A、在C程序中,main函数必须位于程序的最前面B) C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D) 在对一个C 程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是(D )。

A、一个C源程序可由一个或多个函数组成B) 一个C源程序必须包含一个main函数C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面4.C语言规定,在一个源程序中,main函数的位置( C )。

A、必须在最开始 B) 必须在系统调用的库函数的后面C) 可以任意 D) 必须在最后5.一个C语言源程序是由(B )。

A、一个主程序和若干子程序组成 B) 函数组成C) 若干过程组成 D) 若干子程序组成二填空题1.C源程序的基本单位是函数。

2.一个C源程序中至少应包括一个main函数。

3.在一个C源程序中,注释部分两侧的分界符分别为/* 和 */。

4.一个函数是由两部分组成的,它们分别是函数首部和函数体。

5.在C语言中,一个函数的函数体一般包括声明部分和执行部分。

6.在每个C语句和数据定义的最后必须有一个;。

7.C语言本身没有输入输出语句。

其输入输出是由函数来完成。

8.程序是指一组能使计算机识别和执行的指令,每一个指令都使计算机能够执行相应的操作。

9.源程序是指用高级语言编写的程序。

C源程序文件的扩展名为.c 。

10.目标程序是指计算机不能识别和执行高级语言程序,只能通过高编译系统将高级语言程序转化为二进制的目标程序。

目标程序文件的扩展名为.obj 。

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语言笔试题 单选

1. 下列哪个选项是C语言中正确的注释形式?a. // This is a commentb. /* This is a comment */c. # This is a commentd. <!-- This is a comment -->2. 在C语言中,如何声明一个整数变量?a. variable x;b. int x;c. x : integer;d. declare x as integer;3. 在C语言中,如何获取用户输入?a. get()b. read()c. scanf()d. input()4. 下列哪个运算符用于逻辑与操作?a. &&b. ||c. !d. &5. 下列哪个语句用于在C语言中实现条件判断?a. forb. ifc. switchd. else6. 在C语言中,以下哪个选项用于定义一个常量?a. defineb. constc. constantd. var7. 下列哪个函数用于输出文本到标准输出?a. print()b. echo()c. printf()d. display()8. 在C语言中,如何定义一个字符数组?a. char array[];b. array char[];c. character array[];d. array of char[];9. 下列哪个选项用于在C语言中进行循环迭代?a. iterateb. loopc. ford. repeat10. 在C语言中,如何动态分配内存?a. malloc()b. allocate()c. new()d. create()。

c语言笔试练习题

c语言笔试练习题

3.1 综合练习题13.1.1 试题一、选择(1-30每题1分,31-45每题2分,共60分)1 . 在C语言中,如果下面的变量都是int类型,则输出的结果是()#include<stdio.h>main(){int sum,pad;sum=pad=5;pad=sum++,pad++,++pad;printf("%d\n",pad);}A) 7 B) 6 C) 5 D) 42 . 以下程序的输出结果是()#include <stdio.h>main(){int i=010,j=10;printf("%d,%d\n",++i,j--);}A) 11,10 B) 9,10 C) 010,9 D) 10,93 . 已知在ASCⅡ代码中,字母A的序号是65,以下程序的输出的结果是()#include<stdio.h>main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);}A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,894 . 指针s所指字符串的长度为()char*s="\\"Name\\Address\n";A) 19 B) 15 C) 18 D) 说法不合法5 . 设有说明int(*ptr)[m];其中的标识符ptr是()A) M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量6 . 语句while(!E);中的条件!E等介于A) E= =0 B) E! =1 C) E! =0 D) ~E7 . 以下程序的输出结果是()#include<stdio.h>main()ptrintf("%d\n",NULL);}A)不确定的(因变量无定义) B)0 C)-1 D)18 . 以下函数调用语句中含有()个实参。

普华基础软件c语言笔试题

普华基础软件c语言笔试题

普华基础软件c语言笔试题以下是一份普华基础软件C语言笔试题,供您参考:
一、选择题(请选择一个正确的答案)
1. C语言中,以下哪个是合法的字符常量?
A. '1'
B. '123'
C. '\n'
D. 'Hello'
2. 在C语言中,以下哪个表达式是合法的?
A. a = b = c;
B. a++ + ++b;
C. a = b == c;
D. a = (b + c) d;
3. 以下哪个是C语言中的注释?
A. //
B. / /
C.
D. / // /
4. C语言中,以下哪个关键字可用于定义函数返回类型?
A. void
B. int
C. float
D. char
5. 在C语言中,以下哪个是合法的标识符?
A. 123abc
B. abc123$
C. _abc123
D. a-b-c
二、填空题(请填写正确的答案)
1. C语言中,整型变量通常占用 _______ 字节的内存空间。

2. 在C语言中,数组的大小通常以 _______ 为单位。

3. C语言中的printf函数用于 _______。

4. C语言中,函数的返回值类型必须由 _______ 指定。

5. C语言中,注释可以出现在 _______ 或 _______ 之间。

C工程师笔试题

C工程师笔试题

C工程师笔试题C工程师笔试题一、选择题(每题2分,共40分)1. 下列哪个是C语言的关键字?A. functionB. structC. classD. object2. 下列哪个语句用于释放动态分配的内存?A. deleteB. freeC. mallocD. new3. 下列哪种循环语句不会执行循环体?A. forB. whileC. do-whileD. if4. 下列语句中,哪个是合法的数组定义方式?A. int array[10];B. array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};C. array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};D. int array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};5. 下列哪个函数声明是合法的?A. int add(int a, b);B. int add(int a, int b)C. add(int a, int b) int;D. int add(a, b);二、填空题(每题4分,共40分)1. 以下程序的输出结果是________。

```c#include <stdio.h>void foo(int *x) {*x += 5;}int main() {int a = 10;foo(&a);printf("%d", a);return 0;}```2. 以下程序的输出结果是_________。

```c#include <stdio.h>int main() {int array[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("%d", array[i]);}return 0;}```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语言经典笔试题(非常全)

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ((A) <= (B) (A) : (B))4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。

我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}第三个方案是用gotoLoop:...goto Loop;5. 用变量a给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )答案是:a) int a; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer6. 关键字static的作用是什么?这个简单的问题很少有人能回答完全。

C语言笔试练习题-xs-11

C语言笔试练习题-xs-11

第一章 C语言程序概述一、选择题。

1、C语言程序的基本单位是()A)函数 B)过程 C)子程序 D)子例程2、以下选项中正确的整型常量是()A)34.1 B) -80 C) 2,000 D)1 2 33、在C程序中,可以作为用户标识符的一组标识符是()A)void define WORD B) as_b3 _224 ElseC) Switch -wer case D) 4b DO SIG4、在TURBO C中,int类型变量所占的字节数是()A)1 B)2 C)3 D)45、以下选项中不正确的实型常量是()A)123E+1.5 B) 1e4 C)3.640E-1 D)0.356、以下选项中合法的C语言赋值语句是()A)a=b=34 B) a=34,b=34 C) --i; D) m=(int)(x+y);7、以下()是不正确的转义字符。

A)'\\' B) '\'' C) '020' D) '\0'8、以下所列的C语言常量中,错误的是 ( )A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’二、填空题。

1、用字符串的形式表示China____________。

2、C程序执行过程生成的3种文件及扩展名为_______,________,________。

3、C语言中的标识符只能由3种字符组成,他们是_______,_______和________。

第二章 C语言基本数据类型与表达式一、选择题。

1、在C语言中,要求参加运算的数必须是整数的运算符是()A)% B)/ C)! D)*2、若已定义x和y为 double类型,则表达式“x=1.0,y=x+3/2”的值是()A)1 B)2 C)2.0 D) 2.5-3、若变量已正确定义并赋值,符合C语言语法的表达式是()A)a=a+7; B) a=7+b+c,a++ C) int (12.3/4 ) D) a=a+7=c+b4、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为()(x+y)%2+(int)a/(int)bA)1.0 B)1 C) 2.0 D)25、若x和 n均是 int型变量,且 x的初值为12,n的初值为5 ,则执行下面表达式后x 的值为()x%=(n%=2)A) 0 B)1 C) 2 D)36、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()A)7 B)8 C)9 D)107、指出下列哪一个选项的程序是错误的()A)#include<stdio.h> B) #include<stdio.h>main( ) main( ){int x,y,z; {int x,y,z;x=0;y=x+1; x=0,y=x+1;z=x+y; z=x+y;} }C) #include<stdio.h> D) #include<stdio.h>main( ) main( ){int x,y,z; {int x,y,z;x=0;y=x+1, x=0,y=x+1;z=x+y; z=x+y,} }8、若a为整型变量,则以下语句( )a=-2L;printf(“%d\n”,a);A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2-9、若变量a,i已经正确定义,且i已正确赋值,则合法的语句是()A)i=int(a) B) ++i; C)a=a++=5; D) a=int(i);-10、若执行以下程序段后,c3的值为()int c1=1,c2=2,c3;c3=1.0/c2*c1;A)0 B)0.5 C)1 D)211、如下程序的运行结果是()#include<stdio.h>main( ){ int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A)3 4 B) 4 2 C) 4 3 D) 3 312、以下程序的输入结果为()main( ){int i=4,a;a=i++;printf(“a=%d,i=%d’,a,i);}A)a=4,i=4 B)a=5,i=4C)a=4,i=5 D)a=5,i=513、以下程序的输出结果是()#include <stdio.h>main( ){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b?(a>c?a:c):(b));}A) 5 B) 4 C) 6 D) 不确定14、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A)7 B)6 C)5 D)415、已知int i;float f;,正确的语句是()A)(int f)%i; B)int(f)%i; C) int(f%i); D)(int)f%i;16、已知 int j,i=1;执行语句j=-i++;后,j的值是()A)1 B)2 C)-1 D)-2-17、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是()A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=a*(a=3)18、C语言中运算对象必须是整型的运算符是 ( )A) %= B) / C) = D)〈=19、有以下程序main(){ int m=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是( )A)12353514 B)12353513 C)12343514 D)1234351320、有以下程序main( ){ int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是 ( )A)0256 0400 B)0256 256 C)256 400 D)400 400二、填空题1、若i为int整型变量且赋值为6,则运算i++后的表达式的值是______,变量i的值是_______。

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软件工程师入职笔试题及答案

c软件工程师入职笔试题及答案

一、简答题(共50分)1.你经常使用的主机、OS、编译工具和调试工具是什么。

如何查看系统进程信息,你经常使用的进程治理命令有哪些?(问题尽可能基于你经常使用的Unix 环境作答)。

(10分)答:我经常使用的是Sun主机,操作系统一样是Solaris8或Solaris10。

编译工具包括:g++,gcc,cc等。

调试工具包括:gdb。

(该项了解应聘者对编程环境的偏好,无标准答案。

)经常使用的进程治理命令是:查看:prstat -a 或 top治理:pldd pid 显示链接到每一个进程的动态链接库pstack pid 显示十六进制与符号堆跟踪信息fuser filespwdx pid 查看进程运行目录ptree pid 查看进程树信息2.C中的malloc和C++中的new有什么区别。

(10分)答:malloc和new有以下不同:(1)new、delete 是操作符,能够重载,只能在C++中利用。

(2)malloc、free是函数,能够覆盖,C、C++中都能够利用。

(3)new 能够挪用对象的构造函数,对应的delete挪用相应的析构函数。

(4)malloc仅仅分派内存,free仅仅回收内存,并非执行构造和析构函数。

(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void 指针。

注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete 释放,不要混用。

因为二者实现的机理不同。

3、简述结构化的程序设计、面向对象的程序设计的大体思想。

(10分)答:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一路,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。

4、一个oracle实例是由SGA和哪几个后台进程组成的?SGA有哪些组成部份及简述它们的作用?PGA是什么??(10分)答:后台进程:系统监控和进程监控进程(SMON和PMON)、数据库写进程(DBWR)、日记写进程(LGWR)、归档进程(ARCH)、检查点(CKPT);其它可选进程:调度进程(Dnnn)、恢复进程(RECO)、快照进程(SNPn)、锁进程(LCKn)、并行查询进程(Pnnn)。

c语言笔试100经典题目

c语言笔试100经典题目

1、C语言程序的基本单位是____ A) 程序行B) 语句C) 函数D) 字符、C、12、C语言程序的三种基本结构是____ A、顺序结构,选择结构,循环结构B、递归结构,循环结构,转移结构C、嵌套结构,递归结构,顺序结构D、循环结构,转移结构,顺序结构、A、13、C语言规定,程序中各函数之间A) 既允许直接递归调用也允许间接递归调用B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用D) 不允许直接递归调用允许间接递归调用、A、14、C语言中可处理的文件类型是( ) A) 文本文件和数据文件B)文本文件和二进制文件C)数据文件和二进制文件D)数据代码文件、B、15、C语言可执行程序的开始执行点是( ) A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数、C、16、C语言提供的合法的数据类型关键字是A)double B) short C) integer D) char、B、17、C语言中,运算对象必须是整型数的运算符是A) % B) \ C) %和\ D) * *、A、18、C语言中函数返回值的类型是由( )决定。

A) return语句中的表达式类型B) 调用函数的主调函数类型C) 调用函数时临时D) 定义函数时所指定的函数类型、D、19、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。

A、该数组的长度。

B、该数组的元素个数。

C、该数组中各元素的值。

D、该数组的首地址。

、D、110、C语言中数组下标的下限是________。

A、1 B、0 C、视具体情况D、无固定下限、B、111、C语言中提供的合法关键字是____ A、swith B、cher C、caseD、default、D、112、C语言中文件的存取方式是________。

A、顺序存取B、随机存取C、顺序存取、随机存取均可D、顺序存取、随机存取均不可、C、113、C语言中最简单的数据类型包括A) 整型、实型、逻辑型B) 整型、实型、字符型C) 整型、字符型、逻辑型D) 整型、实型、逻辑型、字符型、B、114、sizeof(float)是( ) A) 一种函数调用B) 一个不合法的表示形式C) 一个整型表达式D) 一个浮点表达式、C、115、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是A) input x,y,z; B) scanf("%d%d%d",&x,&y,&z);C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);、B、116、表达式:10!=9的值是A) true B) 非零值C) 0 D) 1、D、117、表示关系x<=y<=z的c语言表达式为A) (X<=Y)&&(Y<=Z)B) (X<=Y)AND(Y<=Z) C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)、A、118、程序片段:在TC20中, int i=65536; printf("%d\n",i);的输出结果是____ A) 65536 B) 0 C) 有语法错误,无输出结果D) -1、B、119、当调用函数时,实参是一个数组名,则向函数传送的是____A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值、B、120、对嵌套子程序调用说法正确的是____。

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笔试题大全14_附答案

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

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

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

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

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

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

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ((A) <= (B) (A) : (B))4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。

我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}第三个方案是用gotoLoop:...goto Loop;5. 用变量a给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )答案是:a) int a; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer6. 关键字static的作用是什么?这个简单的问题很少有人能回答完全。

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

以下函数乃个人总结的最完美版本,欢迎交流。

最好记下他们吧,被问的概率几乎100%。

strcpy函数:char *strcpy(char * strDest,const char* strSrc)//注意第二个参数用const 修饰{assert((strDest!=NULL)&&(strSrc!=NULL));char *address = strDest; //temporary pointer save address of the strDest. while((*strDest += *strSrc++)!='\0'); //copy the src string to the dest string return strDest; //return dest str}memcpy函数:void* memcpy(void *pvTo,void * pvForm,size_t size){assert(pvTo!=NULL&&pvFrom!=NULL);assert(pbTo>=pvFrom+size || pvFrom>=pvTo+size); //防止内存重叠byte *pbTo =(byte *)pvTo;byte *pbFrom =(byte *)pvFrom;while(size-->0) //copy count bytes of src to dest*pbTo++=*pbFrom++;return pvTo;}strlen完美版:int strlen(const char * str){assert(str!=NULL);int len =0;while((*str++)!='\0') //*str point to the first parameter …s address, str pointer move to the string traillen ++;return len;}strcmp函数完美版:int strcmp(const char * str1,const char *str2){while(1){if(*str1>*str2) return 1;else if(*str1<*str2) return -1;else return 0;str1++;str2++;}}很少有真正精通了C语言编程的学员,一般都有或多或少概念不是完全清楚的问题,特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义指向函数的指针类型,这也是导致学习C困难的一个原因。

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

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

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

char str[10] = "";而且初始化时编译器会检查数组的长度与初始化串的长度是否匹配4)char *pstr;strcpy(pstr,""); //需要初始化并分配空间//上句编译能通过吗?运行时有问题吗?答:可以通过编译,但是pstr指向了常量区,运行时最好只做读操作,写操作不保险。

编译可以通过,但是pstr没有进行有效的初始化,它指向了一个不确定的内存区,运行时会出现内存不可写错误!const char *p1;char * const p2; //const指针必须初始化//上面两句有什么区别吗?答:const char* 和char const* 一样,都是表示指向常量的字符指针。

char * const 表示指向字符的常量指针p1=(const char *)str;//如果是p1=str;编译能够通过吗?明白为什么要类型转换?类型转换的本质是什么?答:可以通过编译。

关于常量与非常量指针的关系是这样的:const指针可以指向const或者非const区域,不会造成什么问题。

非const指针不能指向const区域,会引起错误。

(呵呵,这个问题,很经典)strcpy(p1,"abc");//编译能够通过吗?答:不能通过,strcpy( char*, const char*); char* 不能指向const char*注意:非const指针不能指向const区域,会引起错误。

printf("%d",str);//有问题吗?答:没有问题,输出的是str的地址信息Char *pstr;pstr=3000;//编译能过吗?如果不行,该如何修改以保证编译通过呢?答:不能通过,char* pstr表示pstr是个字符指针,不能指向3000的整形变量。

修改的话,可以这样:pstr = (char*)3000,把pstr指向3000这个地址;long y=(long)pstr;//可以这样做吗?答:可以,y的值为pstr所指的地址。

不过如果是纯粹要地址的话,最好是用unsigned long。

int *p=str;*p=0x00313200;printf("%s",str);//会是什么效果?提示0x31对应字符'1',0x32对应字符'2'。

答:首先编译未必会过关,有些编译器可能不允许int * 直接指向char*。

最好是改为int *p = (int*)str;过关了效果就是什么东西都没有。

int *p=str; p为str所指的地址,*p表示修改了str所指向的内存。

由于sizeof(int)在32位机上,int有4个字节(其实具体要看编译器的配置文件,好像是limit.h,一般是4个字节)所以修改了str[0]-str[3]由于0x00313200头尾都是0,所以字符串为'\0'开头,什么都打印不出来。

这里有个Big-endin 和little-endin的问题。

以0x31323334为例little-endin的机器上面,0x31323334在内存中排列顺序为34 33 32 31,输出为4321,如INTEL 芯片的pcbig-endin机器上面为31 32 33 34 ,输出为1234,如IBM POWERPCp=3000;//p+1的结果会是多少?答:3000+sizeof(int); 指针+1均为原来地址加上sizeof(指针所指的数据类型)char *pc=new char[100];//上述语句在内存中占据几个内存块,怎样的布局情况?答: 本身pc会占用函数栈一个4字节的指针长度(具体是否为4个字节要看机器和编译器)。

new会在堆上申请100个字节sizeof(char)的连续空间。

void test(char **p){*p=new char[100];}//这个编译函数有问题吗?外面要调用这个函数,该怎样传递参数?答:该程序没有问题。

需要在函数中对指针所指的地址进行变化是必须传入指针的地址。

原因是这样的:如果传入的为指针本身,在函数调用的时候,实参会被复制一个实例,这样就不是原来的指针了,对该指针本身进行的任何改变都不能传递回去了。

可以这样理解,如果传入的参数为int,那么对int本身的值的改变就传不回去啦,加个*也是一样的。

//能明白typedef int (*PFUN)(int x,int y)及其作用吗?答:定义了一个函数指针类型的宏,这样PFUN就表示指向返回值为int,且同时带2个int 参数的函数指针类型了。

可以用来定义这样的变量:比如有个函数为int fun( int x, int y );PFUN p = fun;补充::函数指针最大的用处在于它可以被一个模板方法调用,这是我在学java的设计模式时领悟到的.例如,有两个函数的流程结构完全一致,只是内部调用的具体函数不同,如下所示: void func1(){//一段流程代码和面向方面的代理,如安全检查,日志记录等int sum = add( x , y);//一段流程代码和面向方面的代理,如安全检查,日志记录等}void func2(){//与func1完全相同的一段流程代码和面向方面的代理,如安全检查,日志记录等int difference = sub( x , y);//与func1完全相同的一段流程代码和面向方面的代理,如安全检查,日志记录等}那么,可以只定义一个函数,如下所示void func(PFUNC p){//与func1完全相同的一段流程代码和面向方面的代理,如安全检查,日志记录等int difference = p( x , y);//与func1完全相同的一段流程代码和面向方面的代理,如安全检查,日志记录等}调用程序在调用时,让参数p分别指向add和sub函数就可以了.以下是腾讯的笔试面试题:]请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句2、如何输出源文件的标题和目前执行行的行数3、两个数相乘,小数点后位数没有限制,请写一个高精度算法4、写一个病毒5、有A、B、C、D四个人,要在夜里过一座桥。

相关文档
最新文档