软件工程师software engineer笔试题
选择题
1:执行下列程序
#define r 0.5
#define areax r*x*x
main
{int a=1, b=2;
printf ″%5。1f ″, areaa+b;
}
后输出的结果是
执行下列程序
#define r 0.5
#define areax r*x*x
main
{int a=1, b=2;
printf ″%5。1f ″, areaa+b;
}
后输出的结果是
a.0.0
b.0.5
c.3.5
d.4.5
2:过程与函数中的形式参数种类有
a.整型、实型,字符型,布尔型四种参数
b.标准型,自定义型,构造型,指针型四种参数
c.值参型,变量参数型,过程参数型和函数参数型四种
d.无参型,变量参数型,过程参数型和函数参数型四种
3:在c语言中,有值函数的数据类型是指
a.函数形式参数的数据类型
b.函数返回值的数据类型
c.调用该函数时的实参的数据类型
d.任意指定的数据类型
4:设float a=2, b=4, c=3;,以下c语言表达式与代数式 (a+b)c计算结果不一致的是
a.(a+b)*c/2
b.(1/2)*(a+b)*c
c.(a+b)*c*1/2
d.c/2*(a+b)
5:若定义了int a,x,y;,则下列语句中不正确的是
a.x=3,y=5;
b.++x;
c.x=y+=x*30;
d.a=y+x=30;
6:对语句“ int a [ 10 ] ,*p=a; ”,下列表述中哪一个是正确的
a.*p 被赋初值为 a 数组的首地址
b.*p 被赋初值为数组元素 a [ 0 ]的地址
c.p 被赋初值为数组元素 a [ 1 ]的地址
d.p 被赋初值为数组元素 a [ 0 ]的地址
7:正确的c语言用户自定义标识符是
a.print
b.float
c.when
d.random﹪2
8:表达式 !x 等效于
a.x1
b.x0
c.x!=1
d.x!=0
9:设有程序
#include
main()
{
int i,j;
for (i=0,j=1;i<=j+1;i+=2,j—)
printf("%d ",i);
}
在运行上述程序时,for语句中循环体的执行次数是
a.3
b.2
c.1
d.0
10:( ) 不是合法的 c 语句。
a.{int j;j++;}
b.{int j;j++;;}
c.{int j;;j++;}
d.{float j=0;j++;}
11:设有以下程序段:int a=1, b=10, c=1, x; x=a&&b||++c;printf(″%d, %d ″,x,c);执行后输出的结果是
a.0,0
b.0,1
c.1,0
d.1,1
12:设char ch,str[4],*strp;,则正确的赋值语句是
a.ch=″mba″;
b.str=″mba″;
c.strp=″mba″;
d.*strp=″mba″;
13:设typedef char *point;point p,q[3],*r;,则p、q和r分别是字符型的
a.变量、一维数组和指针变量
b.变量、二维数组和指针变量
c.指针变量、一维数组指针和二级指针变量
d.指针变量、一维指针数组和二级指针变量
14:设int x;,则以下语句中错误的输入是
a.scanf (″%d″,x);
b.scanf (″%d″,&x);
c.scanf (″%o″,&x);
d.scanf (″%x″,&x);
15:下列不正确的转义字符是
a.′\′
b.′″
c.′86′
d.′′
16:以下属于c语言保留字的是
a.fopen
b.include
c.get
d.unsigned
17:下列错误的是
a.char s[]=″china″;
b.char s[10]={″china″};
c.char s[10]; s=″china″;
d.char s[10]={′c′, ′h′, ′i′,;′n′, ′a′};
简答题
18:字符串a是由n个小写英文字母(a ~ z)构成的,定义为char a[n]。你能用更少的`空间表示这个字符串吗?请写出从char a[n]到你的新的储存格式的转换函数。
19:命令tail用来打印文件中最后n行。命令格式为:
tail [-n] filename
其中
-n: n表示需要打印的行数,当省略此参数时,n的缺省值为10。
filename: 给定文件名。
例如,命令tail –20 example.txt表示打印文件example.txt的最后20行。
请用c语言实现该程序,该程序应具有一定的错误处理能力,例如能处理非法命令参数和非法文件名。
提示1:使用命令行参数;
提示2:可以使用下面的c库函数:
- int atoi(char *s)将数字串转换为相应整数;
- fopen, fclose, printf, fprintf, exit;
- fgets(char *s, int n, file *fp)从文件中读入一行;
- void *malloc(unsigned size), free申请和释放内存;
- strlen计算字符串长度;
- strcpy将一个字符串拷贝到另一个字符串中。
除此之外,不允许使用其它库函数。
20:链表排序(从小到大)
节点定义为:
struct node{
int nvalue;
struct node* pnext;
};
最后一个节点的pnext = null.
node* sortchain( node* phead );
返回值:链表头
21:何谓全局变量 ? 为什么它能用于函数数据传递 ?
22:建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。
23:下面的代码有什么问题?
char *_strdup( const char *strsource )
{
static char str[max_str_len];
strcpy(str, strsource);
return str;
}
24:在c++ 程序中调用被 c编译器编译后的函数,为什么要加 extern “c”声明?
25:公元4046年,人类科学高度发达,绝大部分人都已经移居至浩瀚的宇宙,在上千颗可居住的星球上留下了人类的印记。然而,此时人类却分裂成了两个联盟:正义联盟和邪恶联盟。两个联盟之间仇恨难解,时有战争。
现在,邪恶联盟通过不正当贸易积聚了大量宇宙财富。因此,正义联盟计划要破坏邪恶联盟的非法贸易网络,从而影响邪恶联盟的经济状况,为下一次战争作好准备。邪恶联盟由数百颗星球组成,贸易通过星球间的运输航道来完成。一条运输航道是双向的且仅连接两个星球,但两个星球之间可以有多条航道,也可能没有。两个星球之间只要有运输航道直接或间接的相连就可以进行贸易。正义联盟计划破坏邪恶联盟中的一些运输航道,使得邪恶联盟的星球分成两部分,任一部分的星球都不能与另一部分的星球进行贸易。但是为了节省破坏行动所需的开支,正义联盟希望破坏尽量少的运输航道来达成目标。请问正义联盟最少需要破坏多少条运输航道呢?
【软件工程师software engineer笔试题】相关文章:
软件工程师的面试囧事03-04
软件工程师面试英语自我介绍03-28
工程师面试笔试题03-19
求故事:软件工程师的面试囧事02-27
网络工程师面试笔试题03-09
软件工程师的职业生涯规划的小技巧03-13
关于软件工程师职业生涯规划书范文参考04-02
华为数据通信工程师面试笔试题03-11
2017笔试各题型答题技巧02-11
给学弟学妹的求职笔面试总结03-18