2022年软件工程师笔试题 2.pdf
选择题1:执行下列程序#define r 0.5#define areax r xx main int a=1,b=2;printf%5。1f,areaa+b;后输出的结果是执行下列程序#define r 0.5#define areax r xx main int a=1,b=2;printf%5。1f,areaa+b;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -后输出的结果是a.0.0 b.0.5 c.3.5 d.4.5 2:过程与函数中的形式参数种类有a.整型、实型,字符型,布尔型四种参数b.标准型,自定义型,构造型,指针型四种参数c.值参型,变量参数型,过程参数型和函数参数型四种d.无参型,变量参数型,过程参数型和函数参数型四种3:在 c 语言中,有值函数的数据类型是指a.函数形式参数的数据类型b.函数返回值的数据类型c.调用该函数时的实参的数据类型名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -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)c1/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 的地址名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -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()名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -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);执行后输出的结果是名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -a.0,0 b.0,1 c.1,0 d.1,1 12:设 char ch,str4,strp;,则正确的赋值语句是a.ch=mba;b.str=mba;c.strp=mba;d.strp=mba;13:设 typedef char point;point p,q3,r;,则 p、q 和 r 分别是字符型的a.变量、一维数组和指针变量b.变量、二维数组和指针变量c.指针变量、一维数组指针和二级指针变量d.指针变量、一维指针数组和二级指针变量14:设 int x;,则以下语句中错误的输入是名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -a.scanf(%d,x);b.scanf(%d,&x);c.scanf(%o,&x);d.scanf(%x,&x);15:下列不正确的转义字符是a.b.c.86d.16:以下属于c 语言保留字的是a.fopen b.include c.get d.unsigned 17:下列错误的是名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -a.char s=china;b.char s10=china;c.char s10;s=china;d.char s10=c,h,i,;n,a;简答题18:字符串 a 是由 n 个小写英文字母(a z)构成的,定义为char an。你能用更少的空间表示这个字符串吗?请写出从char an 到你的新的储存格式的转换函数。19:命令 tail 用来打印文件中最后n 行。命令格式为:tail-n filename 其中-n:n 表示需要打印的行数,当省略此参数时,n 的缺省值为10。filename:给定文件名。例如,命令tail 20 example.txt表示打印文件example.txt的最后 20 行。请用 c 语言实现该程序,该程序应具有一定的错误处理能力,例如能处理非法命令参数和非法文件名。提示 1:使用命令行参数;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页 -提示 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.名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -node sortchain(node phead);返回值:链表头21:何谓全局变量?为什么它能用于函数数据传递?22:建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。23:下面的代码有什么问题?char _strdup(const char strsource)static char strmax_str_len;strcpy(str,strsource);return str;24:在 c+程序中调用被c 编译器编译后的函数,为什么要加extern c声明?25:公元 4046 年,人类科学高度发达,绝大部分人都已经移居至浩瀚的宇宙,在上千颗可居住的星球上留下了人类的印记。然而,此时人类却分裂成了两个联盟:正义联盟和邪恶联盟。两个联盟之间仇恨难解,时有战争。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -现在,邪恶联盟通过不正当贸易积聚了大量宇宙财富。因此,正义联盟计划要破坏邪恶联盟的非法贸易网络,从而影响邪恶联盟的经济状况,为下一次战争作好准备。邪恶联盟由数百颗星球组成,贸易通过星球间的运输航道来完成。一条运输航道是双向的且仅连接两个星球,但两个星球之间可以有多条航道,也可能没有。两个星球之间只要有运输航道直接或间接的相连就可以进行贸易。正义联盟计划破坏邪恶联盟中的一些运输航道,使得邪恶联盟的星球分成两部分,任一部分的星球都不能与另一部分的星球进行贸易。但是为了节省破坏行动所需的开支,正义联盟希望破坏尽量少的运输航道来达成目标。请问正义联盟最少需要破坏多少条运输航道呢?名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -