- 相关推荐
C语言软件开发笔试题目(精选5套)
在日常学习、工作生活中,我们都不可避免地会接触到试题,试题有助于被考核者了解自己的真实水平。什么样的试题才是好试题呢?下面是小编收集整理的C语言软件开发笔试题目,希望对大家有所帮助。
C语言软件开发笔试题目 1
(1)什么是预编译,何时需要预编译:
答案:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令吗,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的.操作,可以放在程序中的任何位置。c编译系统在对程序进行通常的编译之前,先进行预处理。c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译。
(2)char* const p, char const* p,const char*p 上述三个有什么区别?
答案:
char * const p; //常量指针,p 的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可以改
const char *p;//和char const *p等价
(3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc";
const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < <( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout <
< ( str7 == str8 ) < < endl;
结果是:0 0 1 1 str1,str2,str3,str4 是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域,
(4)以下代码中的两个sizeof 用法有问题吗?
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0;i
if( a <=str[i] && str[i] <=z )
str[i] -= (a-A );
}
char str[] = "aBcDe"; cout < < "str 字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl;
UpperCase( str ); cout < < str < < endl;
答案:函数内的sizeof 有问题。根据语法,sizeof 如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str 是一个静态定义的数组,因此其大小为6,因为还有\0,函数内的str 实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof 作用于上只将其当指针看,一个指针为4 个字节,因此返回4。
(5)一个32 位的机器,该机器的指针是多少位答案:
指针是多少位只要看地址总线的位数就行了。80386 以后的机子都是32 的数据总线。所以指针的位数就是4 个字节了。
C语言软件开发笔试题目 2
(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
评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
(3)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_________。
A)控制流B)加工C)数据存储D)源和潭
答案:A
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(4)软件需求分析一般应确定的是用户对软件的__________。
A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求
答案:D
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
C语言软件开发笔试题目 3
(1)下述关于数据库系统的叙述中正确的是________。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
答案:A
评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。
(2)关系表中的每一横行称为一个________。
A)元组B)字段C)属性D)码
答案:A
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(3)数据库设计包括两个方面的设计内容,它们是________。
A)概念设计和逻辑设计B)模式设计和内模式设计
C)内模式设计和物理设计D)结构特性设计和行为特性设计
答案:A
评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。
(4)请读程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(” a=%d,b=%ec。%f ”,a,b,C);
}
若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)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遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。
(5)一个良好的算法由下面的基本结构组成,但不包括__________。
A)顺序结构B)选择结构C)循环结构D)跳转结构
答案:D
评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。
(6)请选出以下程序的输出结果________。
#include
sub(x,y,z)
int x,y,星符号z:
{星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的`值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。
(7)下面程序在屏幕上的输出是________。
main
{
printf(”ab c”);
}
A)ab c B)a c C)abc D)ab c
答案:B
评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:,换行;,水平制表;,退格;,回车。
(8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。
A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。
(10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元
int星符号int) D)(int星符号)
答案:D
评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。
(11)下面程序输出的结果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(” %d,%d”,I,J);
}
A)5,7 B)5,5 C)语法错误D)7,5
答案:A
评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。
C语言软件开发笔试题目 4
(1)下列叙述中正确的是
A.栈是“先进先出”的线性表
B.队列是“先进先出”的线性表
C.循环队列是非线性结构
D.有序性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是
A.栈
B.树
C.队列
D.二叉树
(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
A.10
B.8
C.6
D.4
(4)下列排序方法中,最坏情况下比较次数最少的是
A.冒泡排序
B.简单选择排序
C.直接插入排序
D.堆排序
(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
A.编译软件
B.操作系统
C.教务管理系统
D.汇编程序
(6)下面叙述中错误的是
A.软件测试的目的`是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A.提高耦合性降低内聚性有利于提高模块的独立性
B.降低耦合性提高内聚性有利于提高模块的独立性
C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D.内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A.数据库设计
B.数据库系统设计
C.数据库维护
D.数据库管理员培训
(9)有两个关系R,S如下:
R
ABC
a32
b01
c21
S
AB
a3
b0
c2
由关系R通过运算得到关系S,则所使用的运算为
A.选择
B.投影
C.插入
D.连接
(10)将E-R图转换为关系模式时,实体和联系都可以表示为
A.属性
B.键
C.关系
D.域
C语言软件开发笔试题目 5
(1)下列数据结构中,属于非线性结构的是
A.循环队列
B.带链队列
C.二叉树
D.带链栈
(2)下列数据结果中,能够按照“先进后出”原则存取数据的是
A.循环队列
B.栈
C.队列
D.二叉树
(3)对于循环队列,下列叙述中正确的是
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指
A.算法在执行过程中所需要的计算机存储空间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D. 高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是
A.可封装。
B. 自顶向下
C.模块化
D. 逐步求精
(7)软件详细设计产生的图如下:
该图是
A.N-S图
B.PAD图
C.程序流程图
D. E-R图
(8)数据库管理系统是
A.操作系统的一部分
B.在操作系统支持下的系统软件
C.一种编译系统
D. 一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A.椭圆图
B.矩形
C.菱形
D. 三角形
(10)有三个关系R,S和T如下:
其中关系T由关系R和S通过某种操作得到,该操作为
A.选择
B.投影
C.交
D.并
(11)以下叙述中正确的是
A.程序设计的任务就是编写程序代码并上机调试
B.程序设计的任务就是确定所用数据结构
C.程序设计的任务就是确定所用算法
D.以上三种说法都不完整
(12)以下选项中,能用作用户标识符的是
A.void
B.8_8
C._0_
D.unsigned
(13)阅读以下程序
#include
main()
{ int case; float printF;
printf(“请输入2个数:”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f ”,case,printF);
}
该程序编译时产生错误,其出错原因是
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
(14)表达式:(int)((double)9/2)-(9)%2的值是
A.0
B.3
C.4
D.5
(15)若有定义语句:int x=10;,则表达式x-=x+x的值为
A.-20
B.-10
C.0
D.10
(16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d ”,a=2*b);
}
程序运行后的输出结果是
A.0,0
B.1,0
C.3,2
D.1,2
(17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是
A.if(a>B. c=a,a=b,b=c;
B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
(18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d ”,C.;
}
程序运行后的输出结果是
A.3
B.5
C.7
D.9
(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是
A.if((a>b)&&(b>C.) k=1;
else k=0;
B.if((a>b)||(b>C. k=1;
else k=0;
C.if(a<=B. k=0;
else if(b<=C.k=1;
D.if(a>B. k=1;
else if(b>C.k=1;
else k=0;
20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d ”,n);
}
程序运行后的输出结果是
A.0
B.2
C.3
D.5
(21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d ”,k,n);
}
程序运行后的输出结果是
A.0 2
B.1 3
C.5 7
D.1 2
(22)有以下定义语句,编译时会出现编译错误的是
A.char a=’a’;
B.char a=’ ’;
C.char a=’aa’;
D.char a=’x2d’;
(23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d ”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是
A.E,68
B.D,69
C.E,D
D.输出无定值
(24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d ”,a);}
程序运行后的'输出结果是
A.32
B.12
C.21
D.22
(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i
{ max=MIN;
if(max
return max;
}
造成错误的原因是
A.定义语句int i,max;中max未赋初值
B.赋值语句max=MIN;中,不应给max赋MIN值
C.语句if(max
D.赋值语句max=MIN;放错了位置
(26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d ”,m,n,*p,*q);
}
程序运行后的输出结果是
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是
A.p=a
B.q[i]=a[i]
C.p=a[i]
D.p=&a[2][1]
(28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s ”,p);
}
程序运行后的输出结果是
A.9,One*World
B.9,One*Dream
C.10,One*Dream
D.10,One*World
(29)有以下程序
#include
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);
}
A.3 3 4 4
B.2 0 5 0
C.3 0 4 0
D.0 3 0 4
(30)有以下程序
#include
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d ”,strlen(a),sizeof(a));
}
程序运行后的输出结果是
A.7,4
B.4,10
C.8,8
D.10,10
(31)下面是有关C语言字符数组的描述,其中错误的是
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
(32)下列函数的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’’) {a++,b++;} }
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’’
(33)设有以下函数
void fun(int n,char * s) {……}
则下面对函数指针的定义和赋值均是正确的是
A.void (*pf)(); pf=fun;
B.viod *pf(); pf=fun;
C.void *pf(); *pf=fun;
D.void (*pf)(int,char);pf=&fun;
(34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d ”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行以后的输出结果是
A.7
B.8
C.9
D.10
(35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d ’,s,t);
}
程序运行后的输出结果是
A.10,64
B.10,10
C.64,10
D.64,64
(36)下面结构体的定义语句中,错误的是
A.struct ord {int x;int y;int z;}; struct ord a;
B.struct ord {int x;int y;int z;} struct ord a;
C.struct ord {int x;int y;int z;} a;
D.struct {int x;int y;int z;} a;
(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是
A.char str[ ]=”string”;c=str;
B.scanf(“%s”,C.;
C.c=get);
D.*c=”string”;
(38)有以下程序
#include
#include
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序运行后的输出结果是
A.1001,ZhangDa,1098.0
B.1001,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1001,ChangRong,1202.0
(39)若有以下程序段
int r=8;
printf(“%d ”,r>>1);
输出结果是
A.16
B.8
C.4
D.2
(40)下列关于C语言文件的叙述中正确的是
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
【C语言软件开发笔试题目】相关文章:
C语言笔试题目10-09
C语言笔试系列题目收集分享08-23
C/C++笔试题目大全08-22
C/C++ 笔试、面试题目05-30
金正科技机试C语言笔试题目07-11
C++类型笔试题目08-01
C++笔试题目分享08-07
文思c++笔试题目10-12
普天C++笔试题目06-10