春C++上机题答案Word格式.docx
《春C++上机题答案Word格式.docx》由会员分享,可在线阅读,更多相关《春C++上机题答案Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
if(x>
1)y=6*x+5;
y;
二、循环结构
1、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
***
*****
*******
*********
iomanip>
{inti,j,n;
n;
for(i=1;
i<
=n;
i++)
{cout<
setw(n-i+1);
for(j=1;
j<
=2*i-1;
j++)
cout<
"
*"
;
endl;
}
2、编程输出n行图形(n值通过键盘输入),
*****
****
**
*
for(i=n;
i>
=1;
i--)
=i;
三、函数循环
1、根据下面对函数的说明,编写其后的函数体。
(1)函数功能:
计算s=1/(1*3)+2/(3*5)+3/(5*7)....n/((2*n-1)*(2*n+1))前n项之和。
doublefun(intn)
{
//答题开始处。
在下面答题,此行不能有任何改动。
inti;
doubles=0;
for(i=1;
s+=1.0*i/((2*i-1)*(2*i+1));
returns;
//答题结束处。
在上面答题,此行不能有任何改动。
2、根据下面对函数的说明,编写其后的函数体。
(1)功能:
求1/2+3/4+5/6+7/8...前n项之和。
{
s+=1.0*(2*i-1)/(2*i);
四、函数数组
逆序存放一维数组元素。
(原1,3,2,4,5->
变为5,4,2,3,1)
voidfun(inta[],intn)
inti,t;
for(i=0;
n/2;
{t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
一个数组中存有n个整数,对这些整数进行升序排序,
inti,j,t;
n-1;
for(j=0;
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
五、模拟题(6套)
第1套模拟题
1、计算分段函数,输入x(整数),输出y(整数):
┌x+10(x<
11)
y=│x+11(x=11)
└x+12(x>
cin>
if(x<
11)y=x+10;
if(x==11)y=x+11;
11)y=x+12;
*****
\n"
return1;
3、根据下面对函数的说明,编写其后的函数体。
函数功能:
一个数组中存有n个整数,统计奇数个数并作为函数值返回。
intfun(inta[],intn)
inti,s=0;
if(a[i]%2)s+=1;
4、根据下面对函数的说明,编写其后的函数体。
计算nxn的二维数组首行和首列。
例如n=4
yyyy
x123
x456
x789
计算后:
15121518
2123
5456
8789
voidfun(int**a,intn)
inti,j,s;
{s=0;
s+=a[i][j];
a[i][0]=s/(n-1);
a[0][j]=s;
5、根据下面对函数的说明,在其后函数体中错误指引处改错。
求出满足3+5+7+……+n<
m时的最大n值。
intfun(intm)
//在下一行内错误发生处改错(本行与下一行之间不能加行)
intss=0,i;
for(i=3;
i+=2)
{
ss+=i;
if(ss>
=m)
returni-2;
6、根据下面对函数的说明,在其后函数体中填空指引处填空。
计算s=5/3+8/5+13/8+21/13+...前n项和。
doublesum=0;
inta,b,c;
//在下一行内下划线处填空(删除下划线,本行与下一行之间不能加行)
a=5;
b=3;
for(inti=1;
sum+=(double)a/b;
c=a+b;
b=a;
a=c;
returnsum;
7、根据下面对函数的说明,用给定内容编写(组合)其后的函数体。
计算s=1+2+3+...n。
intfun(intn)
inti=1,s=0;
loop:
{s+=i++;
if(i<
=n)
gotoloop;
第2套模拟题
计算分段函数,输入x(整数),输出y(整数):
┌x+14(x<
15)
y=│x+15(x=15)
└x+16(x>
15)y=x+14;
if(x==15)y=x+15;
15)y=x+16;
y<
'
*'
一个数组中存有n个整数,求出偶数之和并作为函数值返回。
if(a[i]%2==0)s+=a[i];
returns;
将二维数组转置。
例如n=3
123
456
789
转置后:
147
258
369
voidfun(int**a,intn)
for(j=0;
i;
t=a[i][j],a[i][j]=a[j][i],a[j][i]=t;
计算s=1/2-3/4+5/6-7/8...前n项和。
inti,t=1;
n+n;
s+=1.0*i/(i+1)*t;
t=-t;
计算s=1/(3*3)-1/(5*5)+1/(7*7)-...前n项和。
inti,j;
for(j=3,i=1;
i++,j+=2)
if(i%2)
sum+=1.0/(j*j);
else
sum-=1.0/(j*j);
inti,s;
s=0;
i++)
s+=i;
第3套模拟题
┌x+5(x<
6)
y=│x+6(x=6)
└x+7(x>
6)y=x+5;
if(x==6)y=x+6;
6)y=x+7;
setw(i);
一个数组中存有n个整数,求出下标值为偶数的元素之和并作为函数值返回。
if(i%2==0)s+=a[i];
求二维数组两条对角线上的元素之和。
和是:
25(1+5+9+3+7==25)
intfun(int**a,intn)
s+=a[i][i]+a[i][n-1-i];
if(n%2)s-=a[n/2][n/2];
s+=a[i][i]+a[i][n-1-i];
计算s=2!
+3!
+4!
…前n项和。
intfun(intn)//n>
=1
intp=1,s=0;
for(inti=2;
=n+1;
p*=i;
s+=p;
6、根据下面对函数的说明,用给定内容编写(组合)其后的函数体。
计算s=1!
+2!
+…前n项之和。
intfun(intn)
inti=2,s,p;
p=s=1;
while(i<
=n)
p*=i++,s+=p;
第4套模拟题
*********
*
{cout<
=2*(n-i+1)-1;
计算nxn的二维数组最后行和最后列。
123x
456x
789x
yyyy
1232
4565
7898
12151815
{s=0;
s+=a[i][j];
a[i][n-1]=s/(n-1);
for(i=0;
a[n-1][j]=s;
计算s=1-1/(2*2)+1/(3*3)-…,直到加上(减去)的项1/(n*n)
刚好小于所要求的精度值(jingdu)为止。
doublefun(doublejingdu)
doubles=0,p;
inti=1,t=1;
do
{
p=1.0/(i*i);
s+=p*t;
i++;
}while(p>
=jingdu);
求出满足3+5+7……+n>
m时的最小n值。
intss=0;
for(inti=3;
m)
returni;
求n!
。
inti=2,p=1;
p*=i++;
returnp;
第5套模拟题
if(x==11)y=x+11;
****
***
**
{for(j=1;
=n-i+1;
if(a[i]%2==0)s+=a[i];
求二维数组靠边元素之和。
例如m=3n=3
40(1+2+3+6+9+8+7+4==40)
intfun(int**a,intm,intn)
inti,j,s=0;
s+=a[