计算机二级考试C++上机考试试题
“爱哭的女孩”通过精心收集,向本站投稿了8篇计算机二级考试C++上机考试试题,下面小编给大家整理后的计算机二级考试C++上机考试试题,供大家阅读参考。
篇1:计算机二级考试C++上机考试试题
计算机二级考试C++上机考试试题
一、程序改错题
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。
程序异常,输出信息为
error
O
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include intmain { try { throw(“error”); } //********error******** catch(chars) { cout< } try { throw((int)0); } //********error******** catch() { cout< } try { throw(O); throw(“error”); } //********error******** catch() { cout<<“ERROR”< } return0; } 二、简单应用题使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请补充完整程序fun(inti),使其完成以下功能:如果i=5,则输出如下5行#号。 # ## ### #### ##### 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include voidfun(inti) { } intmain() { fun(5); return0; } 三、综合应用题使用VC++6.0打开考生文件夹下的源程序文件3.cpp。程序通过继承关系,实现对姓名的控制。类TC1实现对名字访问的接口,TC2实现对名字的设置和输出。 程序输出为 TC2Name May 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类TCl中定义接口函数GetName为纯虚函数。请在注释1后添加适当的.语句。 (2)函数GetName2用于获得名字的缓存,但只获得允许读操作这个缓存,请在注释2后添加适当的语句。 (3)实现TC2的构造函数,请在注释3后添加适当的语句。 (4)完成TC2的构造函数,实现对名字的处理。请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include classTC1 { public: //********1******** }; classTC2:publicTCl { public: voidGetName() { cout<<“TC2Name”< } //********2******** { returnm_str; } //********3******** { inti: for(i=0;str[i]!=0;i++) m_str[i]=str[i]; //********4******** } private: charm_str[32]; }; voidmain() { TCl*P; TC20bj1(“May”); p=&objl; p->GetName(); cout< return; } 一、程序改错题(1)应改为“catch(char*s)”。 (2)应改为“cateh(inti)”。 (3)应改为“catch(…)”。 【解析】本题中第1个标识前的异常抛出语句为“throw(“error”);”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。 二、简单应用题for(intj=0;j(i;j++)//行循环 { for(intk=0;k<=j;k++)//列循环 cout<<“#”;//输出“#” cout< } 【解析】本题首先利用for循环进行外层循环,输出对应的i行,然后利用for循环进行内层循环,输出对应i行的i列。 三、综合应用题(1)应添加“virtualvoidGetNamt!()=0;”。 (2)应添加“constchar*GetName2()”。 (3)应添加“TC2(char*str)”。 (4)应添加“m_str[i]=0;”。 【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚函数”。在C++中,在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即“virtualvoidGetName()=0;”。第2处要求“函数GetName2实现获得名字的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即“constchar*GetName2()”。第3处要求“实现TC2的构造函数”。TC2的构造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为“TC2(char*str)”。第4处要求“完成TC2的构造函数,实现对名字的处理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。 C语言是一门通用计算机编程语言,应用广泛。在计算机二级C语言考试答题中有哪些做题技巧,下面我们一起来了解吧。 计算机二级考试《C语言》上机答题技巧 一、上机改错题的特点和注意事项 1.上机改错的试题中通常包含两个(或三个)错误需要修改。 2.试题中用“******found******/”来提示在下一行(或下面第二行)有错。 3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。 4.特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。 二、上机改错测试时,建议按以下步骤进行 1.首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确。 2.当在Visual C++6.0环境下调出源程序后,审视所在函数,根据题义理解程序所采用的基本算法,做到心里有数。 3.先按CTRL+F7对测试程序进行检查是否有语法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。 4.当不再出现语法错时,使用F7执行,看结果使用CTRL+F5,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。 5.当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候数组上限下限错误了,基数是从0开始而不是1开始的。修改程序中的逻辑错时,要求考生认真读懂程序代码。 6.修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。 三、上机编程题的特点和说明 1.在二级C程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。 四、进行编程测试时,建议按以下步骤进行 1.首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。 2.当在Visual C++6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。 3.理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。 4.选择适当的算法进行编程,输入程序语句。不要忘记及时存盘! 5.编译程序,直到没有语法错误。 6.调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。 对一些C编程时常犯的错误,特别写给各位考生以供参考。 1.书写标识符时,忽略了大小写字母的区别。 main() { int a=5; printf(“%d”,A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() { float a,b; printf(“%d”,a%b); } %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。 3.将字符常量与字符串常量混淆。 char c; c=“a”; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串 “a”实际上包含两个字符:‘a'和‘',而把它赋给一个字符变量是不行的。 4.忽略了“=”与“==”的区别。 在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then … 但C语言中,“=”是赋值运算符,“==”是关系运算符。如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。 5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 { z=x y; t=z/100; printf(“%f”,t);} 对于复合语句来说,最后一个语句中最后的分号不能忽略不写。 1.计算机考试二级C语言考试技巧 2.计算机二级c语言试题 3.计算机二级VB上机考试答题技巧 4.计算机二级C语言考试必看技巧 5.计算机等级考试三级(C语言)上机考试试题总结 6.计算机二级的答题技巧 7.计算机二级上机小技巧 8.计算机二级考试技巧 9.计算机二级考试技巧 10.计算机二级考试技巧 三、程序修改题 下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果; 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: 四、程序设计题 编写函数fun,其功能是:将a,b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。 例如,当a=45,b=12,调用该函数后c=4251。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序. 计算机二级C语言考试试题及答案 1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从(C) 开始执行。 A、 程序中第一条可执行语句 B、 程序中第一个函数 C、 程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B ) 。 A、 C程序的工作过程是编辑、编译、连接、运行 B、 C语言不区分大小写。 C、 C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。 A、-a1 B、a[i] C、a2_i D、int t 5-8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成 数字不能作为标识符的'开头 关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是( C )。 A、 %x B、a+b C、a123 D、123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。 A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A、2.5 B、2 C、1 D、3 %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1; /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2 计算机二级考试试题C语言冲刺试题 11.如果int a=3,b=4;则条件表达式“aA、 3 B、 4 C、 0 D、1 表达式1?表达式2:表达式3 先计算表达式1, 若表达式1成立, 则选择计算表达式2,并表达式2的值作为整个大表达式的值; 若表达式1不成立,则选择计算表达式3,并将表达式3的'值作为整个大表达式的值 此题中的aa为3,b为4。a12.若int x=2,y=3,z=4 则表达式x A、4 B、3 C、2 D、0 E)1 13.C语言中,关系表达式和逻辑表达式的值是( B ) 。 A、0 B、 0或1 C、 1 D、‘T’或’F’ 14. 下面( D )表达式的值为4. A、 11/3 B、 11.0/3 C、 (float)11/3 D、 (int)(11.0/3+0.5) (1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。 (2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。 选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3. 选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666 选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同 选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为4 15.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( B ) A、b=1.0/a B、b=(float)(1/A、 C、b=1/(float)a D、b=1/(a*1.0) 常用算法 熟练地掌握算法原理、编程思想和代码实现,就能够做到举一反三,轻松备考,顺利过关。 1.累加与连乘 基本思想:设置初值,循环计算。 扩展: (1)计算指定范围内某一个数的倍数之和。 (2)计算某范围内所有数的乘积。 (3)求某一个数列的和。 2.生成N个不同的随机数 基本思想:将生成的数送入一个数组,每生成一个数后与数组中已有的数比较,如相同则丢弃,重新生成可使用语句Exit For。 3.求素数、极值 求素数基本思想:素数的意义;实现方法:双重循环,外循环判断每一个数,内循环判断能否被某数整除。 求极值基本思想:设第一个数为极值数,然后进入循环与其比较,超过则替换。 4.排序 (1)选择法:每次先找出最小数所在的F标,排序结束后,交换最小数的位置。 (2)冒泡法:两两比较后交换。 (3)合并法:将两个有序的数组合并成一个仃序的数组。两个数组中的数两两比较,小者放入目标数组,直到.个数组为窄。 (4)插入法:每输入或生成一个数马上插入到数组中使其有序。 5.数列的插入、删除和重组 (1)插入:对原数组进行扩充,循环查找插入位置(逐个比较),找到后,从后向前依次移动每一个数字,直到该位置,然后将数据插入。 (2)删除:与插入类似,也是先查找位置,找到后,将该位置以后的每一个元素依次前移。 (3)重组:采用排序或移动元素的思想,具体情况具体分析,如奇偶数的分开等。 6.穷举与递推 (1)穷举:利用循环将所有可能逐个测试,直到条件成立为止,如百钱买百鸡问题、钱币折零问题等。 (2)递推(迭代):将一个复杂的计算过程转化为简单过程的重复,通常也是利用循环实现,这一次计算的结果作为下一次的变量继续进行计算,直到满足指定的条件,如猴子吃桃问题、计算近似数问题、数列计算问题等。 7.顺序查找 基本思想:利用循环逐个比较待查找值,找到后退出,一般要使用Exit语句。 8.递归 基本思想:需要解决的问题必须用递归的方式进行描述,才能转变为递归过程,原则上所有的迭代过程都可以使用递归 过程来实现。递归描述有两个关键要素:一是递归结束的条件;二是迭代公式(此次的结果能够作为下一次的变量)。 递归过程的分析:递推n次直到结束条件满足,回归n次得到运算结果。 典型递归:阶乘的计算1!=1,n!=n*(n-1)! 最大公约数gcd(m,n):m mod n=0,gcd=n;gcd(m,n)=gcd(n,m mod n) 二分法查找search:中点值=关键值,结束;改变low、high后,递归调用search(a0,low,high,key,index)。 9.分类统计 统计各种类型的数据,如字母出现的次数、奇偶数统计等。基本思路是掌握分类条件的表示,设置各种类型的计数器(可以用数组),利用循环来解决。 10.字符串处理、加密与解密 字符串处理:输入(inputbox函数或文本框)、求长度(1en函数,汉字问题)、循环处理。典型考点:分离指定字符、分类统计、字符串的重组、字符的插入与删除等。 加密与解密:理解加密算法(移位法、密钥表)。 整型数据的处理:各位数字的拆分;数的因子;最大公约数gcd(m,n)=a与最小公倍数m*n/a;素数与合数;互质数(两个数的最大约数为1,两个数有公因子)。 1.计算机二级vb上机题库 2.20计算机二级VB上机考试答题攻略 3.年计算机二级VB上机考试答题技巧 4.计算机二级《VB》的常用算法 5.计算机二级VB强化试题及答案 6.计算机二级vb练习题 7.计算机二级VB考试题精选及答案 8.计算机二级VB考试答题技巧 9.计算机二级考试VB程序设计复习试题 10.计算机二级VB考试题 省二级计算机考试试题 一、word文档编辑与排版 1.在 D 盘根目录下新建以自己班级+姓名命名的文件夹。 2.录入以下文档: 3.设置样式,第一行标题设置为标题 1,一号字体;其他设置为正文四号字体。 4.设置字体:第一行标题为华文新魏;正文为华文楷体,“营业厅地址”五个字为黑体。 5.设置字形:第一行标题加粗,第三行加粗。6.设置对齐方式:第一行标题居中,第二行右对齐。 7.设置段落缩进:段落首行缩进 2 字符,其他按样文缩进。 8.设置段落间距:第二段段前、段后各 1 行。正文行距为固定值 20 磅。 9.按样文设置项目符号与编号。 10.页面设置:设置纸张为 A4,设置页边距上下各 2cm,左右各 3cm。 11.设置页眉页脚:为该通知单添加页眉“缴费通知”,小五号字体,居中。 12.插入如样文所示的图片,并设置图片高 0.3cm,宽 16cm。 13.如样文所示,为文字设置绿色底纹。 14.文中 A、C 两项,请分别使用“邮件合并”从下题目“excel 操作” 中的 Sheet1 中的“姓名”与“编号”字段获取。 15.文中 B 项请根据插入的 A 项的性别分别选择显示“先生”或“女士”。 16.将该文档以“word 操作”保存到自己新建的文件夹中。 17.在文章末尾添加一 3 行 5 列表格,将表格设置为表格自动套用格式“列表 8”。 二、电子表格格式编辑与数据处理 1.新建工作薄“excel 操作”保存到你建立的.文件夹中,输入“Sheet1” 工作表内容如下表所示。其中,“班级”使用数据有效性设置选择输入列表。 2.为工作表中的各科成绩设置数据有效性检查,要求输入的成绩介于 40 到 100 之间,合理设置“输入信息”和“出错信息”。3.将表格总分列的对齐方式设置为中部右对齐,其余单元格的对齐方式设置为中部居中;将单元格中的字体颜色设置为深蓝色。 4.将各科平均分的字体设置为 TimesNewRoman、12 号、加粗。 5.将表格第一列底纹设置为浅橙色,第二列设置为青绿色,第五列设置为浅黄。 6.将表格的外表框设置为 1.5 磅粗的双实线,红色;内边框设置为 1 磅粗实线。 7.把工作表中低于 60 的分数用红色标出,超过 90 的分数用绿色标出。 8.使用 Sheet1 工作表中的数据,统计“总分”并计算“各科平均分”,结果分别放在相应单元格中。其中“各科平均分”保留一位小数。 9.给总分最高的单元格插入批注“总分最高”。 10.根据姓名和总分为数据源创建图表,其标题为”成绩图表",类型为“三维簇状柱形图”。 11.复制 Sheet1 中除了“各科平均分”以外其他的信息到 Sheet2 中,以“总分”为主要关键字,“数学”为次要关键字,升序排序。 12.在 Sheet2 中,高级筛选出总分>300 分,并且姓“李”的学生,并将结果保存为 Sheet3。 13.复制 Sheet2 中的数据到 sheet4,以“班级”为分类字段,将各科成绩进行“平均值”分类汇总。 14.复制 Sheet2 的信息到 Sheet5 中,布局以“系别”为分页,以“班级”为行字段,以各科考试成绩为平均值项,从 Sheet5 工作表中 A1 单元格起建立数据透视表。 三、利用 PowerPoint制作一份“教学课件(大学语文)” 1.文稿长度不少于 6 张幻灯片。 2.设计一个较好的首页封面。 3.要求课件内容包括:课文背景、作者年代、练习题、课堂讨论等。 4.尽可能地利用文稿演示软件的各种优化演示文稿的设计,如插入声音与影片、幻灯片的切换方式、自定义动画、超级链接、动作按钮等的设计。 第一种: 产品销售记录问题: ?? /* 已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。 其中: ?? 金额=单价*数量计算得出。函数ReadDat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ), 其功能要求: 按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell中。最后main( )函 数调用函数WriteDat()把结果输出到文件OUT1.DAT中。 注意: 部分源程序存放在PROG1.C中。 ?? #define MAX 100 ?? typedef struct { ?? char dm[5] ; /* 产品代码 */ ?? char mc[11] ; /* 产品名称 */ ?? int dj ; /* 单价 */ ?? int sl ; /* 数量 */ ?? long je ; /* 金额 */ ?? } PRO ; ?? 函数解析://if((sell[i].je>sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm, ?? sell[j].dm)>0))是此题的精华所在理解它 就理解了这道题的编程道理 ?? 首先sell[i].je>sell[j].je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否 相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。 ?? 这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达, 此方法是按照题意一部一部来分析的,是比较保守的编程方法。 ?? void SortDat() ?? { int i,j; ?? PRO swap; ?? for(i=0; i < MAX-1; i++) ?? { for(j=i+1; j < MAX; j++) ?? if(sell[i].je>sell[j].je) ?? {swap=sell[i]; sell[i]=sell[j]; sell[j]=swap;} ?? else if((sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)>0)) ?? {swap=sell[i]; sell[i]=sell[j]; sell[j]=swap;} ?? } ??100个产品销售记录排序其余9题说明 ?? 1) in.dat 内容完全相同。 ?? 2) 程序也基本雷同,仅排序的要求不一样。 ?? 3) 考生应熟悉 strcmp() 函数,否则有的题相当不好处理。 ?? 试题变化 : ?? 排序要求: ?? 按金额从小到大进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句: ?? if((sell[i].je>sell[j].je)||( (sell[i].je==sell[j].je) && (strcmp(sell[i].dm, sell[j].dm) < 0))) ?? 排序要求: 按金额从大到小进行排列, 若金额相等, 则按产品代码从小到大 进行排列 相应语句: if((sell[i].je < sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm, sell[j].dm)>0)) ?? 排序要求: ?? 按金额从大到小进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句: ?? if((sell[i].je < sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)<0)) ?? 排序要求: ?? 按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小 到大进行排列 ?? if((strcmp(sell[i].mc, sell[j].mc)>0)||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sell[j].je)) ?? 排序要求: ?? 按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大 到小进行排列 ?? if(strcmp(sell[i].mc, sell[j].mc)>0 || (strcmp(sell[i].mc, sell[j].mc)==0)&&(sell[i].je < sell[j].je)) ?? 排序要求: ?? 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小 到大进行排列 ?? if((strcmp(sell[i].mc, sell[j].mc) < 0) || (strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sell[j].je)) ?? 排序要求: ?? 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大 到小进行排列 ?? if((strcmp(sell[i].mc, sell[j].mc) < 0)|| (strcmp(sell[i].mc, sell[j].mc)==0)&&(sell[i].je < sell[j].je)) ?? 排序要求: ?? 按产品代码从小到大进行排列, 若产品代码相同, 则按金额从小 到大进行排列 ?? if((strcmp(sell[i].dm, sell[j].dm)>0)||(strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].je>sell[j].je ?? ??第二类习题 300个四位数问题: ?? 300个四位数问题(此类共10题) 本类10题中,五题产生数组B,并对B按一定要求排序; ?? 其余五题是求平均值。我把它们分成两组五题来讨论。 以下为产生数组B之题一: ?? 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数大于零的个数cnt, 再把所有满足此条件的四位数依次 存入数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。 最后main( )函数调用写函数writeDat()把数组b中的数输出到文 件OUT.DAT。 ?? 例如: 1239, 9-1-2-3>0, 则该数满足条件存入数组b中, 且个数cnt=cnt+1。 ?? 8129, 9-8-1-2<0, 则该数不满足条件忽略。 程序中已定义数组: a[300], b[300], 已定义变量: cnt ?? #include ?? int a[300], b[300], cnt=0 ; ?? jsvalue() ?? {/**/ ?? int i,j,g,s,b,q,t; ?? for(i=0; i < 300; i++) ?? {g=a[i]%10; /*个位的数字*/ ?? s=a[i]/10%10; /*十位的数字*/ ?? b=a[i]/100%10; /*百位的数字*/ ?? q=a[i]/1000; /*千位的数字*/ ?? if(g-q-b-s>0) ?? b[cnt++]=a[i]; ?? for(i=0; i < cnt-1; i++) ?? for(j=i+1; j < cnt; j++) ?? if(b[i] < b[j]) ?? { t=b[i]; b[i]=b[j]; b[j]=t; } ?? } ?? /**/ ?? } ?? 相似题 求出所有这些四位数是素数的个数cnt, 再把所有满足此 条件的四位数依次存入数组b中, 然后对数组b的四位数按从小到 大的顺序进行排序。 ?? jsvalue() ?? { int i,j,t; ?? for(i=0; i < 300; i++) ?? { for(j=2;j?? if(a[i]%j==0) break; ?? if(j==a[i]) ?? b[cnt++]=a[i]; ?? for(i=0; i < cnt-1; i++) /*排序*/ ?? for(j=i+1; j < cnt; j++) ?? if(b[i] < b[j]) ?? { t=b[i]; b[i]=b[j]; b[j]=t; } ?? } ?? 要求: 求出千位数上的数减百位数上的数减十位数上的数减个位 数上的数大于零的个数cnt, 再把所有满足此条件的四位数依次 存入数组b中, 然后对数组b的四位数按从小到大的顺序进行排序。 ?? if(q-b-s-g>0) ?? b[cnt++]=a[i]; ?? 要求: 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再把所有满足此条件的四位数依次存入 数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。 ?? if((q+b)==(s+g)) ?? b[cnt++]=a[i]; ?? ?? ??类型题三:300个数满足条件的求平均值 ?? ??求满足条件的数的个数、平均值及不满足条件的数的平均 值等,此类也是五题。本处仅给出一个全题,其余题只给出不同 之处。 ?? 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出千位数上的数减百位数上的数减十位数上的数减个位 数上的数大于零的个数cnt, 再求出所有满足此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。最后 main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到 OUT.DAT文件。 ?? 例如: 9123, 9-1-2-3>0, 则该数满足条件计算平均值pjz1, 且个数cnt=cnt+1。 9812, 9-8-1-2<0, 则该数不满足条件计算平均值pjz2。 程序中已定义数组: a[300], 已定义变量: cnt,pjz1,pjz2 ?? ?? int a[300], cnt=0 ; ?? double pjz1=0.0, pjz2=0.0 ; ?? jsvalue() ?? {/**/ ?? int i,g,s,b,q; ?? for(i=0; i < 300; i++) ?? {g=a[i]%10; /*个位的数字*/ ?? s=a[i]/10%10; /*十位的数字*/ ?? b=a[i]/100%10; /*百位的数字*/ ?? q=a[i]/1000; /*千位的数字*/ ?? if(g-q-b-s>0) ?? { cnt++; pjz1+=a[i]; } ?? else pjz2+=a[i]; ?? if(cnt) pjz1/=cnt; ?? if(cnt<300) pjz2/=300-cnt; ?? /**/ ?? } ?? 之二 要求: ?? 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。 ?? if((q+b)==(g+s)) ?? { cnt++; pjz1+=a[i]; } ?? else pjz2+=a[i]; ?? 之三 要求: ?? 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数小于零的个数cnt, 再求出所有满足此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。 ?? if(g-q-b-s<0) ?? { cnt++; pjz1+=a[i]; } ?? else pjz2+=a[i]; ?? 之四 要求: ?? 求出所有这些四位数是素数的个数cnt, 再求出所有满足 此条件的四位数平均z值pjz1, 以及所有不满足此条件的四位数平均值pjz2。 ?? jsvalue() ?? {/**/ ?? int i,j,t; ?? for(i=0; i < 300; i++) ?? { for(j=2;j?? if(a[i]%j==0) ?? {pjz2+=a[i]; ?? break;} ?? if(j==a[i]) ?? {cnt++; pjz1+=a[i];} ?? if(cnt) pjz1/=cnt; ?? if(cnt<300) pjz2/=300-cnt; ?? } ?? ?? 之五 要求: ?? 求出千位数上的数加个位数上的数等于百位数上的数加十 位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。 ?? if((q+g)==(b+s)) ?? { cnt++; pjz1+=a[i]; } ?? else pjz2+=a[i]; ?? code: ?? /* ??类型题四: 200个四位数题: ?? ?? 已知数据文件IN.DAT中存有200个四位数, 并已调用读函数 readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其 功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新 ?? 十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab>cd, ab必须是偶数且能被5整除, cd必须是奇数,同 时两个新数的十位数字均不为零,则将满足此条件的四位数按从 大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的 个数cnt。 程序中已定义数组: a[200], b[200], 已定义变量: cnt ?? #include ?? #define MAX 200 ?? int a[MAX], b[MAX], cnt = 0 ; ?? void jsVal() ?? {/**/ ?? int i,j,k,A,B,C,D; ?? for(i=0; i < MAX; i++) ?? { A=a[i]/1000; B=a[i]/10%10; C=a[i]%10; D=a[i]/100%10; ?? if(A&&C&&(B==0)&&(D%2)&&(10*A>10*C+D)) ?? b[cnt++]=a[i]; ?? } ?? for(i=0; i < cnt-1; i++) ?? { k=i; ?? for(j=i+1; j < cnt; j++) ?? if(b[k] < b[j]) k=j; ?? if(k!=i) {A=b[k]; b[k]=b[i]; b[i]=A;} ?? } ?? /**/ ?? } ??200个四位数题之其余九题说明 ?? 之二 要求: ?? 把千位数字和十位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的十位数字), 以及把个位数字和百位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的个位数字, 新十 位数的个位数字是原四位数的百位数字), 如果新组成的两个十 ?? 位数均是素数且新数的十位数字均不为零,则将满足此条件的四 位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的 四位数的个数cnt。 ?? ?? 要求: 把个位数字和千位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的个位数字,新十位数的个位数字是 原四位数的千位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一 个数能被17整除,同时两个新数的十位数字均不为零, 则将满足 此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足 ?? 上述条件的四位数的个数cnt。 ?? 之四 要求: ?? )把这些数存入数组a中,请考生编制一函数jsVal(),其 功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。 ?? 之五 要求: 如果四位数各位上的数字均是0或2或4或6或8, 则统计 出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存 入数组b中。 ?? 之六 要求: ?? 把千位数字和个位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的个位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 ?? 位数均是奇数并且两个十位数中至少有一个数能被5整除, 同时 两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。 ?? 之七 要求: ?? 把个位数字和千位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的个位数字,新十位数的个位数字是 原四位数的千位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 ?? 位数均是偶数并且两个十位数中至少有一个数能被9整除, 同时 两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。 ?? 之八 要求: ?? 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 ?? 个十位数ab 同时两个新数的十位数字均不为零,则将满足此条件的四位数按 从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数 的个数cnt。 ?? 之九 要求: ?? 如果四位数各位上的数字均是奇数,则统计出满足此条 件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。 ?? 之十 要求: ?? 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 ?? 个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数, 同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。 ?? ?? ?? 类型题五 ?? 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整 数, 函数ReadDat( )读取这若干个正整数并存入数组xx中。请编 制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个正整数totNum; 2. 求这些数右移1位后, 产生的新数是奇数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后main()函数调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。 ?? #define MAXNUM 200 ?? int xx[MAXNUM] ; ?? int totNum = 0 ; /* 文件IN.DAT中共有多少个正整数 */ ?? int totCnt = 0 ; /* 符合条件的正整数的个数 */ ?? double totPjz = 0.0 ; /*平均值 */ ?? void Calvalue(void) ?? {/**/ ?? for(; xx[totNum]; totNum++) ?? if((xx[totNum]>>1)%2) ?? { totCnt++; totPjz+=xx[totNum];} ?? if(totCnt) totPjz/=totCnt; ?? /**/ ?? } ?? ?? 类似题一、编制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个 正整数totNum; 2. 求这些数右移1位后, 产生的新数是偶数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平均值totPjz。 ?? void Calvalue(void) ?? {/**/ ?? for(; xx[totNum]>0; totNum++) ?? if((xx[totNum]>>1)%2==0) ?? { totCnt++; totPjz+=xx[totNum]; } ?? if(totCnt) totPjz/=totCnt; ?? /**/ ?? ??类型题六 ?? ?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharD( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行 ?? 重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把 结果xx输出到文件OUT2.DAT中。 例: 原文: dAe,BfC. ?? CCbbAA ?? 结果: fedCBA., ?? bbCCAA ?? char xx[50][80] ; ?? int maxline = 0 ; /* 文章的总行数 */ ?? void SortCharD(void) ?? {/**/ ?? int i,j,k,m,n; char ch; ?? for(i=0; i < maxline; i++) ?? { j=strlen(xx[i]); /*求出每行的字符个数*/ ?? for(m=0; m < j-1; m++) ?? { for(n=m+1; n < j; n++) ?? if(xx[i][m] < xx[i][n]) ?? { ch=xx[i][m]; xx[i][m]=xx[i][n]; xx[i][n]=ch; } ?? } ?? } ?? /**/ ?? } ?? 处理字符串类型题之二 ?? code: ?? /* 请编制函数ConvertCharA(), 其函数的功能是: 以行为单位 把字符串中的所有小写字母改写成该字母的下一 个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。 ?? void ConvertCharA(void) ?? {/**/ ?? int i,j; ?? for(i=0; i < maxline; i++) ?? for(j=0; j < strlen(xx[i]); j++) ?? if(xx[i][j]==#39;z#39;) xx[i][j]=#39;a#39;; /*如果是z的话,就变为a*/ ?? else if((xx[i][j]>=#39;a#39;)&&(xx[i][j]<#39;z#39;)) ?? xx[i][j]++;/*如果不是z的话就把字符向 ?? 后移动一个。*/ ?? /**/ ?? } ?? ?? 字符串类型题之三 ?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharA( ), 其函数的功能是: 以行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。 ?? void SortCharD(void) ?? {/**/ ?? int i,j,k,m,n; char ch; ?? for(i=0; i < maxline; i++) ?? { j=strlen(xx[i]); /*求出每行的字符个数*/ ?? for(m=0; m < j-1; m++) ?? { for(n=m+1; n < j; n++) ?? if(xx[i][m] > xx[i][n]) ?? { ch=xx[i][m]; xx[i][m]=xx[i][n]; xx[i][n]=ch; } ?? } ?? } ?? ??字符串处理之四 ?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数StrCharJL( ), 其函数的功能是: 以 行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后, 其字符的ASCII值小于等于32或大于100, 则原字符保持不变, 否则就把左移后的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新 ?? 存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果 xx输出到OUT7.DAT文件中。 ?? void StrCharJL(void) ?? {/**/ ?? int i,j; char m; ?? /****此题的关键是定义 char m ,如果定义为int c的话就会出现错误 ?? for(i=0; i < maxline; i++) ?? for(j=0; j < strlen(xx[i]); j++) ?? { m=xx[i][j]<<4; ?? if((m>32)&&(m<=100)) ?? xx[i][j]+=m; ?? } ?? } ?? 字符串处理之五 : ?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数StrCharJR( ), 其函数的功能是: 以行为单位把字符串中的所有字符的ASCII值右移4位, 然后把右移后 的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新存入字符串 数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文 件OUT8.DAT中。 ?? void StrCharJR(void) ?? {/**/ ?? int i,j; ?? for(i=0; i ?? for(j=0; j ?? xx[i][j]+=xx[i][j]>>4; ?? /**/ ?? } ??字符串处理之六: ?? ?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入 到字符串数组xx中; 请编制函数ConvertCharD(), 其函数的功能 是: 以行为单位把字符串中的所有小写字母改写成该字母的上一 个字母, 如果是字母a, 则改写成字母z,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。 ?? void ConvertCharD(void) ?? {/**/ ?? int i,j; ?? for(i=0; i < maxline; i++) ?? for(j=0; j < strlen(xx[i]); j++) ?? if(xx[i][j]==#39;a#39;) xx[i][j]=#39;z#39;; ?? else if(islower(xx[i][j])) xx[i][j]-=1; ?? /**/ ?? } 【计算机二级考试C++上机考试试题】相关文章: 9.计算机考试试题 10.二级建造师考试试题篇2:计算机二级考试《C语言》上机答题技巧
篇3:计算机二级考试试题C语言冲刺试题
篇4:计算机二级C语言考试试题及答案
篇5:计算机二级考试试题C语言冲刺试题
篇6:计算机二级VB上机考试解题技巧
篇7:省二级计算机考试试题
篇8:计算机等级考试三级(C语言)上机考试试题总结






文档为doc格式