欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 教学文档 > 试题>计算机二级考试C++上机考试试题

计算机二级考试C++上机考试试题

2022-07-06 08:32:54 收藏本文 下载本文

“爱哭的女孩”通过精心收集,向本站投稿了8篇计算机二级考试C++上机考试试题,下面小编给大家整理后的计算机二级考试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;”。

篇2:计算机二级考试《C语言》上机答题技巧

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.计算机二级考试技巧

篇3:计算机二级考试试题C语言冲刺试题

三、程序修改题

下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。

请改正程序中的错误,使它能得出正确的结果;

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

四、程序设计题

编写函数fun,其功能是:将a,b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。

例如,当a=45,b=12,调用该函数后c=4251。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序.

篇4:计算机二级C语言考试试题及答案

计算机二级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

篇5:计算机二级考试试题C语言冲刺试题

计算机二级考试试题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)

篇6:计算机二级VB上机考试解题技巧

常用算法

熟练地掌握算法原理、编程思想和代码实现,就能够做到举一反三,轻松备考,顺利过关。

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考试题

篇7:省二级计算机考试试题

省二级计算机考试试题

一、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.尽可能地利用文稿演示软件的各种优化演示文稿的设计,如插入声音与影片、幻灯片的切换方式、自定义动画、超级链接、动作按钮等的设计。

篇8:计算机等级考试三级(C语言)上机考试试题总结

第一种: 产品销售记录问题:

?? /* 已知在文件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++上机考试试题】相关文章:

1.计算机二级考试试题

2.计算机二级上机试题

3.计算机二级VB上机考试解题技巧

4.国家计算机二级考试试题

5.计算机二级考试试题及答案

6.全国计算机二级考试C++语言程序设计大纲

7.计算机二级考试《C语言》上机答题技巧

8.计算机二级考试答案

9.计算机考试试题

10.二级建造师考试试题

下载word文档
《计算机二级考试C++上机考试试题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部