C++上机考试题库答案
- 格式:doc
- 大小:21.85 MB
- 文档页数:95
计算机二级《C语言》上机操作试题及答案计算机二级考试是全国计算机等级考试,四个等级中的一个等级,由教育部考试中心主办,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。
下面是店铺收集整理的计算机二级《C语言》上机操作试题及答案,仅供参考,希望能够帮助到大家。
(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、c、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是( )。
A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA(2)下列叙述中正确的是( )。
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的'(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)(4)下列叙述中正确的是( )。
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是( )。
A.控制流B.事件驱动C.模块调用D.数据流(6)在软件开发中,需求分析阶段可以使用的工具是( )。
A.N—s图B.DFD图C.PAD图D.程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性B.分类性C.多态性D.标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A.一对一B.一对多C.多对一D.多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
计算机二级C上机考试题库及答案在计算机二级C语言上机考试中,考生需要掌握C语言的基本语法、数据结构、算法设计等知识。
以下是一套模拟题库及答案,供考生参考和练习。
1. 题目:以下哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-2D. variable$2答案:B解析:在C语言中,标识符可以由字母、数字和下划线组成,且不能以数字开头。
因此,只有选项B中的"variable2"是合法的标识符。
2. 题目:以下哪个选项是C语言中的整型常量?A. 0x1AB. 1.2E3C. 0.5D. 1.2答案:A解析:整型常量可以是十进制、八进制或十六进制的整数。
选项A中的"0x1A"是十六进制的整型常量,而选项B、C和D都是浮点型常量。
3. 题目:以下哪个选项是C语言中的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello" "World"D. 'H' "ello" 'W' "orld"答案:A解析:字符串字面量是由双引号括起来的字符序列。
选项A中的"Hello World"是一个合法的字符串字面量。
选项B是字符字面量,选项C和D的组合方式在C语言中不合法。
4. 题目:以下哪个选项是C语言中的合法数组声明?A. int a[5] = {1, 2, 3, 4, 5};B. int b[] = {1, 2, 3, 4, 5};C. int c[5] = {1, 2, 3};D. int d[];答案:A解析:在C语言中,数组的声明需要指定数组的大小,除非数组作为函数的参数。
选项A正确地声明了一个大小为5的整型数组,并初始化了它的元素。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
C 语言上机考试题20套(试题)C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
C 语言上机考试题(第二套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n″, fun(10));}2.回文数是指正读和反读都一样的自然数。
例如,8, 121, 5445这三个数都是回文数。
求:(1) [1,1000]之内既是回文数,又是素数的最大整数。
(2) [1,1000]以内既是回文数,又是素数的整数有多少个。
3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。
计算机二级C上机考试题库及答案一、选择题1. 下面哪个不是C语言的关键字?A. intB. charC. doubleD. if答案:C2. C语言中,声明int a[10]; 表示的是什么类型的变量?A. 整型数组B. 字符型数组C. 浮点型数组D. 无类型数组答案:A3. 以下哪个函数用于从标准输入中读取一个字符?A. getchar()B. putchar()C. printf()答案:A4. 下面哪个运算符用于取两个操作数的余数?A. +B. -C. *D. %答案:D5. C语言中,用于判断两个数是否相等的运算符是?A. >B. <C. ==D. !=答案:C二、编程题1. 输出斐波那契数列的前20项。
```c#include <stdio.h>int n, i;long long t1 = 0, t2 = 1, nextTerm;printf("斐波那契数列的前20项:\n");for (i = 1; i <= 20; ++i) {printf("%lld, ", t1);nextTerm = t1 + t2;t1 = t2;t2 = nextTerm;}return 0;}```三、简答题1. C语言中的指针是什么?请简要说明指针的概念和作用。
答:C语言中,指针是一个用来存储内存地址的变量。
指针可以指向内存中的任何数据类型,包括整型、字符型、结构体等。
指针的作用主要有两点:一是可以通过指针直接访问、修改内存中的数据;二是可以动态地分配内存空间,提高程序的灵活性和效率。
2. 请简要说明C语言中的结构体是什么,以及它的作用及特点。
答:C语言中的结构体是一种自定义的数据类型,用于将不同类型的数据组合在一起形成一个逻辑整体。
结构体可以包含不同类型的成员变量,可以根据需要定义不同结构体类型的变量。
结构体的作用主要有两点:一是可以方便地管理和操作多个相关的变量;二是可以定义自己需要的数据类型,提高程序的可读性和可维护性。
第1套一、填空题给定程序的功能是求1/4的圆周长。
函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=Πd,在程序中定义的变量名要与公式的变量相同)。
例如:输入圆的直径值:19.527,输出为:15.336457请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。
#include<stdio.h>double fun(double d){return 3.14159*d/4.0;}main(){double z;printf("Input the d of the round:");scanf("%lf",&z);printf("L=%lf\n",fun(z));}二、改错题下列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。
例如,若输入202,则输出应该是0。
请修改程序中的错误,得出正确的结果注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include<stdio.h>#include<conio.h>long fun(long n){long r=1;do{r*=n%10;n/=10;}while(n);return(r);}main(){long m;printf("\nplease enter a number:");scanf("%ld",&m);printf("\n%ld\n",fun(m));}三、编程题请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。
例如,若传送给m的值为20,则程序输出7 11 14。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
第1套题解析题目一:基本操作题【参考答案】(1)delete [] array;(2)cout<< array[i]<< ' ';(3)MyClass obj(10);【考点分析】本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态数组、语句初始化。
一般考到类时就会涉及构造函数,要注意构造函数的定义方法。
析构函数就是考查delete语句的用法, 其一般形式为: delete []+要释放的指针。
【解题思路】(1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete [] 后面即可。
(2) 考查考生对输入、输出语句的运用。
使用cout进行数据输出操作,一般格式为:cout<<Expr;其中,Expr代表一个表达式,"<<"称为插入运算符,该语句的含义是;将表达式Expr的值输出到屏幕上。
使用cin进行数据输入操作,一般格式为:cin>>vari。
其中,var是代表一个变量,">>"称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。
(3) 考查语句的初始化,我们来看MyClass类的构造函数:MyClass(int len){array = new int[len];arraySize = len;for(int i = 0; i < arraySize; i++)array[i] = i+1;}注意形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。
【解题宝典】delete语句是最常考的知识点,用于释放指针变量,其一般形式为:delete[]+要释放的指针。
题目二:简单应用题【参考答案】(1) a[num] = e;(2) Array(s)(3) a[j] = a[j - 1];(4) a[i] = e;【考点分析】本题考查数组类Array以及Array的派生类SortedArray,其知识点涉及构造函数、析构函数、虚函数、动态数组。
考到函数时,首先要看函数名,通过函数名称能大概知道该函数的功能,比如Array 类中的virtual void add(int e) 函数,看到这个函数我们能得到如下信息:1) 有关键字virtual,说明该函数是虚函数,在Array类的派生类里肯定会有对add函数的定义。
2) 有关键字void,说明此函数没有返回值。
3) add的意思是添加,它的形参是int e,那么我们大概可以猜到该函数的功能是把整型数值e添加到数组a中。
【解题思路】(1) 考查的是虚函数virtual void add(int e)的定义,即添加一个整型数已到a[num] 中。
(2) 主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始化。
(3) 因为SortedArray类是排序类,所以数组a中的元素是要从小到大排序的。
在if (e < a[i])条件下,要把i后的元素逐个往后移一位,因此此处为a[j] = a[j - 1]。
(4) 主要考查虚函数virtual void add(int e)在派生类SortedArray类中的定义,把插入的数据放在数组a的第i+1个位置,即a[i] = e;。
【举一反三】第31套的简单应用题。
题目三:综合应用题【参考答案】(1) MyVector::MyVector(2) i.x - j.x, i.y - j.y(3) v1 + v2【考点分析】本题考查二维向量类MyVector,其中涉及到的知识点有构造函数,重载运算符+、-、<<。
在类外定义构造函数时,语法要和定义其他类函数一样,前面要加上类名和作用域符号。
重载运算符函数要注意其返回值类型和参数类型。
【解题思路】(1) 主要考查的是构造函数, 在类外定义构造函数时要使用类名和作用域, 即MyVector::MyVector。
(2) 主要考查重载运算符"-"的返回语句,返回值应为向量i和j的差,即MyVector(i.x - j.x, i.y - j.y);。
(3) 主要考查重载运算符"+"的使用,由题目可知v3是v1和v2的和,前面我们已经重新定义了运算符"+",所以在这里直接使用语句v3 = v1 + v2即可。
第2套题解析题目一:基本操作题【参考答案】(1)MyClass(int i)(2)int Max(int x, int y, int z)(3)cout<< "The value is "<< obj.GetValue()<< endl;【考点分析】本题考查:MyClass类,构造函数,析构函数,成员函数,函数重载。
函数重载必须要形参类型不同,或者形参个数不同。
【解题思路】(1)考查构造函数,构造函数前不加void或其它任何类型名,直接使用MyClass(int i)即可。
(2)主要考查函数重载,在int Max(int x, int y) { return x>y ? x : y; }中两个形参变量都是int型,而语句int Max(int x, int y, int z= 0)的前两个形参也都是int 型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把int z=0 改为intz,才能构成函数重载。
(3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。
【举一反三】第28套的程序改错题。
题目二:简单应用题【参考答案】(1)item(val)(2)delete [] p(3)temp = top(4)temp->next = top【考点分析】本题考查:堆栈类Stack类,Item类,构造函数,析构函数,成员函数,函数调用。
堆栈类的节点一般使用指针表示,也就会考查到指针的相关知识点,要注意释放指针应使用delete [] 语句。
【解题思路】(1)主要考查构造函数,对私有成员进行初始化,即item(val)。
(2)主要考查delete语句释放指针,一般格式为:delete []+指针。
(3)指向栈顶节点的是top指针,要使temp指向栈顶节点,故使用语句temp = top。
(4)指向栈顶结点的是top指针,要使新节点的next指针指向栈顶数据,故使用语句temp->next = top。
【解题宝典】本题涉及堆栈类,栈是先进后出,后进先出的存储结构。
对于此类问题指针的使用是个难点,要记住栈中指向栈顶节点的是top指针,添加数据时要往栈顶添加。
【举一反三】第46套的简单应用题。
题目三:综合应用题【参考答案】(1)MyPoint p1, MyPoint p2(2)up_left.getX(), down_right.getY()(3)double MyRectangle::【考点分析】本题考查:表示平面坐标系中的点的类MyPoint,表示矩形的类MyRectangle,构造函数,成员函数。
【解题思路】(1)考查构造函数,构造函数中的参数要给私有成员赋值,在下句中up_left(p1),down_right(p2){}指出私有成员赋值要使用形参p1和p2,所以这里参数要定义为MyPoint p1, MyPoint p2。
(2)主要考查成员函数的返回语句,MyPoint My Rectangle: getDownLeft()const函数要求返回一个左下角的点坐标,因此使用语句MyPoint(up_left.getX(), down_right.getY());。
(3)主要考查成员函数的定义,在MyRectangle类中已经声明double area()const,因此此处只要添加double MyRectangle::即可。
【解题宝典】构造函数的参数定义时要注意在赋值语句中使用的参数。
考查构造函数一般都会考查到形参,应注意联系上下文。
类的成员函数在类外定义时要在函数名前面加上:返回值类型+ 类名+ 作用域(::)。
【举一反三】第28套的综合应用题。
第3套题解析题目一:基本操作题【参考答案】(1)MyClass(int val) : value(val) {}(2)void MyClass::SetValue(int val) { value = val; }(3)cout<< "The value is "<< obj.GetValue()<< endl;【考点分析】本题主要考查:MyClass类,构造函数,成员函数以及成员函数调用。
【解题思路】(1)考查构造函数,定义构造函数时不能使用void,直接使用MyClass(int val)即可。
(2)主要考查成员函数定义,类的成员函数定义时要使用前缀MyClass,而inline是内联函数的关键字,在此是错误的,应该删掉inline并在函数名前加上前缀MyClass,即void MyClass::SetValue(int val) { value = val; }。
(3)考查成员函数调用,value是私有成员,在主函数中不能直接调用value,可以使用成员函数GetValue()来得到value的值。
【解题宝典】构造函数前不能添加任何类型,如void,int,double等。
类的成员函数定义时要加上前缀,即类的名字。
私有成员只能被类的成员函数调用。
【举一反三】第32套的程序改错题。
题目二:简单应用题【参考答案】(1)new char[s](2)delete [] p(3)p[top] = c(4)return p[top]【考点分析】本题主要考查的是表示栈的抽象类Stack类以及它的派生类ArrayStack类,纯虚函数,成员函数。
栈的节点一般使用指针表示,定义构造函数时要给指针分配空间,使用new语句来完成。
ArrayStack() 是析构函数,因为前面已经使用了new来分配空间了,因此在这里要用delete 语句来释放指针。
【解题思路】(1)主要考查的是ArrayStack的构造函数,在函数中要为p申请s个char型空间,应使用语句p = new char[s];。