上机考试 西北工业大学上机考试 西北农林科技大学C++上机题答案

导读:爱华网网友为您分享以下“西北农林科技大学C++上机题答案”资讯,希望对您有所帮助,感谢您对aIhUaU.com的支持!

实习1:

标题:1、字符串输入输出

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:编写一个简单的控制台应用程序,先输入姓名,如“John”,再输出问候语,如“Hello,John!”。

输入:

John

输出:

Hello,John!

输入样例:

John

输出样例:

Hello,John!

提示:

使用string类定义字符串对象,需包含头文件<string>;

使用cin和提取符>>从键盘输入数据,使用cout和插入符<<输出结果到屏幕,需包含头文件<iostream>;

注意使用名称空间std。

----------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<string>

usingnamespacestd;

intmain()

{

stringname;

getline(cin,name);

cout<<"Hello,"<<name<<"!"<<endl;

return0;

}

----------------------------------------------------------------------------------------------------------------------

2.标题:2、求3个数的平均值

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:从键盘上输入3个浮点数,求这3个数的平均值。输入:

3个浮点数

输出:3个数的平均值

输入样例:

1.51.61.3

输出样例:

1.46667

提示:

用usingnamespacestd;明确名字空间

用cin对象,采用>>运算符输入数据

用cout对象,采用<<运算符输出数据

---------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<string>

usingnamespacestd;

intmain()

{

floatnum1=0,num2=0,num3=0;

cin>>num1>>num2>>num3;

cout<<(num1+num2+num3)/3<<endl;

return0;

}

---------------------------------------------------------------------------------------------------------------------

标题:3、求鞍点

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:

输入一个二维矩阵,找出其中所有鞍点。如果矩阵有鞍点,则输出鞍点的信息:行号、列号、值;

如果没有鞍点,则输出“Notfound!”。

所谓“鞍点”,是指满足以下条件的矩阵中的一个数:在它所在的行上最小、所在列上最大。该题中假设矩阵中任意两个数互不相等。输入:

输入数据有多行:

第一行是矩阵的行数m和列数n

从第二行起共包含m行,每行包含n个数,为矩阵的一行数据

输出:如果矩阵有鞍点,输出鞍点的信息,包括:所在行、所在列、值

如果没有鞍点,输出Notfound!

输入样例:

34

11235647

12456690

16773418

输出样例:

2016

提示:

要求用动态内存分配来完成,可用new和delete实现;

屏幕输出只有2016(加回车换行),不能有其它信息。

----------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<string>

usingnamespacestd;

intmain()

{

intm=0,n=0,cnt=0,i=0,j=0,k=0;

cin>>m>>n;

if(m<=0||n<=0)

{

return0;

}

int**arr=newint*[m];

for(i=0;i<m;i++)

{

arr[i]=newint[n];

}

for(i=0;i<m;i++)

for(j=0;j<n;j++)

cin>>arr[i][j];

int*Max=newint[n];

int*Min=newint[m];

for(k=0;k<m;k++)//该循环的功能是找出第k行的最小值并存储在Min[i]中

{//k控制行

Min[k]=arr[k][0];

for(i=0;i<n;i++)

{//i控制当前列

for(j=0;j<n;j++)

{//j用来和i对应的元素对比

if(arr[k][j]<Min[k])

Min[k]=arr[k][j];

}

}

}

for(k=0;k<n;k++)//该循环的功能是找出第k列的最大值并存储在Max[k]中

{

Max[k]=arr[0][k];

for(i=0;i<m;i++)

{

for(j=0;j<m;j++)

{

if(arr[j][k]>Max[k])

Max[k]=arr[j][k];

}

}

}

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

if(Min[i]==Max[j])

{

cout<<i<<""<<j<<""<<Min[i]<<endl;

cnt++;

}

}

}

if(cnt==0)

cout<<"Notfound!"<<endl;

for(i=0;i<m;i++)

delete[]arr[i];

delete[]arr;

delete[]Min;

delete[]Max;

return0;

}

----------------------------------------------------------------------------------------------------------------------

标题:4、链表操作

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:建立一个链表,每个节点包括学生的学号、姓名、性别、年龄。先输入5个学生的数据,再输入一个年龄,如果链表中有年龄等于此年龄的记录,则删除所有年龄等于此年龄的记录,否则在链表的最后增加一个新节点,学号为180姓名为"aaa",性别为"male"。。

输入:创建链表时输入5个职工的职工号和工资,学号为大于100且小于200的整数,姓名为长度小于20的字符串,性别为长度小于10的字符串,年龄为大于等于0且小于200的整数。

输出:按顺序输出链表中的所有数据,每个数据占一行。输入样例:

101zhangsanmale30

103lisifemale18

105wangwumale22

107maliumale21

109niuqifemale26

21

输出样例:

101

zhangsan

male

30

103

lisi

female

18

105

wangwu

male

25

109

niuqi

female

22

提示:要求用动态内存分配实现,注意new和delete的使用。----------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<string>

usingnamespacestd;

structstudent

{

intnum;

stringname;

stringgender;

intage;

structstudent*pNext;

};

voidinput(student*pP)

{

cin>>pP->num>>pP->name>>pP->gender>>pP->age;}

voidprint(student*pP)

{

cout<<pP->num<<endl;

cout<<pP->name<<endl;

cout<<pP->gender<<endl;

cout<<pP->age<<endl;

}

intmain()

{

intnew_age=0,count=0;

student*head,*newp,*p,*q,*cur,*newnode;head=newstudent;

newp=head;

head->pNext=NULL;

for(inti=0;i<5;i++)

{

p=newstudent;

input(p);

newp->pNext=p;

newp=newp->pNext;

}

newp->pNext=NULL;

p=head;

cin>>new_age;

while(p->pNext)

{

if(p->pNext->age==new_age)

{

count++;

q=p->pNext;

p->pNext=q->pNext;deleteq;}

else

p=p->pNext;}

if(count){

cur=head->pNext;

while(cur){

print(cur);

cur=cur->pNext;}

}

else

{

cur=head->pNext;while(cur->pNext){

cur=cur->pNext;}

newnode=newstudent;newnode->num=180;newnode->name="aaa";newnode->gender="male";newnode->age=new_age;cur->pNext=newnode;newnode->pNext=NULL;cur=head->pNext;while(cur)

{

print(cur);

cur=cur->pNext;}

}

cur=head;

while(cur->pNext){

q=cur;

cur=cur->pNext;deleteq;

}

cur=NULL;

return0;

}

----------------------------------------------------------------------------------------------------------------------

实习2:

标题:1.函数重载

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计一菜单程序,利用函数重载实现员工月工资的计算,计算方法如下:

(1)管理人员的月工资=月薪-缺勤天数×月薪÷22;

(2)销售人员的月工资=底薪+销售金额×提成比例;

(3)计件工人的月工资=产品件数×每件报酬;

(4)计时工人的月工资=工作小时×小时报酬;

输入:职工类别及相关信息。

职工类别:1表示管理人员;2表示销售人员;3表示计件工人;4表示计时工人;其余字符表示退出。

相关信息:若为管理人员,则输入月薪和缺勤天数;若为销售人员,则输入底薪、销售金额和提成比例;若为计件工人,则输入产品件数和每件报酬;若为计时工人,则输入工作小时和小时报酬。输出:员工月工资。

输入样例:1〈--职工类别

5000.01〈--月薪和缺勤天数

输出样例:4772.73

提示:计算管理人员、销售人员、计件工人、计时工人的月工资的函数原型可以分别设计如下:

doublegetEarning(doublesalary,intabsenceDays);

doublegetEarning(doublebaseSalary,doublesalesSum,doublerate);

doublegetEarning(intworkPieces,doublewagePerPiece);doublegetEarning(doublehours,doublewagePerHour);菜单程序设计如下:

intmain()

{

...

cout<<"Pleaseselect..."<<endl;

cout<<"1:Manager."<<endl;

cout<<"2:SalesMan."<<endl;

cout<<"3:PiecesWorker."<<endl;

cout<<"4:Hour-Worker."<<endl;

cout<<"Others:Quit"<<endl;

cin>>sel;

switch(sel)

{

case1:

cin>>...;

cout<<getEarning(...);break;

case2:

cin>>...;

cout<<getEarning(...);break;

case3:

cin>>...;

cout<<getEarning(...);break;

case4:

cin>>...;

上机考试 西北工业大学上机考试 西北农林科技大学C++上机题答案

cout<<getEarning(...);break;

default:

break;

}

return0;

}

---------------------------------------------------------------------

#include<iostream>

usingnamespacestd;

doublegetEarning(doublesalary,intabsenceDays)

{

returnsalary-absenceDays*salary/22;

}

doublegetEarning(doublebaseSalary,doublesalesSum,doublerate){

returnbaseSalary+salesSum*rate;

}

doublegetEarning(intworkPieces,doublewagePerPiece){

returnworkPieces*wagePerPiece;

}

doublegetEarning(doublehours,doublewagePerHour)

{

returnhours*wagePerHour;

}

intmain()

{

unsignedshortsel;

double

Salary,BaseSalary,SalesSum,Rate,WagePerPiece,Hours,WagePerHour;

unsignedshortAbsenceDays,WorkPieces;

cout<<"Pleaseselect..."<<endl;

cout<<"1:Manager."<<endl;

cout<<"2:SalesMan."<<endl;

cout<<"3:PiecesWorker."<<endl;

cout<<"4:Hour-Worker."<<endl;

cout<<"Others:Quit"<<endl;

cin>>sel;

switch(sel)

{

case1:

cin>>Salary>>AbsenceDays;

cout<<getEarning(Salary,AbsenceDays);

break;

case2:

cin>>BaseSalary>>SalesSum>>Rate;

cout<<getEarning(BaseSalary,SalesSum,Rate);

break;

case3:

cin>>WorkPieces>>WagePerPiece;

cout<<getEarning(WorkPieces,WagePerPiece);break;

case4:

cin>>Hours>>WagePerHour;

cout<<getEarning(Hours,WagePerHour);

break;

default:

break;

}

return0;

}

------------------------------------------------------------------------标题:2.引用传递

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计一个函数,将两个浮点数传入,然后通过引用把其和、差、积传出。

函数原型如下:voidMath(floata,floatb,float&sum,float&sub,float&pro);

输入:输入两个浮点数

输出:输出两个浮点数的和、差、积。

输入样例:6.52.3

输出样例:8.84.214.95

----------------------------------------------------------------------------------------------------------------------

#include<iostream>

usingnamespacestd;

voidMath(floata,floatb,float&sum,float&sub,float&pro)

{

sum=a+b;

sub=a-b;

pro=a*b;

}

intmain()

{

floatnum1,num2,Sum,Sub,Pro;

cin>>num1>>num2;

Math(num1,num2,Sum,Sub,Pro);

cout<<Sum<<""<<Sub<<""<<Pro<<endl;

return0;

}

---------------------------------------------------------------------------------------------------------------------

标题:3.函数模板

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计一个函数模板,实现两个同类型数据的交换。

将设计好的函数模板分别实例化为两个整型数交换、两个字符交

换的模板函数,调用这些函数并输出运行结果。

输入:分别输入两个整型数和两个字符

输出:分别输出两个整型数和两个字符交换的结果

输入样例:59

输出样例:95

----------------------------------------------------------------------------------------------------------------------

#include<iostream>

usingnamespacestd;

template<typenameT>//函数模板的声明,T为类型名

voidSwap(T&x,T&y)

{

Ttemp;

temp=x;

x=y;

y=temp;

}

intmain()

{

inta,b;

charch1,ch2;

cin>>a>>b;

Swap<int>(a,b);//相当于voidSwap(int&x,int&y)

cout<<a<<""<<b<<endl;

cin>>ch1>>ch2;

Swap<char>(ch1,ch2);//这个是模板的实例化,相当于voidSwap(char&x,char&y)

cout<<ch1<<""<<ch2<<endl;

return0;

}

----------------------------------------------------------------------------------------------------------------------

标题:4.默认形参值

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计一个求空间两点距离的函数,要求第2个点的默认值为坐标原点。

输入:两个点的坐标。

输出:输出第一个点与原点之间的距离及输入的两个点之间的距离。输入样例:111

555

输出样例:1.73205

6.9282

提示:函数原型可设计如下:

floatdistance(floatx1,floaty1,floatz1,floatx2=0,floaty2=0,floatz2=0);----------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<cmath>

usingnamespacestd;

floatdistance(floatx1,floaty1,floatz1,floatx2=0,floaty2=0,floatz2=0){

floatdx=x1-x2;

floatdy=y1-y2;

floatdz=z1-z2;

returnsqrt(dx*dx+dy*dy+dz*dz);

}

intmain()

{

float

x_start_pos,y_start_pos,z_start_pos,x_end_pos,y_end_pos,z_end_pos;cin>>x_start_pos>>y_start_pos>>z_start_pos>>x_end_pos>>y_end_pos>>z_end_pos;

cout<<distance(x_start_pos,y_start_pos,z_start_pos)<<endl;

cout<<distance(x_start_pos,y_start_pos,z_start_pos,x_end_pos,y_end_pos,z_end_pos)<<endl;

return0;

}

----------------------------------------------------------------------------------------------------------------------

实习3:

标题1:类的定义_静态常量

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计并实现一个圆柱类Cylinder,要求:

(1)设计两个double型的私有数据成员:高度height和底圆半径radius。

(2)设计一个double型的公有静态常量数据成员pi(其值初始化为

3.1415926),以及一个获取该常量的公有静态成员函数GetPI。

(3)在构造函数的初始化列表中初始化高度height和底圆半径radius。

(4)设计用于获取半径的成员函数GetRadius、获取高度的成员函数GetHeight、设置半径的成员函数SetRadius、设置高度的成员函数SetHeight。

(5)设计用于计算圆柱体积的成员函数Volume()、计算圆柱表面积的成员函数Area。

在main函数中:

根据输入的高度和半径构造圆柱对象,并输出圆柱的基本信息、体积和表面积。

输入:圆柱的高度和底圆半径

输出:圆周率pi、圆柱高度、底圆半径、圆柱的体积和表面积输入样例:2.01.0

输出样例:

area=18.8496

----------------------------------------------------------------------------------------------------------------------

#include<iostream>pi=3.14159,height=2,radius=1:volume=6.28319,

usingnamespacestd;

classCylinder

{

private:

doubleheight,radius;

staticdoublepi;

public:

Cylinder(double,double);

staticdoubleGetPI();

doubleGetRadius();

doubleGetHeight();

voidSetRadius(double);

voidSetHeight(double);

doubleVolume();

doubleArea();

~Cylinder();

};

Cylinder::Cylinder(doubleh,doubler):height(h),radius(r){

}

doubleCylinder::GetPI()

{

returnpi;

}

doubleCylinder::GetRadius()

{

returnthis->radius;

}

doubleCylinder::GetHeight()

{

returnthis->height;

}

voidCylinder::SetRadius(doubler){

this->radius=r;

}

voidCylinder::SetHeight(doubleh){

this->height=h;

}

doubleCylinder::Volume()

{

returnpi*radius*radius*height;

}

doubleCylinder::Area()

{

return2*pi*radius*radius+2*pi*radius*height;}

Cylinder::~Cylinder()

{

}

doubleCylinder::pi=3.1415926;

intmain()

{

doubleh=0,r=0;

cin>>h>>r;

if(h<=0||r<=0)return0;

Cylinderstick(h,r);

cout<<"pi="<<Cylinder::GetPI()<<",

"<<"height="<<stick.GetHeight()<<","

<<"radius="<<stick.GetRadius()<<":"<<"volume="<<stick.Volume()<<","

<<"area="<<stick.Area()<<endl;

return0;

}

----------------------------------------------------------------------------------------------------------------------

标题2:类的定义_深拷贝

时限:3000ms

内存限制:10000K

总时限:3000ms

描述:设计并实现一个动态整型数组类Vect,要求:

(1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。

(2)设计拷贝构造函数和析构函数,注意使用深拷贝。

(3)设计存取指定位置的数组元素的公有成员函数,并进行下标越界,若越界则输出“outofboundary”。

(4)设计获取数组元素个数的公有成员函数。

(5)设计用于输出数组元素的公有成员函数,元素之间以空格分隔,最后以换行符结束。

在main函数中按以下顺序操作:

(1)根据内置的静态整型数组{1,2,3,4,5}构造数组对象v1,根据输入的整型数构造数组对象v2。

(2)调用Vect的成员函数依次输出v1和v2的所有元素。

(3)输入指定的下标及对应的整型数,设置数组对象v1的指定元素。

(4)根据数组对象v1拷贝构造数组对象v3。

(5)调用Vect的成员函数依次输出v1和v3的所有元素。输入:用于构建数组对象v2的元素个数

用于设置数组对象v1的指定下标及元素值

输出:数组对象v1和v2的所有元素

数组对象v1和v3的所有元素

输入样例:10

66

输出样例:12345

0000000000

outofboundary

12345

12345

------------------------------------------------------------------------------------------------------------------

#include<iostream>

#include<cassert>

usingnamespacestd;

classVect

{

private:

intsize;

int*integer;

public:

Vect();

Vect(int);

Vect(Vect&p);

intGetElem(int);

voidSetElem(int,int);voiddisp();

~Vect();

};

Vect::Vect()

{

inti;

this->integer=newint[5];for(i=0;i<5;i++)this->integer[i]=i+1;this->size=5;

}

Vect::Vect(intsize){

inti;

assert(size>0);

this->integer=newint[size];for(i=0;i<size;i++)this->integer[i]=0;this->size=size;}

Vect::Vect(Vect&ref)

{

inti;

this->integer=newint[ref.size];

this->size=ref.size;

for(i=0;i<this->size;i++)

{

this->integer[i]=ref.integer[i];

}

}

intVect::GetElem(intnum)

{

returnthis->integer[num];

}

voidVect::SetElem(intnum,intSettingValue){

if(num<0||num>this->size-1)

{

cout<<"outofboundary"<<endl;}

else

this->integer[num]=SettingValue;

}

voidVect::disp()

{

inti=0;

for(;i<=this->size-1;i++){

if(i==size-1)

cout<<this->GetElem(size-1);else

cout<<this->GetElem(i)<<"";}

cout<<endl;

}

Vect::~Vect()

{

delete[]integer;

integer=NULL;

}

intmain()

{

Vectv1;

intzero_size,pos,value;

cin>>zero_size;

cin>>pos>>value;

v1.disp();

Vectv2(zero_size);

v2.disp();

v1.SetElem(pos,value);

Vectv3(v1);

v1.disp();

v3.disp();

return0;

}

----------------------------------------------------------------------------------------------------------------------

亲,一定要改变量名哦!


百度搜索“爱华网”,专业资料,生活学习,尽在爱华网  

爱华网本文地址 » http://www.aihuau.com/a/419651/723012536538.html

更多阅读

西北工业大学 西北工业大学研究生院

西北工业大学校徽西北工业大学(Northwestern Polytechnical University,英文简写:NPU)位于陕西省西安市,是我国唯一一所以发展航空、航天、航海工程教育和科学研究为特色,以工理为主,管、文、经、法统筹发展的研究型、多科性、开放式的科学

由陈显达想到岳飞 陈显达 西北工业大学

由陈显达想到岳飞南齐王朝的后半段,皇室多内乱,而每一次政权的更迭,都伴随着皇族兄弟子侄以及大臣的大批杀戮,杀的如此干脆,毫不留情,毫不手软,这难道是一种宿命吗?先是齐明帝萧鸾诛杀高、武子孙,接着又是东昏侯萧宝卷大肆诛杀宰臣,可谓血雨

汪劲松任西北工业大学校长,姜澄宇退休 姜澄宇无能校长

1月15日下午,西北工业大学在友谊校区西会议室隆重举行全校干部大会,中央组织部干部三局巡视员、副局长赵凡宣布中央、国务院关于西北工业大学校长变动的决定:汪劲松同志任西北工业大学校长(副部长级),姜澄宇同志因过任职年龄界限,不再担任

声明:《上机考试 西北工业大学上机考试 西北农林科技大学C++上机题答案》为网友深海夜未眠分享!如侵犯到您的合法权益请联系我们删除