黑龙江八一农垦大学C语言程序设计期末(含六卷).docx
D、3【答案】B5、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是for(i=6;i>0;i)for(j=0;j<4;j+)A、20氏24C、25D、30【答案】B6、若各选项中所有变量已正确定义,函数fun中通过retum语句返回一个函数值,以下选项中错误的程序是OAxmain()x=fn(2,10);floatfun(intA,intb)Bsfloatfun(intA,intb)main()x=fun(i,j);Csfloatfun(intint);mainOx=fun(2,10);floatfun(intA,intb)D、main()(floatfun(inti,intj);x=fun(i,j);floatfun(intA,intb);答案A7、以下不能正确计算代数式值的C语言表达式是。A、l3*sin(l2)*sin(l2)B、sin(0.5)*sin(0.5)/3C、pow(sin(0.5),2)/3D、1/3.0*pow(sin(1.0/2),2)【答案】A8、有如下定义语句:inta=1,2,3,4,5,则对语句int*p=a;正确的描述是:OAs语句int*p=a;定义不正确B、语句int*p=a;初始化变量P,使其指向数组对象a的第一个元素C、语句int*p=a;是把a0的值赋给变量PD、语句int*p=a;是把al的值赋给变量P【答案】B9、以下关于C语言的叙述中正确的是。A、C语言中的注释不可以夹在变量名或关键字的中间B、C语言中的变量可以再使用之前的任何位置进行定义C语言程序设计期末(一)(总分100分.考试时长90分钟)一、单项选择题(每小题2分,共40分)1、下列字符中,ascii码值最小的是A、aB、AC、XD、Y【答案】B【解析】a、A、x、Y对应的ASCIl码值分别是OooIll0、0001100.1000111.1001101,故正确答案为B。2、inta=l,b=2tc=3;if(a>c)b=a;a=c;c=b;则C的值为oA、1B、2C、3D、不一定【答案】B3、C语言的基本数据类型包括oA、字符型和数值型B、字符型和逻辑型C、整型和实型D、指针型和数据型答案A4、假定所有变量均已正确定义,下列程序段运行后X的值是()。kl=l;k2=2;k3=3;x=15;if(!kl)X;elseif(k2)x=4;elsex=3;A、14B、4C、15就得到小写字母,所以选项B和C是正确的。选项A中(c>A')%26可以求出变量C中的字母与字母A相差几位,那么小写字母a的ASCll码向后移动相差的位数就是对应的小写字母,所以选项A也是正确的。14、若有定义"floata=25,b.*p二&b;",则下列对赋值语句"*p=a;"和"p4aj的正确解释为()。A、两个语句都是将变量a的值赋予变量PB、*p=a是使P指向变量a,而P=&a是将变量的值赋予变量指针PC、*p=a是将变量a的值赋予变量b,而&a是使P指向变量aD、两个语句都是使P指向变量a【答案】C15、下面程序的输出结果为omain()(inta,b;b=(a=3*5,a*4,a*5);Printf(mb);A、60B、75Cs65D、无确定值【答案】B16、下面程序的运行结果是onain()(inti,j,a=0;for(i=0;i<2;i+)(for(j=0;j<4;j+)if(j%2)break;a+;)a+:)printfC,%dn",a);)A、4B、5C、6C、在C语言算术的书写中,运算符两侧的运算数类型必须一致D、C语言的数值常量中夹带空格不影响常量值的正确表示【答案】B【解析】C语言中的注释"/*/“或者"“可以放在程序中的任何位置,但是不可以加在变量名或者关键字中间,会导致该变量名和关键字不被C语言识别,选项A)正确;C语言中变量的定义必须在变量使用之前,而且定义时该变量的作用域一定要能涵盖该变量的使用,所以定义的位置不是任意的,选项B)错误;算术运算符两侧的运算数类型可以不一致,如加减乘除运算符都没有对运算数类型进行限制,如果不一致,系统会对其进行相应的数据类型转换,选项C)错误;空格一般作为分隔符使用,数值常量中夹带空格就会把该数值常量分作两部分:123和123是不一样的,选项D)错误;答案选A)。知识模块:数据类型、运算符与表达式10、以下能正确定义字符串的语句是oA、charstr=,064,;B、 charstr="kx43"C、 charstr=";D、charstr=,'0";【答案】D11、若有以下语句,则正确的描述是Chara=,'toyou"charb='t,'o',y','o','u/;A、a数组和b数组的长度相同B、a数组长度小于b数组长度C、a数组长度大于b数组长度D、a数组等价于b数组【答案】C12、以下正确的函数头定义形式是oA、 doublefun(intx,inty)B、 doublefun(intx;inty)C、 doublefun(intx,inty):D、 doublefun(intx,y);【答案】A【解析】函数的形式参数之间以逗号“,”隔开,且每个变量均需说明其数据类型,圆括号后面不能有分号。只有选项A)符合要求。13、已知大写字母a的ascii码是65,小写字母a的ascii码是97,以下不能将变量C中的大写字母转换为对应小写字母的语句是oA、c=(c-',)%26+,a,B、c=c+32C、c=c-'A,+'a'D、c=('A,+c)%26-,a,【答案】D【解析】由97-65=32可知大写字母对应的小写字母之间相差32,所以将大写字母加上32D、aa+1【答案】C20、有以下程序structstu(charname10;intnum;intscore;main()(structstus5=',yangsan",20041,703,'lisiguon,20042,580,"wangyin",20043,680,"sundan",20044,550,"penghua",20045,537,*p5,*t:inti,j;for(i=0;i<5;i+)pi=&si;for(i=0;i<4;i+)for(j=i+l;j<5;j+)if(pi->score>pj->score)(t=pi;pi=pLj;pj=t;)printf("5d%dn",sl.score,p1->score);)执行后输出结果是。A、550550B、 680680C、 580550D、 580680【答案】C二、判断题(每小题2分,共20分)()1、关于C语言C语言是结构化程序设计语言。答案正确()2、一个变量在内存中占据一定的存储单元【答案】正确()3、在if语句中,else前一个语句可不加D、7答案A17、以下对结构体类型变量的定义中,不正确的是。A、 typedefstructaaintn;floatm;AA;AAtdl;B、 defineAstructaaintn:floatm;)tdl;C、 structintn;floatm;aa;structaatdl;D、 structintn:floatm,tdl;【答案】C18、有以下程序#includCVStdio.h>main()ints,t,a=10;doubleb=6;s=sizeof(a);t=sizeof(b);printf(n%d,%dnn,s,t);)在vc6平台上编译运行,程序运行后的输出结果是oA、2,4B、4,4C、4,8D、10,6【答案】C19、若有定义:intaa8;则以下表达式中不能代表数组元aal的地址的是A、&aa0+lB、 &aalC、 &aa0+I2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回;该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下。请勿改动main。,函数和其他函数中的任何内容,仅在函数ProC()的花括号中填人所编写的若干语句。试j题程序:char*proc(char(*a)81,intnum)IIvoidmain()charss1081,*max;intn,i=0;Printf("输入若干个字符串:");gets(ssi);puts(ssi);whiIe(!Strcmp(ssi,"*)=0)(i+;gets(ssei);puts(ssi);)n=i;max=proe(ss,n);printf(,nmax=%sn",max);(本题14分)答案char*proc(char(*a)81,intm)(char*max;inti=0:max=aO:for(i=0;i<m;i+)if(strlen(max)Vstrlen(ai)找出最长的字符串max=ai;Ireturnmax;返回最长字符串的地址)3、题目描述输入一组学生的成绩,按照成绩降序输出成绩表。如有相同成绩,较小的学号排位靠前;输入输入格式为每行两个数值,学号N为10位数字,成绩S取值为整数(0S100)读取输:入直到输入结束(数据总量不超过50行,且不会出现重复的学号)输出【答案】错误()4、循环语句不能嵌套使用。【答案】错误()5、C语言约定'0'计入字符串的长度。【答案】错误()6、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:#includeVgraphics.h>或#include"graphics.h"0【答案】错误()7、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。【答案】正确()8、函数形参的存储单元是动态分配的。【答案】正确()9、以“r”方式打开一个文件时,文件指针指向文件首。答案正确()10、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件。【答案】正确三、编程题(每小题分,共40分)1、从键盘输入n和a的值,计算a+aa+aaa+.+aa.a(n个a)的值。(本题10分)【答案】#includevoidmainO(inti,a,n;longintsum=0,st=O;Printf("请输a和n:");scanf("%d%dw,&a,&n);for(i=l;i<=n;i+)(st=st+a;sum=sum+st;a=a*10;printf