编程题复习要点知识分享Word文档下载推荐.docx

上传人:b****6 文档编号:17035310 上传时间:2022-11-28 格式:DOCX 页数:33 大小:30.24KB
下载 相关 举报
编程题复习要点知识分享Word文档下载推荐.docx_第1页
第1页 / 共33页
编程题复习要点知识分享Word文档下载推荐.docx_第2页
第2页 / 共33页
编程题复习要点知识分享Word文档下载推荐.docx_第3页
第3页 / 共33页
编程题复习要点知识分享Word文档下载推荐.docx_第4页
第4页 / 共33页
编程题复习要点知识分享Word文档下载推荐.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

编程题复习要点知识分享Word文档下载推荐.docx

《编程题复习要点知识分享Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《编程题复习要点知识分享Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。

编程题复习要点知识分享Word文档下载推荐.docx

for(intj=0;

j<

4;

j++)

t[i][j]=b[i][j];

  }

数据成员是一维字符数组,可以用字符串拷贝函数strcpy,将形参字符数组中的字符串,初始化字符数组成员。

#include<

iostream.h>

string.h>

chart[100];

A(charb[]){ strcpy(t,b);

 }

数据成员是字符类型指针变量,先用new动态申请长度为[形参指针指向的字符串长度+1]的内存空间,把返回的首地址赋给指针成员,再把形参指向字符串拷贝到动态数组中。

char*s;

A(char*b){

if(b){

s=newchar[strlen(b)+1];

strcpy(s,b);

⑥数据成员是数值类型指针变量,先用new动态申请长度为[形参数组长度]的内存空间,把返回的首地址初始化指针成员,再把形参数组元素循环赋给动态数组元素。

classA{int*s;

A(intb[10]){

s=newint[10];

for(i=0;

10;

s[i]=b[i];

}

 

编程的基本类型题分析:

一、学生成绩

2016春VC01

(1)排序算法

(2)四舍五入算法int(x+0.5)保留整数

int((x*10+0.5)/10.0保留小数点后一位

int((x*100+0.5)*100)/100.0保留小数点后两位

(3)友元函数的定义和调用

(4)字符串拷贝函数

【题目】试定义一个实现计算学生课程成绩的类STU,对学生学期总评成绩进行计算并排序。

具体要求如下:

(1)私有数据成员

intnorm,ex,final,overall:

分别表示平时成绩、实验成绩、期末考试和总评成绩。

charname[15]:

学生姓名。

(2)公有成员函数

voidinit(char*name1,intnor1,intex1,intfin1):

用参数name1,nor1,exp1,fin1分别初始化成员name,norm,ex,final。

voidfun():

计算学生的总评成绩。

计算方法为:

总评成绩=平时成绩占*20%+实验成绩占*25%+期末成绩占*55%。

总评成绩计算时要求四舍五入,并且期末考试成绩不足50分时,则期末考试成绩即为总评成绩。

friendvoidsort(STUst[],intn):

友元函数,对st按总评成绩进行从大到小排序。

voidprint():

输出该学生信息。

(3)在主函数中先定义一个有5个元素的对象数组,用循环语句输入学生信息,并根据这些信息利用成员函数init()更新学生信息,然后使用函数sort()对数组排序,最后输出排序后的学生信息。

输入/输出示例(下划线部分为键盘输入):

请输入姓名、平时成绩、实验成绩、期末成绩:

AAA827558

BBB936084

CCC678281

DDD547851

EEE915241

按总评成绩排序后:

姓名平时成绩实验成绩期末成绩总评成绩

BBB93608480

CCC67828178

AAA82755867

DDD54785158

EEE91524141

2016秋VC02编程题

四舍五入算法int(x+0.5)保留整数

【题目】假设二维数组的一行代表一名学生课程情况记录,前5列为考勤记录(出勤值为1,缺勤值0),第6~10列为作业得分记录(5分制),第11列为实验考核成绩,第12列为期末考试成绩。

学生课程总评成绩的计算式为(四舍五入保留整数):

平时成绩*20%+实验成绩*30%+期末考试成绩*50%,其中,平时成绩计算方法为:

出勤一次记10分,作业每得1分,平时成绩记2分。

例如,设有如下学生课程情况记录:

考勤1

考勤2

考勤3

考勤4

考勤5

作业1

作业2

作业3

作业4

作业5

实验

期末

总评

1

4

5

2

90

89

3

85

75

95

80

表中第一行学生的平时成绩计算为:

(1+1+1+1+0)*10+(4+4+5+2+4)*2=78,则其总评成绩计算为78*0.2+90*0.3+89*0.5=87.1,总评成绩四舍五入计为87分。

试定义一个类Array,根据上述要求计算学生的总评成绩。

(1)私有成员:

linta[3][13]:

学生课程情况记录数组。

(2)公有成员:

lArray(floatt[][13],intn):

构造函数,用参数t初始化成员数组a,参数n为t的行数。

lintsum(intk):

辅助函数,计算并返回成员数组a的第k行学生的平时成绩。

lvoidfun():

根据题意计算每个学生的总评成绩。

lvoidprint():

按示例格式输出每个学生的信息。

注意总评成绩结果要四舍五入。

(3)在主函数中给定原始数组(可利用题目中的样例数据,总评成绩暂定为0),并用该数组对类Array进行测试。

输出示例:

考勤:

1,1,1,1,0,

作业:

4,4,5,2,4,

平时成绩:

78实验:

90期末:

89总评:

87

1,0,1,1,1,

4,3,4,3,4,

76实验:

85期末:

75总评:

78

1,1,0,1,1,

3,4,5,2,4,

95期末:

80总评:

84

【要求】

打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。

1.答案

#include<

classSTU{

intnorm,ex,final,overall;

charname[15];

voidinit(char*name1,intnorm1,intex1,intfin1);

voidfun();

friendvoidsort(STUst[],intn);

voidprint();

voidSTU:

init(char*name1,intnorm1,intex1,intfin1){

strcpy(name,name1);

norm=norm1;

ex=ex1;

final=fin1;

overall=0;

fun(){

if(final>

=50)

overall=int(norm*0.2+ex*0.25+final*0.55+0.5);

elseoverall=int(final+0.5);

voidsort(STUst[],intn){

for(inti=0;

n-1;

for(intj=i+1;

if(st[i].overall<

st[j].overall){

STUt;

t=st[i];

st[i]=st[j];

st[j]=t;

}

print(){

cout<

<

name<

'

\t'

norm<

ex<

final<

overall<

endl;

STUs[3];

charname[100];

intnorm,ex,fin;

3;

i++){

"

cin>

>

name>

norm>

ex>

fin;

s[i].init(name,norm,ex,fin);

s[i].fun();

cout<

\n姓名平时成绩实验成绩期末成绩总评成绩"

sort(s,3);

s[i].print();

2.答案

iostream>

usingnamespacestd;

classArray{

inta[3][13];

Array(floatt[][13],intn);

intsum(intk);

Array:

Array(floatt[][13],intn){

13;

a[i][j]=t[i][j];

intArray:

sum(intk){

ints1=0,s2=0,s=0;

5;

s1+=a[k][i];

for(i=5;

s2+=a[k][i];

s=s1*10+s2*2;

returns;

voidArray:

a[i][12]=int(sum(i)*0.2+a[i][10]*0.3+a[i][11]*0.5+0.5);

i++){

考勤:

;

a[i][j]<

'

作业:

for(j=5;

平时成绩:

sum(i)<

实验成绩:

a[i][10]<

期末成绩:

a[i][11]<

总评成绩:

a[i][12]<

floatb[3][13]={{1,1,1,1,0,4,4,5,2,4,90,89},{1,0,1,1,1,4,3,4,3,4,85,75},{1,1,0,1,1,3,4,5,2,4,95,80}};

Arrayarr(b,3);

arr.fun();

arr.print();

二、二维数组问题

2016春VC02

1.素数算法,

2.从大到小排序算法

3.数据交换

【题目】试定义一个类Array,首先求各列元素中的合数(非素数)之和,再将数组各列以其合数之和的大小从大到小排序,具体要求如下:

(1)私有数据成员

inta[4][5]:

需要排序的二维数组。

Array(intt[][5],intn):

构造函数,用参数t初始化成员数组a,n表示数组t的行数。

intcomp(intn):

判断整数n是否为合数,如果是合数,返回值为1,否则返回值为0。

intsum_comp(intj):

求数组a第j列元素中所有合数之和。

voidexch(intj1,intj2):

交换数组a的第j1,j2列元素。

voidfun():

根据题意对二维数组进行列排序。

voidprint():

以矩阵的形式输出成员数组。

(3)在主函数中定义一个二维数组,并使用该数组对类Array进行测试。

输出示例:

原数组:

10125415

161781910

1112131415

1670181920

排序后的数组:

12151054

171016819

1215111314

7020161819

2015秋VC03

【题目】试定义一个类Array,将二维数组各行按其各行元素中所有素数之和从大到小排序,具体要求如下:

linta[5][4]:

待处理的数组。

lArray(intt[][4],intn):

构造函数,用参数t初始化成员数组a,n为数组t的行数。

lintprime(intn):

判断整数n是否为素数,如果是素数,返回值为1,否则返回值为0。

lintsum_prime(inti):

求数组a中第i行元素中所有素数之和。

lvoidexch(inti1,inti2):

交换数组a的第i1,i2行元素。

lvoidfun():

根据题意对二维数组进行行排序。

要求排序过程中交换数据时使用成员函数exch()。

lvoidprint():

原数组:

101254

1516178

19101112

13141516

70181920

排序后的数组:

2016秋VC04

1.从大到小排序算法

2.数据交换

【题目】试定义一个类Array,将二维数组各行按其各行元素中最大值的大小排序,具体要求如下:

需要排序的数组。

lintmax(int*p,intn):

求指针p所指向的一维数组中n个元素的最大值。

交换数组a的第i1,i2行。

lvoidfun():

提示:

利用成员函数max()计算每行的最大元素。

lvoidprint():

以矩阵的形式输出成员数组a。

2016秋VC05编程题

1.奇数与偶数

2.选择排序

【题目】试定义一个类Array,实现对二维数组进行按行排序的功能。

要求奇数行中的元素按升序排列,偶数行中的元素按降序排列(下标从0开始计数)。

linta[4][5]:

需要排序的数组。

lArray(intt[][5],intn):

lvoidsort(int*p,intn,intf):

辅助函数,对指针p所指向的数组排序。

其中,n为数组p中元素的个数;

当参数f的值为奇数时按升序排序,否则按降序排序。

根据题意多次调用sort()函数实现成员数组a的排序。

按矩阵形式输出成员数组。

(3)在主函数中给定原始数组,并用该数组对类Array进行测试。

要求输出处理前和处理后的数组。

13956

76757

25456

71545

处理后数组:

96531

56777

65542

14557

inta[4][5];

Array(intt[][5],intn);

intcomp(intn);

intsum_comp(intj);

voidexch(intj1,intj2);

Array(intt[][5],intn){

comp(intn){

for(inti=2;

if(n%i==0)break;

if(i==n)return0;

return1;

sum_comp(intj){

ints=0;

if(comp(a[i][j])==1)

s+=a[i][j];

returns;

exch(intj1,intj2){

for(inti=0;

i++){

intd;

d=a[i][j1];

a[i][j1]=a[i][j2];

a[i][j2]=d;

if(sum_comp(i)<

sum_comp(j))

exch(i,j);

print(){

inta[4][5]={10,12,5,4,15,6,17,8,19,10,11,12,13,14,15,16,70,18,19,20};

Arrayarr(a,4);

inta[5][4];

Array(intt[][4],intn);

intprime(intn);

intsum_prime(inti);

voidexch(inti1,inti2);

Array(intt[][4],intn){

prime(intn){

if(n%i==0)return0;

sum_prime(inti){

if(prime(a[i][j]))

s+=a[i][j];

exch(inti1,inti2){

{

intd=a[i1][j];

a[i1][j]=a[i2][j];

a[i2][j]=d;

fun(){

if(sum_prime(i)<

sum_prime(j))

exch(i,j);

voi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1