2013 C语言练习题2
- 格式:pdf
- 大小:85.61 KB
- 文档页数:2
二级C语言真题2013年09月-(2)(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.设循环队列为Q(1:m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=15,rear=20。
现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为______。
(分数:1.00)A.4 √B.6C.m-5D.m-6解析:[解析] 循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=15,rear=20时,队列中有5个元素,比较次数为4次,故A选项正确。
2.下列叙述中正确的是______。
(分数:1.00)A.循环队列属于队列的链式存储结构B.双向链表是二叉树的链式存储结构C.非线性结构只能采用链式存储结构D.有的非线性结构也可以采用顺序存储结构√解析:[解析] 循环队列是队列的一种顺序存储结构,A选项错误。
双向链表为顺序存储结构,二叉树通常采用链式存储结构,B选项错误。
完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C选项错误,故D选项正确。
3.某二叉树中有n个叶子节点,则该二叉树中度为2的节点数为______。
(分数:1.00)A.n+1B.n-1 √C.2nD.n/2解析:[解析] 对任何一棵二叉树,度为0的节点(即叶子节点)总是比度为2的节点多一个。
二叉树中有n个叶子节点,则度为2的节点个数为n-1,故B选项正确。
4.下列叙述中错误的是______。
(分数:1.00)A.算法的时间复杂度与算法所处理数据的存储结构有直接关系B.算法的空间复杂度与算法所处理数据的存储结构有直接关系C.算法的时间复杂度与空间复杂度有直接关系√D.算法的时间复杂度与算法程序执行的具体时间是不一致的解析:[解析] 算法的时间复杂度是指执行算法所需要的计算工作量。
2013计算机二级考试c语言试题及答案第二套一、单项选择题(每题2分,共40分)1. 在C语言中,下列哪个关键字用于声明指针类型变量?A. intB. charC. floatD. pointer答案:A2. 若有定义 int a=5, b=9;,则表达式 a+b 的结果是:A. 14B. 59C. 95D. 无法确定答案:A3. 下列哪个选项不是C语言标准库函数?A. printf()B. scanf()C. malloc()D. strcpy()答案:C4. 在C语言中,以下哪个选项不是合法的变量名?A. _myVarB. 2myVarC. myVar2D. my_var答案:B5. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. ||D. &答案:A6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = {1, 2, 3};D. int array = {1, 2, 3, 4, 5};答案:B7. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str = "Hello";D. char str[] = {'H', 'e', 'l', 'l', 'o'};答案:A8. 在C语言中,以下哪个选项是正确的函数声明?A. int func();B. int func() {}C. int func() { return 0; }D. int func() { int a; }答案:C9. 在C语言中,以下哪个选项是正确的结构体声明?A. struct Student { int age; char name[20]; };B. struct { int age; char name[20]; };C. struct Student { int age; char name[20]; } student;D. struct Student { int age; char name[20]; };答案:C10. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color { Red, Green, Blue };B. enum { Red, Green, Blue };C. enum Color { Red = 1, Green = 2, Blue = 3 };D. enum { Red = 1, Green = 2, Blue = 3 };答案:A11. 在C语言中,以下哪个选项是正确的联合体声明?A. union Data { int i; float f; char str[20]; };B. union { int i; float f; char str[20]; };C. union Data { int i; float f; char str[20]; } data;D. union { int i; float f; char str[20]; } data;答案:C12. 在C语言中,以下哪个选项是正确的位域声明?A. struct Packed { unsigned int a:4; unsigned int b:4; };B. struct Packed { int a:4; int b:4; };C. struct Packed { unsigned int a:4; int b:4; };D. struct Packed { int a:4; unsigned int b:4; };答案:A13. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. #define PI = 3.14159C. #define PI (3.14159)D. #define PI 3.14159答案:A14. 在C语言中,以下哪个选项是正确的条件编译指令?A. #if defined(_WIN32)B. #ifdef _WIN32C. #ifndef _WIN32D. #if _WIN32答案:B15. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fread()D. fwrite()E. All of the above答案:E16. 在C语言中,以下哪个选项是正确的动态内存分配函数?A. malloc()B. calloc()C. realloc()D. free()E. All of the above答案:E17. 在C语言中,以下哪个选项是正确的预处理指令?A. #includeB. #defineC. #ifdefD. #ifndefE. All of the above 答案:E18.。
1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[]){int i;for (i=0;i<26;i++)pp[i]=0;while (*tt){switch (*tt){case ‘a’: pp[0]++;break;case ‘b’: pp[1]++;break;case ‘c’: pp[2]++;break;case ‘d’: pp[3]++;b reak;case ‘e’: pp[4]++;break;case ‘f’: pp[5]++;break;case ‘g’: pp[6]++;break;case ‘h’: pp[7]++;break;case ‘i’: pp[8]++;break;case ‘j’: pp[9]++;break;case ‘k’: pp[10]++;break;case ‘l’: pp[11]++;break;case ‘m’: pp[12]++;break;case ‘n’: pp[12]++;bre ak;case ‘o’: pp[14]++;break;case ‘p’: pp[15]++;break;case ‘q’: pp[16]++;break;case ‘r’: pp[17]++;break;case ‘s’: pp[18]++;break;case ‘t’: pp[19]++;break;case ‘u’: pp[20]++;break;case ‘v’: pp[21]++;break;case ‘w’: pp[22]++;break;case ‘x’: pp[23]++;break;case ‘y’: pp[24]++;break;case ‘z’: pp[25]++;break;}tt++;}}5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
全国计算机等级考试二级C语言真题2013年3月(总分40, 做题时间90分钟)一、选择题1. 程序流程图中带有箭头的线段表示的是______。
A 图元关系B 数据流C 控制流D 调用关系答案:C[解析] 在数据流图中,用标有名字的箭头表示数据流。
在程序流程图中,用标有名字的箭头表示控制流。
所以选择C。
2. 结构化程序设计的基本原则不包括______。
A 多态性B 自顶向下C 模块化D 逐步求精答案:A[解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
3. 软件设计中模块划分应遵循的准则是______。
A 低内聚低耦合B 高内聚低耦合C 低内聚高耦合D 高内聚高耦合答案:B[解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。
4. 在软件开发中,需求分析阶段产生的主要文档是______。
A 可行性分析报告B 软件需求规格说明书C 概要设计说明书D 集成测试计划答案:B[解析] A错误,可行性分析阶段产生可行性分析报告。
C错误,概要设计说明书是总体设计阶段产生的文档。
D错误,集成测试计划是在概要设计阶段编写的文档。
B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
5. 算法的有穷性是指______。
A 算法程序的运行时间是有限的B 算法程序所处理的数据量是有限的C 算法程序的长度是有限的D 算法只能被有限的用户使用答案:A[解析] 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
有穷性是指算法程序的运行时间是有限的。
6. 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是______。
A 快速排序B 冒泡排序C 直接插入排序D 堆排序答案:D[解析] 除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-1)/2。
二级C语言真题2013年09月-(2)(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.设循环队列为Q(1:m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=15,rear=20。
现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为______。
(分数:1.00)A.4 √B.6C.m-5D.m-6解析:[解析] 循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=15,rear=20时,队列中有5个元素,比较次数为4次,故A选项正确。
2.下列叙述中正确的是______。
(分数:1.00)A.循环队列属于队列的链式存储结构B.双向链表是二叉树的链式存储结构C.非线性结构只能采用链式存储结构D.有的非线性结构也可以采用顺序存储结构√解析:[解析] 循环队列是队列的一种顺序存储结构,A选项错误。
双向链表为顺序存储结构,二叉树通常采用链式存储结构,B选项错误。
完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C选项错误,故D选项正确。
3.某二叉树中有n个叶子节点,则该二叉树中度为2的节点数为______。
(分数:1.00)A.n+1B.n-1 √C.2nD.n/2解析:[解析] 对任何一棵二叉树,度为0的节点(即叶子节点)总是比度为2的节点多一个。
二叉树中有n 个叶子节点,则度为2的节点个数为n-1,故B选项正确。
4.下列叙述中错误的是______。
(分数:1.00)A.算法的时间复杂度与算法所处理数据的存储结构有直接关系B.算法的空间复杂度与算法所处理数据的存储结构有直接关系C.算法的时间复杂度与空间复杂度有直接关系√D.算法的时间复杂度与算法程序执行的具体时间是不一致的解析:[解析] 算法的时间复杂度是指执行算法所需要的计算工作量。
习题答案习题2(参考答案)一、选择题二、填空题习题 3 (参考答案)1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;c1=getchar(); c2=getchar(); c3=getchar();putchar(c3); putchar(c2); putchar(c1);}2.编程实现:用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;scanf ("%c%c%c", &c1, &c2, &c3) ;printf("%c %d,%c %d,%c %d ", c3,c3,c2,c2,c1,c1) ;}3.变量k为float 类型,调用函数:scanf("%d", &k);不能使变量k得到正确数值的原因是:scanf("%d", &k);中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.4. (略)习题4答案一选择题1-20 DBDCA CBDDA ACABC BCBBC二、写出下列程序的运行结果1. z=362. 20 03. 124. 48,485. 136. 02三编程题(参考答案)1.输入4个整数a,b,c,d,编写程序,将它们按从大到小顺序输出。
#include<stdio.h>main(){ int a,b,c,d,t;scanf("%d%d%d%d",&a,&b,&c,&d);if(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}if(a<d) {t=a;a=d;d=t;}if(b<c) {t=b;b=c;c=t;}if(b<d) {t=b;b=d;d=t;}if(c<d) {t=c;c=d;d=t;}printf("%4d%4d%4d%4d",a,b,c,d);}2.据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形?源程序:#include<stdio.h>#include "math.h"main(){float a,b,c,s,area;scanf("%f%f%f",&a,&b,&c);if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b)<c)&&(fabs(a-c)<b)&&(fabs(b-c )<a)){if(a==b&&b==c)printf("等边三角形");else if(a==b||b==c||a==c)printf("等腰三角形");else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf("直角三角形");else printf("一般三角形");}else printf("不能组成三角形");}3.输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。
二级C语言真题2013年03月-(3)(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.设数据元素的集合D={1,2,3,4,5},则满足下列关系R的数据结构中为线性结构的是______。
(分数:1.00)A.R={(1,2),(3,4),(5,1)}B.R={(1,3),(4,1),(3,2),(5,4)} √C.R={(1,2),(2,3),(4,5)}D.R={(1,3),(2,4),(3,5)}解析:[解析] 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构。
不同时满足以上两个条件的数据结构就称为非线性结构。
A选项中有两个根节点3和5故错误。
B选项根节点为5,排列顺序为54132,B选项正确。
C选项有两个根节点1和4,故错误。
D选项有两个根节点1和2,故错误。
2.下列叙述中正确的是______。
(分数:1.00)A.链表节点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构√B.线性表的链式存储结构中,每个节点必须有指向前件和指向后件的两个指针C.线性表的链式存储结构中,每个节点只能有一个指向后件的指针D.线性表的链式存储结构中,叶子节点的指针只能是空解析:[解析] 双向链表与树形结构的节点均可以包含两个指针域,但前者为线性结构,后者为非线性结构,故A选项正确。
双向链表含有指向前件和指向后件的两个指针,故C选项错误。
线性链表就是指线性表的链式存储结构。
由于这种链表中,每个节点只有一个指针域,故又称为单链表,故B选项错误。
二叉树为非线结构,叶子节点没有后件,但是可以有指向前件的指针,故D选项错误。
3.一个栈的初始状态为空。
现将元素A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。
则元素退队的顺序为______。
删除星号(1、4、55、59、63、64、65、66、85、93) (2)将a和b两个数组成一个新数c(9、40、67、69、94、95、96、97) (6)结构体问题(6、7、8、10、11、42、43、68、84、86) 6 (7)链表编程题(12、70) (11)求和问题(2、20、21、22、25、44、46、53 、61、62、90、91) (12)二维数组题(矩阵的转置、求和、右三角、左三角27 29 35 37 71 87 88) (18)将二维数组合并成一个一维数组(73、74、75、78) (22)素数问题(24、28、34、41) (24)统计问题 (26)统计子字符串在父字符串中出现的次数(33) (26)统计年龄和字母的个数(39、80) (27)统计单词的个数(81) (28)统计指定字符的次数(82、101) (28)方差问题(23) (29)求根问题(47) (30)菲不拉基数列(51) (31)回文编程题(100) (32)求满足条件的和(16、49、89、98) (33)字符串的操作(连接、拷贝3、36、103) (35)寻找最大数、最小数以及所在下标(14、17、31、58) (36)按照给定条件转换数(15、104) (38)字符串的逆序和排序(26、30) (39)删除 (40)删除字符串中不满足条件的字符(18、45、48、50、52、54) (40)删除字符串中的空格字符(72) (41)删除数组中重复的数使之保留一个(79) (41)删除指定下标或者指定的字符(83、92) (42)移动(76、77) (43)求数组中相邻两个元素之和(19) (44)将指定位置上字母变成大写(60、99) (45)查找(32、102) (45)求平均分以及统计平均分以下的人数(5、38、105) (46)其他(13、57) (48)删除星号(1、4、55、59、63、64、65、66、85、93)1、假定输入的字符串中只包含字母和*号。
2013年浙江省c语言二级考试试卷及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. IntegerC. INTD. integer答案:A2. C语言中,一个整型变量占用的字节数是多少?A. 1B. 2C. 4D. 8答案:C3. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. forD. case答案:D4. C语言中,哪个函数用于计算字符串的长度?A. strlen()B. strlength()C. length()D. strleng()答案:A5. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable-2答案:B6. C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A7. C语言中,哪个函数用于将字符串连接到另一个字符串的末尾?A. strcat()B. strjoin()C. strappend()D. strconcat()答案:A8. C语言中,哪个函数用于将字符串从大写转换为小写?A. tolower()B. toupper()C. strlower()D. strupper()答案:A9. C语言中,哪个函数用于输出格式化的字符串?A. printf()B. sprintf()C. fprintf()D. scanf()答案:A10. C语言中,哪个函数用于计算两个浮点数的差?A. fabs()B. fmod()C. diff()D. subtract()答案:B二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组时,数组的下标从____开始。
答案:02. C语言中,使用____运算符可以对变量进行自增操作。
答案:++3. C语言中,使用____函数可以获取当前时间。
答案:time()4. C语言中,使用____函数可以打开一个文件。
1 2013年9月份 全国计算机等级考试二级C 语言 试题题库(无纸化考试专用)(说明:无纸化考试选择题40分,程序题60分。
学会这些题,保证二级高空飘过!!!)第一套给定程序的功能是:求二分之一圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S r π=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h> double fun( double r) { return 3.14159*【1】/2.0;}void main() {double x; printf("Enter x: "); scanf("%lf",【2】);printf("s=%lf\n",fun(【3】));}【参考答案】 (1)r*r (2)&x (3)x【考点分析】 本题考查:圆面积计算公式S π=*r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。
【解题思路】填空1:计算圆的面积,公式为:s r π=*r 。
填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x 。
填空3:函数的实际参数是圆的半径x 。
下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
(二)数据的类型与基本操作
一、选择题
1.若有代数式y
y x log
+,则正确的C语言表达式是()
10
A.sqrt(fabs(pow(y,x)+log(y)))
B.sqrt(abs(pow(y,x)+log(y)))
C.sqrt(fabs(pow(x,y)+log(y)))
D.sqrt(abs(pow(x,y)+log(y)))
2.已知字母A的ASCII码为十进制数65,C2为字符型,则执行语句C2=’A’+’6’-‘3’;后,
C2中的值为()
A.D
B.68
C.不确定的值
D.C
3.以下选项中,与k=n++完全等价的表达式是()
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n=1
4.若re、a、b都是int型变量,则执行re=(a=4,b=6,c=12)后,re的值为()
A.4
B.6
C.12
D.22
5.在ASCII字符集中,数字0的序号为48,下面程序的输出结果是()
#include“stdio.h”
void main()
{
char a=’0’,b=’9’;
printf(“%d,%c”,a,b);
}
A.输出格式不合格
B.48,57
C.0,9
D.48,9
二、填空题
1若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()
2.以下程序
#include“stdio.h”
void main()
{
char ch1,ch2;
int n1,n2;
ch1=getchar();
ch2=getchar();
n1=ch1-‘0’;
n2=n1*10+(ch2-‘0’);
printf(“%d”,n2);
}
程序运行时输入:12<回车>,执行后输出结果是_________________.
3.在C语言中,一个char型数据在内存中所占字节数是______________;一个int型数据在内存中所占的字节数是_______________;一个float型数据在内存中所占的字节数是_____________;一个double型数据在内存中所占的字节数是_________________;
4.若有以下语句:int a=5;printf(“%d\n”,a++);则输出结果是__________________;
三、编程题
1.若a、b为整型变量,x、y为实型变量,a=10,b=3,x=7.5,y=
2.5,编写程序求下面表达式的值。
(1)(b-1)x+a%4
2.已知圆半径、圆柱高,求圆周长、圆柱体积(保留两位小数)
3.由键盘输入一个小写英文字母,先输出该字母及ASCⅡ码值,然后输出它的大写字母及ASCⅡ码值。