C++试题Word下载.docx
《C++试题Word下载.docx》由会员分享,可在线阅读,更多相关《C++试题Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
i<
10;
i++,sum+=i);
22.当调用函数时,实参是一个数组名,则向函数传送的是________。
23.若由定义inta[10],*p则欲使p指向数组a,可采用__________和___________两种方法。
24.循环结构的算法其对应的语法表述有三种:
分别是____________、____________和____________语句。
25.break语句可以用在_________________和_________________中。
二.程序填空
1.10的阶乘之和
#include"
iostream.h"
_________________
voidmain()
{
doublesum=0,n;
for(n=1;
n<
=10;
n++)
__________________
cout<
"
Thesumis:
sum<
endl;
}
doublefactorial(doublem)
if(m<
=1)
return1;
else
return__________________;
}
2.求出100以内的所有素数:
_______________
intprime_number(intm);
intn;
for(n=3;
N;
if(_______________)cout<
"
;
intprime_number(intm)
inti,flag=1;
for(i=2;
m;
i++)
if(m%i==0)
{
_______________;
break;
}
returnflag;
3.冒泡法排序
#defineN10
voidchange(_______________)
intt;
t=m;
m=n;
n=t;
voidarrange(_______________)
inti,j;
for(j=1;
j<
number;
j++)
for(i=0;
number-j;
if(*(p+i)>
*(p+i+1))
_______________;
inta[N],i;
for(i=0;
cin>
>
a[i];
_______________;
cout<
a[i]<
4.输入字串,输出其中的字母:
stdio.h"
voidfind(char*str1,char*str2)
for(i=0,j=0;
*(str1+i)!
='
\0'
if(*(str1+i)>
*(str1+i)<
z'
||*(str1+i)>
A'
Z'
)
*(str2+j)=*(str1+i);
char*a,*b;
gets(a);
find(a,b);
puts(b);
5.输出一个点
#include"
classpoint
public:
point(intx,inty);
~point()
{
cout<
X<
"
Y<
}
private:
intX;
intY;
};
point:
:
point(intx,inty)
__________________;
pointp1(10,10);
6.求两个正整数的最大公约数
voidchange(__________________)
if(a>
b)
t=a;
a=b;
b=t;
intm,n,i,min_common_divisor;
cin>
m>
n;
change(m,n);
for(i=n;
i>
=1;
i--)
if__________________)
min_common_divisor=i;
__________________;
min_common_divisor<
7.计算两门功课的平均成绩
#include"
classstu
voidfun_put();
voidfun_sum();
staticfloatfun_out_sum(intn);
charname[10];
floatscore[2];
staticfloatsum[2];
floatstu:
sum[2]={__________________};
voidstu:
fun_put()
请输入该生姓名"
name;
请输入该生的两门功课的成绩"
score[0]>
score[1];
fun_sum()
sum[0]+=score[0];
sum[1]+=score[1];
fun_out_sum(intn)
return__________________;
stust[3];
inti;
floatscore_sum[2];
3;
st[i].fun_put();
__________________;
2;
score_sum[i]=stu:
score_sum[i]/3<
8.友元应用
classstudent
intNo;
char*Name;
student(intn,char*str);
~student();
__________________
voidf_age(intag,student__________________);
intage;
student:
student(intn,char*str)
No=n;
Name=str;
age=18;
~student()
学号"
No<
姓名"
Name<
年龄"
age<
voidf_age(intag,student__________________)
p.age=ag;
友元年龄"
p.age<
studentwang(5074401,"
wang"
);
f_age(30,wang);
9.求3个数的最大值
#include<
iostream.h>
floata,b,c,t;
_______________;
if(a<
b){t=a;
c){t=a;
a=c;
c=t;
”max=”<
________;
10.将10个数逆序存放
__________________
voidmain()
{inta[N],*p1,*p2;
for(p1=a;
p1<
a+N;
p1++)
cin<
*p;
p1=a;
p2=a+N-1;
for(;
p2;
_____________)
{t=*p1;
*p1=*p2;
*p2=t;
for(p1=a;
””<
endl
11.求最高分且指出学号
intscore;
voidput_number();
charm_number[20];
voidstudent:
get_number(charnumber[])
number[i]!
m_number[i]=number[i];
put_number()
m_number<
studentst[3];
inti,p;
char*number=_______________;
请输入第"
i+1<
个学生的学号和成绩:
st[i].get_number(number);
st[i].score;
for(i=0,p=0;
if(st[p].score<
=st[i].score)
最高成绩为"
st[p].put_number();
同学的:
st[p].score<
三、阅读程序写出运行结果
1.
#include<
classA
{public:
A(inth,intw):
he(h),we(w){}
~A(){cout<
he<
‘,’<
we}
inthe,we;
classB:
publicA
B(inth,intw,inth1,intw1,intl):
A(h,w),obj1(h1,w1){len=l;
}
~B(){cout<
len<
private:
Aobj1;
intlen;
Bobj(1,2,3,4,5);
2.#include"
voidfind(charstr1[],charstr2[])
str1[i]!
if(str1[i]>
str1[i]<
||str1[i]>
str1[i]<
str2[j]=str1[i];
j++;
str2[j]=’\0’;
a=newchar[];
b=newchar[];
输入字串如下:
aAtg234Hj\n
3.
main()
for(i=1;
=5;
=i;
printf("
%d*%d=%d"
i,j,i*j);
if(i==j)printf("
\n"
4.
#include<
stdio.h>
{
intc;
while((c=getchar())!
\n'
{
switch(c-'
2'
case0:
case1:
putchar(c+2);
case2:
putchar(c+4);
break;
case3:
putchar(c+3);
case4:
}
程序运行时,从第一列开始输入以下数据,<
CR>
代表一个回车符。
2345<
5.
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
break;
case1:
b++;
b++;
“a=”<
a<
“b=”<
b<
6.
voidm(intb[],intn);
inta[10]={0,1,3,2,56,100,32,4,7,10};
m(a,10);
=9;
%8d"
a[i]);
voidm(intb[],intn)
inti,j,p,t;
=n-1;
{
p=0;
=n-j;
if(b[i]>
b[p])
p=i;
t=b[p];
b[p]=b[n-j];
b[n-j]=t;
7.
voidswap(pa,pb)
int*pa,*pb;
int*t;
t=pa;
pa=pb;
pb=t;
inta,b,*p1=&
a,*p2=&
b;
a>
A=”<
“,B=“<
if(a<
swap(p1,p2);
当输入35<
回车>
输出结果是:
8.
{
intj,k;
for(k=1;
k<
=j;
k++)
printf(“%d*%d=%-5d”,j,k,j*k);
printf(“\n”);
9.
inta=23;
floatx=2.6;
charc=’a’;
printf(“%d,%f,%c\n”,a,x,c);
printf(“%4d%10.3f%d,&
c\n”,a,x,c,c);
10.
student(intn);
student(student&
p);
staticintNo;
studentp1(20);
studentp2(p1);
studentp3(p1);
intstudent:
No=1;
student(intn)
age=n;
student(student&
p)
age=(p.age)++;
No++<
四、分析以下程序并回答问题:
classAclassB:
{public:
voidf1();
voidf3();
inti;
protected:
protected:
intm;
voidf2();
intj;
intn;
};
intk;
classC:
publicBvoidmain()
{Aa1;
voidf4();
Bb1;
Cc1;
intp;
(1)在main函数中能否用b1.i,b1.j,b1.k引用类B对象b1中基类A的成员?
为什么?
(2)能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4成员函数?
为什么?
(3)类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3?
(4)如果把类B从类A的继承方式改为protected,回答问题
(1)。
五、编程
1.已知下列分段函数:
编写程序输入x的值,求y的值,并画出N-S流程图。
2.输入任意x,求y的值,画出N-S流程图。
3.求数列:
前20项的和,画出N-S流程图。
4.求
前20项的累加和。
5.有数列:
f1=1,
f2=1,
fn=fn-1+fn-2,求该数列第20项。
6.已知数列:
编一程序,求其前十项的和。
(画出流程图)
7.编写函数求n个数的最大值(n≥10),且指出其在整个数列中的位置。
8.统计一字串中字母、数字和其他字符的个数,并把字母存入另一个字串中。
9.编写一函数,将输入的n(n≥10)个整数中最小的数与第一个数对换,最大的数与最后一个数对换。
10.下面这个程序的功能是找出一个整型数组中元素的最大值。
程序给出了类的定义和主函数,请把它补充完整。
classArray_max//声明类
voidset_value();
//对数组元素设置值
voidmax_value();
//找出数组中的最大元素
voidshow_value();
//输出最大元素
intarray[10];
//整型数组
intmax;
//max用来存放最大值
voidmain()//主函数
{Array_maxarry;
arry.set_value();
arry.max_value();
arry.show_value();
11.编写一函数将字符串中的第m个字符开始的字母字符复制成另一个字符串,(主函数如下)。
string.h>
voidcopystr(m);
intm;
charstr1[80],str2[80];
printf("
Pleaseinputastring:
gets(str2);
Inputm:
scanf("
%d"
&
m);
if(strlen(str2)<
m)printf("
errorinput!
\n"
else
copystr(str1,str2,