《历年安徽科技学院C语言程序设计专升本样卷(十二套试卷)及答案.pdf》由会员分享,可在线阅读,更多相关《历年安徽科技学院C语言程序设计专升本样卷(十二套试卷)及答案.pdf(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计专升本样卷(-)(总 分100分,考 试 时 长9 0分 钟 一、单项选择题(每小题2分,共 4 0 分)1、在浮点数编码表示中,(1)在机器数中不出现,是隐含的。A、阶码B、符号C、尾数D、基数2、有如下程序段int *p,a=5,b=l;p=&a;a=*p+b;执行该程序段后,a的值为A、5B、6C、7D、编译出错3、未指定存储类别的变量,其隐含的存储类别为。A、a u t oB,s t a t icC、e x t e rnD、1 e g is t e r4、以 下 叙 述 中 正 确 的 是。A、逻辑或(即运算符|I)的运算级别比算术运算要高B、C语言的关系表达式:0 x
2、1 0 完全等价于:(0 x)&(x b c)a=b;e ls e a=c;则 a的值为A、3B、2C、1D、08、若有定义:int (*p)4 ;则标识符p oA、是一个指向整型变量的指针B、是一个指针数组名C、是一个指针,它指向一个含有四个整型元素的一维数组D、定义不合法9、若变量已正确定义并赋值,符合c 语言语法的表达式是A、a=a+7:B、a=7+b+e,a+C、int(1 2.3%4)D、a=a+7=c+b1 0、下列字符串中,正确的c标识符是_ _ _ _ _ _ _ _ oA、f oo-1B、2 bC、ne wD、2 5 61 1.int i,j,a 2 3 ;按照数组a的元素在
3、内存的排列次序,不能将数1,2,3,4,5,6 有入 a数组的是 oA、f or(i=0;i 2;i+)f or(j=0;j 3;j+)a i j=i*3+j+l;B、f or(i=0;i 3;i+)f or(j=0;j 2;j+)a j i=j*3+i+l;C、f or(i=0;i 6;i+)a i/3 i%3 =i+l;D、f or(i=l;i=6;i+)a i i=i;1 2、以下叙述正确的是 oA、C程序总是以ma in。作为程序执行的起始行B、ma in。函数若不带参数,其后面的一对圆括号可省略C、函数体内的定义语句和可执行语句允许任意交替出现D、C语言中的语句之间必须用分号作为分隔
4、符1 3、设变量p 是指针变量,语句p=nu ll;是给指针变量赋nu ll值,它等价于()。A、B、p=0;C、p=0;D、p二;1 4、若有定义:int a=4,b=5;f loa t x =3.4,y=2.1;则 下 列 表 达 式 的 值 为。(f loa t)(a+b)/2+(int)x%(int)yA、5.5B、5 5C、5.5 0 0 0 0 0D、5 5.0 0 0 0 01 5、若有以下定义和语句:int a=0 1 0,b=0 x l0,c=1 0;print f (w%d,%d,%d nM,a,b,c);则输出结果是.A、1 0,1 0,1 0B、8,1 6,1 0C、8
5、,1 0,1 0D、8,8,1 01 6、运行下面程序时,从键盘输入字母h,则输出结果是#inc lu d e ma inO(c h a r c h;c h=g e t c h a r();s w it c h(c h)c a s e h :p r i n t f (,h e l l o!nH);c a s e g :p r i n t f(wg o o d m o r n i n g!nM);d e f a u l t :p r i n t f(Hb y e _ b y e!nn);)A、He l l o!B、He l l o!Go o d M o r i n g!C、He l l o!Go
6、 o d m o r n i n g!B y e _ B y e!D、He l l o!B y e _ B y e!1 7、若有下面的说明和定义,则 s i z e o f (s t r u c t a a)的值是s t r u c t a a(i n t r l;d o u b l e r 2;f l o a t r 3;m a y a;A、2 0B、1 8C、1 4D、1 61 8、以下程序段的输出结果是 c h a r s=1 4 1 1 4 1 a b c t ;p r i n t f (,%d n,r,s t r l e n(s);A、9B、1 2C、1 3D、1 41 9、若有说明
7、i n t a 3 4 ;则a数组元素的非法引用是_ _ _ _ _ _ _ _。A、1 2 3B、2.5C、-1 2D、1 56 32 0、若有以下说明语句:s t r u c t d a t e(i n t y e a r;i n t m o n t h;i n t d a y;b r i t h d a y;则 下 面 的 叙 述 不 正 确 的 是.A、s t r u c t 是声明结构体类型时用的关键字B、s t r u c t d a t e 是用户定义的结构体类型名C、b r i t h d a y 是用户定义的结构体类型名D、y e a r,d a y 都是结构体成员名二、判断
8、题(每小题2分,共 2 0 分)()1、内部静态类变量的作用域和寿命与自动类变量的相同。()2、同一个s w i t c h 语句中的所有c a s e 后面的常量表达式的值都必须互不相同。()3、假设x、y、2 和卜都是山1型变量,那么执行表达式:*=(尸4,2 二 1 6,1 二 3 2)后,*的值为 O()4、若有 i n t k =1;w h i l e(k=l)k+;则w h i l e 循环执行的次数是1次()6、数组名作为函数参数,传送的是地址.()7、用字符串常量给数组赋初值时,如果提供的字符个数小于数组的长度,则在最后一个字符后加0 作为字符串结束标志。()8、在标准c语言中
9、,所有函数在调用之前都要进行声明。()9、m a i n 函数是c语言的主函数。()10、某文件中定义的静态全局变量的作用域是本文件。三、编程题(每小 题 分,共 4 0 分)1、输入两个数,交换他们的值并输出。(元素交换)(本题1 0 分)2、编写程序:输入一个百分制成绩,打印出五级记分成绩。考试成绩在9 0分 或 9 0 分以上为优秀,8 08 9 分为良好,7 07 9 为中等,6069 为及格,低 于 6 0分为不及格。(本题1 4 分)3、计算n名学生成绩的平均分并通过函数返回。要求:结构体代码如下:s t r u c t S t u d e n t S c o r e(d o u
10、b l e s c o r e;);(本题1 6 分)()5、c语言允许用字符串的方式对数组作初始化赋值。参考答案一、单项选择题1、D【解析】浮点数编码表示中,符号、阶码和尾数均有体现,只有基数是固定的,无需出现。2、B3、A4、D【解析】B选项中,(x 0)&(x V 10)的 值 是 I 或 0,条件是x0并 且 x V 1 0 但 是 0 Vx 1 0 这种写法的结果任何时候都是1;C选项中,逻 辑“非”(即运算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。因 此 D选项正确。5、A【解析】本题考查了 cont inu e 和 b re a k语句
11、在循环语句中的作用。b re a k语句的作用是结束本层循环,而 cont inu e 语句的作用是结束本次循环直接进入到下次循环。6、C【解析】为简化编程,C语言中允许在定义外部函数时省略关键字e x t e rn。7、C8、C9、B10、D【解析】此题考查的是C语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线:标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。11、D12、A13、C14、C【解析】在计算(f loa t)(a+b/2时,由于通过强制类型转换将(a+b 转换成了 f oa t 型,所以应先将2 转换成f loa t 型,
12、再进行计算,得 4.5 0 0 0 0 0。在计算(int)x%(int)y时,先将x和 y通过强制类型转换成int 型,再进行求余运算,得 1。又因为4.5 0 0 0 0 0 是 f loa t 型,所以将1 和它相加时,先将1 换成f loa t 型,再计算,得到5.5 0 0 0 0 0。知识扩展类型转换的一般规则是:低级类型服从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:cha r-int u nsig ne d -long f f loa t f d ou b le。15、B16、C【解析】本题主要对sw it ch语句进行了考查。sw it ch语句的执行过程
13、为:进入sw it ch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的ca se,以此作为入口,执行sw it ch结构中后面的各语句,直到遇到b re a k语句,则跳出sw it ch语句,如果各ca se 都不匹配时则执行d e f a u lt 后面的语句。本题中ch为字符 H,所以ca se H 条件中的语句将被执行,由于没有b re a k语句,所以ca se C 后的语句也被执行,由于同样的缺少b re a k语句,所以d e f a u lt 后的语句也被执行了。17、D18、A19、B【解析】A)选项必须输入6 个字母或数字(数字也能输入,不符合),C)
14、选项可以输入6个任意字符,也不符合题议,D)选项可以选择输入6个数据或空格,不符合题意。2 0、C二、判断题1、fals e2、t rue3、fals e【解析】这是一个逗号表达式,返回最后一个表达式的值,即 k的值。p2 6 9、算法必须是1 个或多个输入算法具有0个或多个输入4、fals e5、t rue6、t rue7、t rue8、fals e9、t rue1 0、t rue三、编程题1、#includeint main()int m,n,t emp;s canf(0%d%d0;if(m n)(t emp=m;m=n;n=t emp;print f(%dH,m);ret urn 0;)
15、2、include#include#include#include void mainOint s core,t;print f(P leas e ent er a s core:H);do(s canf(%d”,&s core);)w hile(s core 1 0 0);t=s core/1 0;/*found*/s w it ch(t)(cas e 1 0:cas e 9:print f(M 优 秀!nM);break;cas e 8:print f(n 良 好!nM);break;cas e 7:print f(H 中 等!nw);break;cas e 6:print f(n 及 格
16、!nM);break;/*found*/default:print f(M 不 及 格!nM);)3、double F un(s t ruct St udent Score*a,int n)int i;double s um=0.0;for(i=0;i n;i+)(s um+=ai.s core;)ret urn s um/n;)int mainOs t ruct St udent Score a1 0 0;int n;学生数量int i;print f(请输入学生数量:);s canf(%d,&n);for(i=0;i n;i+)(print f(请输入第 d 个学生的成绩:,i+1);s
17、canf(M%1 fh,&ai.s core);)print f F un(a,n);ret urn 0;)请输入学生数量:3请输入第1 个学生的成绩:9 0请输入第2个学生的成绩:1 0 0.0请输入第3个学生的成绩:8 09 0.0 0 0 0 0 0C语言程序设计专升本样卷(二)(总 分100分,考 试 时*9 0分 钟)一、单项选择题(每小题2分,共4 0分)1、以下叙述中错误的 OA、C程序在运行过程中所有计算都以二进制方式进行B、C程序在运行过程中所有计算都以十进制方式进行C、所 有C程序都需要编译钱接无误后才能运行D、C程序中整型变量只能存放整数,实型变量只能存放浮点数2、b等于
18、()A、1 0 0 0字节B、1 0 2 4字节C、1 0 0 0 X1 0 0 0 字节D、1 0 2 4 X 1 0 2 4 字节3、若t已经定义为int类型,则表达式:(t =l,t+,t+5)的值为A、7B、7.0C、2.0D、1.04、分析下列程序:#includemain()(int*pl,*p2,*p;int a=6,b=9;pl=&a;p2=&b;if(a b)(P二pl;pl=p2;p2 二p;print f(n%d,%d*pl,*p2);print f(%d,%dw,a,b);)程序的输出结果为A、9,6 6,9B、6,9 9,6C、6,9 6,9D、9,6 9,65、有以
19、下程序:main()(int c=0,k;for(k=l;k 3;k+)s w i t ch(k)(default:c+=k;cas e2:c+;break;cas e4:c+=2;break;print f(,%d n,tc);)程序运行后的输出结果是A、3B、5C、7D、96、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能 define MI N -2 1 4 7 4 6 3 6 4 7int findmax(int x,int n)(int i,max;for(i=0;i n;i+)(max=MI N;if(max x i)max=x i
20、;ret urn max;造 成 错 误 的 原 因 是。A、定义语句int i.max中max未赋值B、赋值语句max=MI N;中,不应该给m a x赋M I N值C,语句if(max 0;i)f or(j=0;j x,(h l.p)-y);)A、12B、23C、14D、3218、以下不能正确表示代数式2a d/c d的c语言表达式是 oA、2*a*b/c/dB、a*b/c/d*2C、a/c/d*b*2D、2*a*b/c*d19、若 有 以 下 数 组 说 明,则i=10;元素数值是。i nt 1,4,7,10,2,5,8,11,3,6,9,12 ;A、10B、9C、6D、520、有以下程
21、序s t r u c t s(i nt n;i nt a 20;;v oi d f(i nt *a,i nt n)m a i n()(i nt i;s t r u c t s s=10,2,3,1,6,8,7,5,4,10,9 ;f (s.a,s.n);f or(i=0;i s.n;i+)pr i nt f (M%d,n,s.a i );)程序运行后的输出结果是_ _ _ _ _ _ _oA、2,4,3,9,12,12,11,11,18,9,B、3,4,2,7,9,8,6,5,11,10,C、2,3,1,6,8,7,5,4,10,9,D、1,2,3,6,8,7,5,4,10,9,二、判 断 题
22、(每小题2分,共2 0分)()1、带参数的宏定义中,形参的个数只能是一个,不能是多个。()2、e ls e-i f的匹配原则是e ls e与最靠近它的i f相匹配。()3、指针变量可以指向数组,但不允许指向数组元素。()4、b r e a k语句只能用在循环语句中。a 12 =()5、不能直接使用一个字符串常量来为一个字符数组赋值。()()6、函数的定义和函数的调用均可以嵌套。()7、用数组名作函数参数时,数组中的元素可以发生变化,故违反了函数参数传递的单向性。()8、用s t r c a t(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间没有限制。()9、数组名不是该数组第一个
23、数据元素的首地址。i nt i;f or(i=0;i n-l;i+)a i +=i;()10、编写c语言程序的流程是:新建项目、添加源文件、编写代码、运行程序。()三、编 程 题(每小题分,共4 0分)1、编写程序:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。(本题10分)2、打印出如下图案(菱形)(本题14分)3、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。(本题16分)参考答案一
24、、单项选择题1、B2、D3、A【解析】t 为 d ou b l e 类型变量,经过一系列运算后其结果仍为d ou b l e 类型,该题中t先进行自增再进行t+5 运算,结果为7.0 d。4、A【解析】通过pl=&a,p2 二&b 分别将a、b的地址赋给指针pl、p 2,接着执行i f 语句,发现a V b 成立,则通过交换pl、p2 的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。5、A6、D7、D8、A9、C1 0、C1 1、B1 2、A1 3、B1 4、A1 5、A1 6、A1 7、D1 8、D【解析】C语言中算术运算符的结合性均为自左向右。选项D)中表达式计算结果是
25、2*a*b*d/c,和题目要求的代数式不一致,因此选项D)不能正确表示题目所给的代数式内容。1 9、B2 0、A【解析】本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下标,作为新的元素。二、判断题1 f a l se2、f a l se3、f a l se4、f a l se5、f a l se6、f a l se7、f a l se8、f a l se9、f a l se1 0、tru e三、编程题1、
26、i n t m a i n()c h a r i,j,k;f o r (i=x ;i =z:i+)f o r(j=x:j =z;j+)i f(i!=j)f o r(k=x ;k =z ;k+)i f(i!=k&j!=k)i f(i!=x&k!=x&k!=z)p r i n t f (顺序为:a-%ct b-%ct c一%cn ,i,j,k);)2、*程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重f o r循环,第一层控制行,第二层控制列。程序源代码:m ai n O(i n t i,j,k;f o r(i=0;i =3;i+)(f o r(j=0;j =2-i;j
27、+)p r i n t f(M );f o r(k=0;k =2*i;k+)p r i n t f(*);p r i n t f (n,);)f o r(i=0;i =2;i+)(f o r(j=0;j =i;j+)p r i n t f(M w);f o r(k=0;k =4-2*i;k+)p r i n t f(*);p r i n t f(n );)3、i n cl u d e s t r u ct m e si n t s n o;ch ars n am e 2 0;f l o atg r ad e l;f l o atg r ad e 2;f l o ats u m;f l o at
28、av g;s t u d e n t 5;/*定义结构体变量数组*/i n t m ai n ()i n t i,j,k;s t r u ct m e s t e m p;p r i n t f (请输入五位学生的信息 n );p r i n t f (学号 t姓名 t数学 t计算机 n );f o r (i =0;i 5;i+)(s can f(*%d t%s t%f t%f&s t u d e n t i.s n o,s t u d e n t i.s n am e,&s t u d e n t i.g r ad e l,&s t u d e n t i.g r ad e 2 );s t
29、u d e n t i.s u m =s t u d e n t i.g r ad e l+s t u d e n t i.g r ad e 2;s t u d e n t i.av g =s t u d e n t i.s u m /2;/*输入每位学生间隔的信息时运用T ab键*/f o r (i =0;i 4;i+)(k 二 i;f o r (j =i +1;j 5;j+)i f (s t u d e n t k.s u m s t u d e n t j.s u m )k =j;t e m p =s t u d e n t k;s t u d e n t k =s t u d e n
30、t i;s t u d e n t i =t e m p;)p r i n t f(学生成绩的排序结果为:n );f o r (i =0;i 5;i+)(p r i n t f (学号:d,姓名:s,数学成绩:3.I f,计算机成:3.I f,分:%3.l f nH,s t u d e n t i.s n o,s t u d e n t i.s n am e,s t u d e n t i.g r ad e l,s t u d e n t i.g r ad e 2,s t u d e n t i.av g,s t u d e n t i.s u m );/*显示五位同学的信息*/r e t u
31、 r n(0);C语言程序设计专升本样卷(三)(总分100分,考试时长9 0分钟一、单项选择题(每小题2分,共4 0分)1、若变量已正确定义并赋值,以下符合C语言语法的表达式是 OA、a:=b+lB、a=b=c+2C、i n t 1 8.5%3D、a=a+7=c+b2、下列关于表达式的描述中,错误的是 oA、常量和变量都是表达式B、运算符类型对应表达式的类型C、每一个表达式都有自己的值D、表达式必须以分号结尾3、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 o#i n cl u d e v o i d m ai n()(i n t x;s can f (%d&x);i f (x
32、+5)p r i n t f (%dw,x);e l s e p r i n t f(M%d nn,x一);)A、7 和 5B、6和 3C、7 和 4D、6 和 44、设变量x和y均已正确定义并赋值。以 下if语句中,在编译时将产生错误信息的是A、i f(x+);B、i f (x y&y!=O);C、i f (x 0)x-e l s e y+;D、i f (y 0);e l s e x+;5、运行下面程序时,从键盘输入字母a,则输出结果是#i n cl u d e m ai n()ch ar ch;ch=g e t ch ar ();s w i t ch(ch)(cas e1a:p r i n
33、 t f(aaaanH);cas e b:p r i n t f (,bbbbnn);d e f au l t:p r i n t f C ccccXn1);A、A A A AB、A A A A B B B BC、A A A A B B B B C C C CD、A A A A C C C C6、以下程序中调用s can f函数给变量a输入数值的方法是错误的,其错误原因是m ai n ()(i n t *p,*q,a,b;p =&a;p r i n t f (,ri n p u t a:M);s can f (%d ,*p);A、*p表示的是指针变量p的地址B、*p表示的是变量a的值,而不是变
34、量a的地址C、*p表示的是指针变量p的值D、*p只能用来说明p是一个指针变量7、若有定义 i n t a=-5,b=7;,则表达式a%=(b%2)运算后,a的值为A、0B、1C、1 1D、38、下面程序输出数组中的最大值,由s指针指向该元素.v o i d m ai n ()i n t a1 0 =6 ,7,2,9,1 ,1 0 ,5 ,8 ,4 ,3 ,*p ,*s ;f o r (p=a,s=a;p-a sB、*p*sC、a p a s D、p-a p-s9、下列叙述中正确的是 oA、在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式B、实型变量中允许存放整型数C、若 a 和 b
35、 类型相同,在执行了赋值a=b 后,b 中的值将放入a 中,但 b 中的值不变D、在 c 程序中,求余运算符“”两边的类型相同时才能进行运算1 0 以下关系表达式中,其值为t r ue的是_oA、X Y Z X Y z”B、Vis ualB as icO,rv is ualbas ieMC、“t he=t her e”D、I nt eger V I nt 1 1、若二维数组a 有 m 列,则 计 算 任 一 元 素 在 数 组 中 相 对 位 置 的 公 式 为(假 设 a 0 0 位于数组的第一个位置上)_OA、i*m+jB、j*m+ID、i*m+j+l1 2、在一个c 语言程序中,_ oA
36、、main函数必须出现在所有函数之前B、main函数可以在任何地方出现C、main函数必须出现在所有函数之后D、main函数必须出现在固定位置1 3、结构化程序没计主要强调的是 oA、程序的规模B、程序的效率C、程序设计语言的先进性D、程序的易读性1 4、下面选项中合法的字符常量是 oA、X B、X C、abcD、1 5、有以下程序 fun(char p 1 0)(int n=0,i;for(i=0;i 7;i+)if(p i 0=,t )n+;r et ur n n;main()(char s t r L J L 1 0 J =t mon,t ue,w ed,t hu,fr i,s at ,
37、s unpr int f(H%d n!,fun(s t r);程序执行后的输出结果是_。A、1B、2C、3D、01 6、c 语言中w hile和 do-w hile循环的主要区别是 oA、do-w hilc的循环体至少无条件执行一次B、w hile的循环控制条件比do-w hile的循环控制条件严格C、do-w hile允许从外部转到循环体内D、do-w hile的循环体不能是复合语句1 7、设有下面的定义:s t r uct s tint a;float b;d;int*p;要使p 指向结构变量d 中的a 成员,正确的赋值语句是A、*p=d.a;B、p=&a;C、p=d.a;D、p=&d.a
38、;1 8、有以下程序main()(int a=6 6 6,b=888;pr int f(%dnn,(a,b);)程序运行后的输出结果是 oA、错误信息B、6 6 6C、888D、6 6 6,8881 9、有以下程序:#include union pw(int i;char ch 2;)a;main()(a.ch 0=1 3;a.ch l=0;pr int f(N%dnn,a.i);程序的输出结果是 oA、1 3B、1 4C、2 0 8D、2 0 92 0、以下对结构变量s t ul中成员age的非法引用是s t r uct s t udent(int age;int num;s t ul,*p
39、;p=&s t ul;A、s t ul.ageB、s t udent,ageC、p-ageD、(*p).age二、判 断 题(每小题2分,共 2 0 分)()1、函数的实参可以是常量,变量或表达式()2、在 c 语言中输入数据时可以指定数据的精度。()()3、在 c 语言中,可以将主调函数放在被调函数的后面,省略函数的声明。()4、在多层循环中,一个b r ea k 语句只向外跳一层。()5、字符串可以存储在字符数组中,也可以存储在字符型指针变量中()6、函数一次可以返回两个以上的值。()7、在定义二维数组时,可以将该数组的两个维数全部省略()8、递归调用函数可以没有终止递归的条件。()9、指
40、针变量可以存放指针(地址)、数值和字符()1 0、当一个c语言程序由多个文件模块组成时,整个程序可以包含多个m a i n。函数。三、编 程 题(每小题分,共 4 0 分)1、起泡法(选择法)对 十 个数 排序(本题1 0 分)2、有一分数序列:2/1,3/2,5/3,8/5,1 3/8,2 1/1 3.求出这个数列的前2 0 项之和。(本题1 4 分)3、有一包含职工编号、年龄和性别的单向链表,分别使用函数完成以下功能建立链表。分别统计男女职工的人数。在链表尾部插入新职工。删除指定编号的职工。删除60岁以上的男职工和55岁以上的女职工被删除的结点保存到另一个链表中。在主函数中设计简单的菜单去
41、调用上述函数。(本题16分)参考答案一、单项选择题1、B【解析】本题考查C语言的正确赋值方法。a=b=c+2 实际上相当于a=(b=c+2),进而可分解为两个表达式:bk+2和 2 巾。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(i n t)1 8.5%3;选项D)可理解为两个表达式:a+7=c+b 和 a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。2、D【解析】语句必须以分号结尾,表达式不是必须以分号结尾,表达可以嵌套。3、A【解析】X+和 X-作为表达式时总是先取出X 的值,然后再修改X 的值。例如:i f(x+5)这个语
42、句是先之行(x 5)再执行(x=x+l)的;同样p r i n t f(以d n,x-)是先输出来 x 再进行x=x-l;因此输入6时先判 断6 5 正确然后再进行 6+1=7运算;输入4时,先判断45 错误,然后输出x 再进行4-1=3 运算。4、C【解析】C语言规定,在“i f (表达式)语 句 l;e lse 语句2;”这种形式的i f 语句中,在每一个e lse 前面有一个分号,整个语句结束处有一分号。在本题的C)选项中,e lse前面少了一个分号,这样程序在编译时,会出现语法错误。5、C【解析】本题考查sw i tc h语句。因为c h=A,所以第一个sw i tc h语句,执行e
43、ase A 后面的语句,输出A A A A,没有遇到br e ak 语句,所以接着再执行c ase B 和 d e f au lt,分别输出B B B B 和 C C C C o6、B【解析】考查格式输入语句sc anf 的使用。本题经过定义语句和赋值后,p表示的是变量 a 的地址,*p 表示的是变量a 的值。7、A8、B9、B【解析】选项A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式;在判断选项B)时首先应该建立这样的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数:选项C),执行表达式a=b 后,将把变量b 存储单元中的值
44、赋给变量a,从而覆盖a 中原有的值,但 b 中原有的值并不改变;选项D),在 C程序中,求余运算符“”两边的类型均为整型数据。1 0,B【解析】用关系运算符比较两个操作数时,如果两个操作数是字符型的,按字符的A S C H 码从左到右一一比较,即先比较第1 个,若相同再比较第2个,依次比较,直到比较完或不同为止。选项A中两个字符串前2个字符相同,后 1 个不同,”的A S C I I 值“Z”的A S C H 值,故 “X Y Z”“I nt”,返回 F alse。选项B中两个字符串不完全一样,有大写和小写的字符,不等。所以返回T r u e。故 B选项正确。1 1、A1 2、B【解析】C语言
45、规定,mai n函数在程序中的位置是任意的。1 3、D1 4、B【解析】字符常量是用单引号括起来的一个字符。A选项中,使用双引号,所以是错误的;C选项中,a b c 是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线 开头的是转义字符。因 此 B选项正确。1 5、B1 6,A1 7,D【解析】本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员引用方法有 3 种:结构体变量名,成员名;指针变量名-成员名;(*指针变量名).成员名。因为P是指针变量,所以应该将地址值赋给p。1 8、C1 9,A【解析】在本题中,首先定义了一个共用体p w,其中有两个域:整型变量i 和字符数
46、组ch。因为共用体中的域是共享内存空间的,数组元素由低到高存储:ch 0 在低字节;ch l 在高字节;整型变量i占两个字节,高位与ch l 共用存储空间,低位与ch 0 共用存储空间,而高位ch l 的值为0,所以输出的成员变量i 的值就是ch 0 的值1 3。20,B二、判断题1、true2、f al se3、true4、true5、f al se6、f al se7、f al se8、f al se9、f al se1 0、f al se三、编程题1、i ncl ud evo i d mai n()(i nt i,j,t;i nt a 1 0;p ri ntf (请输入 1 0 个 数:
47、n);f o r(i=0;i 1 0;i+)scanf ;f o r(j=0;j 9;j+)f o r(i=0;i a i+l j)(t=a i ;a i =a i+l ;a i+l =t;f o r(i=0;i 1 0;i+)p ri ntf(n%d n,a i );p ri ntf(M nw);)2、程序分析:抓住分子与分母的变化规律。程序源代码:mai n()f l o at a=2,b=l,s=0;f o r(n=l;n=number;n+)(s=s+a/b;t=a;a=a+b;b=t;/*这部分是程序的关键*/p ri ntf (r,sum i s%9.6f n s);3、#i nc
48、l ud e#i ncl ud estruct no d el o ng N o;i nt ag e;ch ar sex;struct no d e*next;);no d e*establ i sh()(struct no d c*h,*p,*q;l o ng num;h=(struct no d e*)mal l o c(si zeo f(struct no d e);p二 q二h;p ri ntf (请输入职工编号(输入0退出输入)!n);scanf(n%l d,&num);wh i l e(num!=0)(p=(struct no d e*)mal l o c(si zeo f(str
49、uct no d e);p-N o=num;p ri ntf (请输入职工年龄和性别 nM);scanf(n%d,%c”,&p-ag e,&p-sex);q-next=p;q二 P;p ri ntf (请输入职工编号(输入0退出输入)!n);scanf (w%l dM,&num);i nt n,t,number=20;p-next=N U L L;return h;)vo i d co unt(no d c*p h ead)(i nt m=0,f=0;struct no d e*p;p=p h ead-next;wh i l e(p!=N U L L)(i f (p-sex=,M|!p-sex
50、=,m,)m+;el se f+;p=p-next;)p ri ntf (男职工的人数为:d n女职工的人数为:%d n,m,f);)vo i d ad d new(no d e*p h ead)(struct no d e*p,*q;p ri ntf C请输入新职工编号 年龄和性别!n);p=(struct no d e*)mal l o c(si zeo f(struct no d e);scanf(w%l d,%d,%cn,&p-N o,&p-ag e,&p-sex);q=p h ead-next;wh i l e(q-next!=N U L L)q=q-next;q-next=p;p-