C++试题6.docx
《C++试题6.docx》由会员分享,可在线阅读,更多相关《C++试题6.docx(8页珍藏版)》请在冰点文库上搜索。
C++试题6
一、填空题(10分,每空0.5分)
1.C++程序通常由若干个函数组成。
C++程序中至少要包含一个。
C++的函数由和两部分组成;C++中每个语句和数据说明必须以结束。
2.C++的常量数据类型可以分为__________、_________、_________、________。
3.C++中实现循环结构的循环语句有while、do…while、for三种语句。
while、for语句用于实现________循环结构。
do…while用于实现___________循环结构。
while、for语句用于先判断循环结束后执行循环体场合,而dowhile用于先执行循环体后判断循环结束的场合。
4.在函数的调用过程中,实参与形参间数据的“值传送”方式是指:
调用函数时,系统给形参分配___________,使形参与实参________的内存空间,形参值的改变不影响实参,实参保持原来的值不变。
5.变量的存储类型分为四种:
___________、静态类型、寄存器类型、___________。
6.定义一个整型指针变量pi,使pi指向整型变量i,指向整型一维数组a的首地址,指向整型二维数组b的首地址,写出对应C++语句:
,,
。
7.对链表的操作主要有、、等(写出三种操作)。
二、写出下列表达式的值(10分,每题2分)
1.设x=2.5,y=4.7,a=7,b=2,计算表达式(float)(a-b)/2+(int)x%(int)y+'\0'的值。
2.有变量说明inta=4,b=2,x=3,y=0;计算表达式!
a&&a>b||x>y的值。
3.设a=2,b=3,c=2;,计算a+=b*=(++b-c++)中a、b、c的值。
4.#defineX(a)a*a,计算表达式X(4+5)的值。
5.inta=1,&b=a,*p=&a,y;计算表达式y=(a+=b,b+=*p,*p+a)的值。
三、读程序(30分)
1.程序1(4分)
#include
voidmain(void)
{inti=0,j=0,k=0,m;
for(m=0;m<4;m++)
switch(m)
{case0:
i=m++;
case1:
j=m++;
case2:
k=m++;
case3:
m++;
}
cout<
}
运行结果:
2.程序2(4分)
#include
#include
voidmain(void)
{chara[]=”abcde”;
intn;
voidfun(chars[],intk);
n=strlen(a);
fun(a,n);
cout<}
voidfun(chars[],intk)
{intx,y;
charc;
x=0;
for(y=k-1;x{c=s[y];s[y]=s[x];s[x]=c;
x++;
}
}
运行结果:
3.程序3(6分)
#include
voidmain(void)
{
inta[5]={10,20,30,40,50};
int*p=&a[0];
p++;
cout<<*p<<’\t’;
p+=3;
cout<<*p<<’\t’;
cout<<*p--<<’\t’;
cout<<++*p<<’\t’;
}
运行结果:
4.程序4(8分)
#include
classSample
{
public:
Sample()
{
cout<<”构造函数:
”<}
};
voidfn(inti)
{staticSamplec;
cout<<”i=”<
}
voidmain()
{fn(10);
fn(20);
}
运行结果为:
。
5.程序5(8分)
#include
classSample
{
intx;
public:
Sample(){};
voidsetx(inti){x=i};
friendintfun(SampleB[],intn)
{intm=0;
for(inti=0;iif(B[i].x>m)m=B[i].x;
returnm;
}
};
voidmain()
{SampleA[10];
intArr[]={90,87,42,78,97,84,60,55,78,65}
for(inti=0;i<10;i++)
A[i].setx(Arr[i]);
cout<}
程序运行结果为:
。
四、程序填空(10分,每空1分)
1.输入某一年的年份和月份,计算该月的天数
#include
voidmain()
{intyear,month,day;
cout<<"Inputyearandmonth:
";
cin>>year>>month;
switch(__________)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
_________;break;
case4:
case6:
case9:
case11:
_________;break;
case2:
if(____________________________)
day=29;
else
day=28;
break;
_____________:
cout<<"Inputdataerror!
"<}
if(day!
=0)
cout<<"Thedayof"<}
2.将一维数组按升序排列。
voidsort(int*p,intn)
{inti,j,temp;
for(i=1;ifor(;;j++)
if(p[i]>p[j])
{temp=p[i];;;}
}
voidmain(void)
{inta1[6]={1,3,2,5,4,6},*pi,i;
;
sort(pi,6);
for(i=0;i<6;i++)cout<cout<}
五、编写程序(40分)
1.编写一个程序,将从键盘输入的两个字符串,将它们连接起来,要求利用指针实现。
(注:
不能使用strcat库函数)(10分)
2.定义描述职工工资信息结构体类型(salary),职工工资信息为工号(no)、姓名(name)、应发工资(deal)、税金(tax)与实发工资(fact)。
编写三个函数分别用于:
(1)输入全组职工的工号、姓名、应发工资、税金(函数名input())。
(2)计算每一个职工的实发工资,实发工资=应发工资-税金(函数名count())。
(3)输出全组职工的工号、姓名、应发工资、税金与实发工资(函数名output())。
在主函数中先定义职工工资结构体数组,然后调用上述三函数,分别完成输入、计算与输出工作。
(15分)
3.编写一个学生和教师数据输入和显示程序,学生数据要求有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。
要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类,学生数据中的班号和成绩的输入和显示在student类中实现,教师数据中的职称和部门的输入和显示在teacher类中实现。
最后在主函数中进行该类的测试。
(15分)
下面给出了基类person的主要成员:
(1) 私有成员:
● intno;编号
● charname[10];姓名
(2) 公有成员:
● voidinput();编号和姓名的输入
● voiddisplay();编号和姓名的显示