《中国戏曲学院历年C语言程序设计期末含答案解析.docx》由会员分享,可在线阅读,更多相关《中国戏曲学院历年C语言程序设计期末含答案解析.docx(50页珍藏版)》请在第壹文秘上搜索。
1、中国戏曲学院历年C语言程序设计期末(一)考试方式:【闭卷】考试时间:【90分钟】总分:【100分】一、单项选择题(共20题,每小题2分,共40分)1、下列关于标识符的说法中错误的是OA、合法的标识符是由字母、数字和下划线组成B、C语言的标识符中,大写字母和小写字母被认为是两个不同的字符C、C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符D、用户标识符与关键字不同时,程序在执行时将给出出错信息【答案】D【解析】考查对于标识符的掌握情况。解题要点用户标识符与关键字相同时,程序在编译过程中将给出出错信息。错解分析选项D)应该改为用户标识符与关键字相同,程序在编译时将给出出错信息。考点链
2、接合法的标识符第一个字符必须为字母或下划线。2、下列语句序列执行后,x的值是_ointa=3,b=4,x=5;if(+a-b)x=+a*x;A、35B、25C、20D、5【答案】B3、执行下列程序后,变量a,b,e的值分别是._oint-5,y=4;inta,b,e;a=(一x=y+)?x;+y;b=+x;c=y;A、 a=5,b-5,C二5B、 a=4,b=5,c=5C、 a=5,b=6,c=5D、a=l,b=5,06【答案】B4、能正确表示a和b同时为正或同时为负的逻辑表达式是oA、(a=0Ilb=0)&(a0Ilb=0&b=0)&(a0&b0)&(a+bO【答案】D5、有以下程序:#in
3、cludemain()inti=5;do(if(i%3=l)if(i%5=2)printf(n*%dw,i);break;)i+;)while(i!=0);printf(,11n);程序的运行结果是OA、*7B、*3*5C、*5D、 *2*6【答案】A【解析】本题考查的是break语句。doWhiIe循环是“先执行,后判断“,所以无论条件如何,它都至少会执行一遍。程序首先初始化变量i为5,然后进入doWhiIe循环体,首先判断(i%3=l),因为5%3=2,所以if条件不满足,跳过下面的if语句,执行i+,i变为6。第1遍循环结束,判断(i!=0)为真,继续循环。现在i%3=6%3=0,所以i
4、f语句还是不被执行,继续i+,i变为7,仍然满足(i!=0),继续循环。第3遍循环i%3=7%3=l,满足条件(i%3=l),继续判断条件i%5=2成立,即输出*7,然后执行break语句跳出循环。6、以下正确的说法是0A、实参和与其对应的形参各占用独立的存储单元B、实参和与其对应的形参共用一个存储单元C、只有当实参和与其对应的形参同名时才共用存储单元D、型参是虚拟的,函数在没有被调用时,不占用存储单元【答案】D【解析】形参在个数和类型上要与实参匹配,形参在未被调用之前,不占用存储单元。7、以下不合法的用户标识符是oA、j2_KEYB、DoubleC、4D.D、_8_【答案】C8、要定义整型数
5、组x,使之包括初值为0的三个元素,下列语句中错误的是A、 intx3=0,O,0;B、intx=0;C、staticintx3=0;D、intx=【答案】D【解析】选项D中整型数组X的第一个元素是NULL不是0,故选D。9、以下叙述中错误的是oA、C语句必须以分号结束B、复合语句在语法上被看作一条语句C、空语句出现在任何位置都不会影响程序运行D、赋值表达式末尾加分号就构成赋值语句【答案】C10、C语言中,下列不合法的字符串常量是OA、”12,8、 y=C、nnD、,ABCDx6dw【答案】B11、设有如下定义:Char*aa2=abcc,abed,则以下说法中正确的是A、aa数组中元素的值分别
6、是,bccTjABCD;B、aa是指针变量,它指向含有两个数组元素的字符型一维数组C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D、aa数组的两个元素中各自存放了字符a和A的地址【答案】C【解析】aa数组被定义为字符型指针数组,有两个元素,分别存放字符串abed和ABCD”的首地址。12、C语言中函数返回值的类型决定于A、return语句中的表达式类型B、调用函数的主调函数类型C、调用、函数时临时类型D、定义函数时所指定的函数类型【答案】D【解析】函数在定义时已经可以指定其函数类型,则函数返回值类型就是该类型。13、若已定义:inta9,*p=a;并在以后的语句中未改变P
7、的值,不能表示al地址的表达式为()oA、p+1B、a+1Cna+D、+p【答案】C14、给出以下定义:charx=wabcdefgn;chary=a,b,c,d,e,f,g;则正确的叙述为A、数组X和数组y等价B、数组X和数组y的长度相同C、数组X的长度大于数组y的长度D、数组X的长度小于数组y的长度【答案】C15、有以下程序:main()(charx=wstringH;x0=0;xl=,0,;x2=,0,;printf(,%d%dn,sizeof(x),strlen(x);)程序运行后的输出结果是OA、61B、70C、63D、71【答案】B16、判断关键字*不是关键字。A、intB、 ex
8、ternC、 breakD、 main【答案】C17、下面定义结构变量的语句中错误的是OA、 structstudentintnum;charname20;s;B、 structintnum;charname20;s;C、 structstudentintnum;charname20;;structstudents;D、 structstudentintnum;charname20;);students;【答案】D18、以下程序的输出结果是Omain()charc=,z,;printf(,%cm,c25);)A、aB、zC、z-25D、y【答案】A19、inta10;给数组a的所有元素分别赋值
9、为1、2、3、的语句是A、for(i=l;ill;i+)ai=i;B、for(i=l;ill;i+)ai-l=i;C、for(i=l;ill;i+)ai+l=i;D、for(i=l;ill;i+)a0=l;【答案】B20、若有以下说明语句:structstudentintnum;charname;floatscore;stu;则下面的叙述不正确的是:()A、StrUCt是结构体类型的关键字B、structstudent是用户定义的结构体类型C、num,SCore都是结构体成员名D、StU是用户定义的结构体类型名【答案】D二、判断题(共10题,每小题2分,共20分)()1、C语言中SiZeOf为
10、运算符。【答案正确()2、表达式语句和表达式没有什么区别。【答案】错误()3、break语句不能够单独使用,只能用于循环语句和SWitCh语句【答案】正确()4、如果for的循环体语句中没有使用COntinUe语句,则以下for语句和While语句等价。for(表达式1;表达式2;表达式3)for的循环体语句表达式1;while(表达式2)(for的循环体语句;表达式3;【答案】正确()5、在标准C语言中,字符串是以0结束的,故字符串的长度也包括,0,。【答案】错误()6、当函数定义在后、调用在先时,vc+允许省略函数声明。【答案】错误()7、在程序设计中,一组具有相同数据类型的变量集合称为数
11、组。【答案】正确()8、tc中函数调用时,函数参数求值顺序是从右到左的。【答案】错误()9、数组初始化的常见方式有三种:直接对数组中的所有元素赋值、只对数组中的一部分元素赋值、对数组全部元素赋值但不指定长度。【答案】正确【解析】数组初始化的常见的方式有三种,具体如下:1、直接对数组中的所有元素赋值2、只对数组中的一部分元素赋值3、对数组全部元素赋值,但不指定长度()10、当一个C语言程序由多个文件模块组成时,整个程序可以包含多个main()函数。【答案】错误三、编程题(共3题,共40分).1、编写程序:求07所能组成的奇数个数。比如:1位数为奇数的个数42位数为奇数的个数283位数为奇数的个数
12、224(本题10分)【答案】#includeintmain(intagrc,char*agrv)longsum=4,s=4;SUln的初始值为4表示,只有一位数字组成的奇数个数为4个i11tj;for(j=2;j=8;j+)(printf(,%d位数为奇数的个数ldn,j-l,s);if(j=2)s*=7;elses*=8;sum+=s;)Printf(%d位数为奇数的个数ldn,j-l,s);Printf(奇数的总个数为:%ldnw,sum);/system(,pause);return0;)2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用*作为
13、结束输入的标志)。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数Prc)C()的花括号中填人所编写的若干语句。试题程序:char*proc(char(*a)81,intnum)()voidmain()(charss1081,*max;intn,i=0;Printf(输入若干个字符串:);gets(ssi);puts(ssi);whiIe(!strcmp(ssi,w*n)=0)(i+;gets(ssei);puts(ssi);)n=i;max=proe(ss,n);printf(,nmax=%snn,max);(本题14分)【答案】char*proc(char
14、(*a)81,intm)(char*max;inti=0:max=a0:for(i=0;im;i+)if(strlen(max)StrIen(ai)找出最长的字符串max=ai;returnmax;返回最长字符串的地址)3、输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n随后n行,每行按照“姓名生日电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。输出格式:按照年龄