大学最新C++题库及答案.docx
《大学最新C++题库及答案.docx》由会员分享,可在线阅读,更多相关《大学最新C++题库及答案.docx(165页珍藏版)》请在冰豆网上搜索。
大学最新C++题库及答案
Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。
根据里氏强度地震的后果如下:
里氏强度后果
小于4很小
4.0到5.0窗户晃动
5.0到6.0墙倒塌;不结实的建筑物被破坏
6.0到7.0烟囱倒塌;普通建筑物被破坏
7.0到8.0地下管线破裂;结实的建筑物也被破坏
超过8.0地面波浪状起伏;大多数建筑物损毁
**输入格式要求:
实数,提示信息:
cout<<"请输入地震的里氏强度:
"<**输出格式要求:
"本次地震后果:
很小!
"
"本次地震后果:
窗户晃动!
"
"本次地震后果:
墙倒塌;不结实的建筑物被破坏!
"
"本次地震后果:
烟囱倒塌;普通建筑物被破坏!
"
"本次地震后果:
地下管线破裂;结实的建筑物也被破坏!
"
"本次地震后果:
地面波浪状起伏;大多数建筑物损毁!
"
#include
usingnamespacestd;
intmain()
{
doublemagnitude;
cout<<"请输入地震的里氏强度:
"< cin>>magnitude;
if(magnitude<4.0)
{
cout<<"本次地震后果:
很小!
"< }
elseif(magnitude<5.0)
{
cout<<"本次地震后果:
窗户晃动!
"< }
elseif(magnitude<6.0)
{
cout<<"本次地震后果:
墙倒塌;不结实的建筑物被破坏!
"< }
elseif(magnitude<7.0)
{
cout<<"本次地震后果:
烟囱倒塌;普通建筑物被破坏!
"< }
elseif(magnitude<8.0)
{
cout<<"本次地震后果:
地下管线破裂;结实的建筑物也被破坏!
"< }
else
{
cout<<"本次地震后果:
地面波浪状起伏;大多数建筑物损毁!
"< }
return0;
}
Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。
根据用户输入的数字显示相应的星期几。
如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。
**输入格式要求:
整数,提示信息:
cout<<"Pleaseinputasinglenumeral(1-7):
";
**输出格式要求:
"Monday"(星期几的英文单词首字母大写加换行)
提示信息:
"Invalid-pleaseinputasinglenumeral(1-7)."(加换行)
#include
usingnamespacestd;
intmain()
{
inta;
cout<<"Pleaseinputasinglenumeral(1-7):
";
cin>>a;
if(a<1||a>7)
{
cout<<"Invalid-pleaseinputasinglenumeral(1-7)."< }
switch(a)
{
case1:
cout<<"Sunday"< break;
case2:
cout<<"Monday"< break;
case3:
cout<<"Tuesday"< break;
case4:
cout<<"Wednesday"< break;
case5:
cout<<"Thursday"< break;
case6:
cout<<"Friday"< break;
case7:
cout<<"Saturday"< break;
}
return0;
}
Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:
“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。
你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。
请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。
**输入提示信息和数据格式:
无
**输出提示信息和数据格式:
cout<<"百万富翁给陌生人:
"<cout<<"陌生人给百万富翁:
"<#include
usingnamespacestd;
intmain()
{
intj;
doubletoStranger=0; /*富翁给陌生人的钱,以'元'为单位*/
doubletoRichman=0; /*陌生人给富翁的钱,以'元'为单位*/
doubleterm=0.01; /*富翁第一天给陌生人0.01元*/
for(j=1;j<=30;j++)
{
toRichman+=100000;/*陌生人每天给富翁10万元*/
toStranger+=term;
term=term*2; /*富翁每天给陌生人的钱是前一天的两倍*/
}
cout<<"百万富翁给陌生人:
"< cout<<"陌生人给百万富翁:
"< return0;
}
Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。
统计并输出实际累加的项数。
输出格式要求:
cout<<"sum="<cout<<"count="<
输出结果为:
sum=1071225
count=45
#include
usingnamespacestd;
intmain()
{
longi,sum=0;
for(i=1;;i++)
{
sum=sum+i*i*i;
if(sum>=1000000) break;
}
cout<<"sum="< cout<<"count="<
return0;
}
Q9.(10分)求多项式1!
+2!
+3!
+……+15!
的值。
输出格式要求:
cout<<"s="<
#include
usingnamespacestd;
intmain()
{
intn=1,s=0;
for(inti=1;i<=15;i++)
{
n=n*i;
s+=n;
}
cout<<"s="<
return0;
}
Q10.(10分)求1至200之间的所有质数,将质数和存入变量sum中并输出。
质数(素数)的说明:
“质数是只能被1和其本身整除的数”。
输入提示要求:
无
输出结果格式要求:
质数之间以一个空格隔开
输出所有质数后换行输出:
sum=4227
#include
#include
usingnamespacestd;
intmain()
{
intN,m,sum=0;
for(m=2;m<=200;m++)
{
inti,tmp=(int)sqrt(m);
for(i=2;i<=tmp;i++)
if(m%i==0)
break;
if(i>tmp)
{
cout< sum+=m;
}
}
cout< cout<<"sum="< return0;
}
Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。
正数的个数存入变量C1中,负数个数存入变量C2中.
输出格式要求:
cout<<"c1="<cout<<"c2="<#include
usingnamespacestd;
intmain()
{
inta[10]={1,-2,0,4,-5,0,7,8,-9,10};
intc1=0,c2=0;
inti;
for(i=0;i<10;i++)
if(a[i]>0)
c1++;
elseif(a[i]<0)
c2++;
cout<<"c1="< cout<<"c2="< return0;
}
Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。
输出格式要求:
cout<<"最大元素:
"<cout<<"最小元素:
"<#include
usingnamespacestd;
intmain()
{
inta[10]={32,43,65,23,432,543,543,54,542,87};
inti;
intmax,min;
max=a[0],min=a[0];
for(i=1;i<10;i++)
{
if(a[i]>max)max=a[i];
if(a[i] }
cout<<"最大元素:
"< cout<<"最小元素:
"< return0;
}
Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。
输出结果格式为:
sum=166650
#include
usingnamespacestd;
intmain()
{
inti=1,sum=0;
while(i<=100)
{
sum+=i*i;
i+=2;
}
cout<<"sum="< return0;
}
Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)
输出结果:
0
#include
#include
usingnamespacestd;
intmain()
{
intm,n,flag=1;
m=23437;
for(n=2;n<=m/2&&flag;n++)
if(m%n==0)flag=0;
cout< return0;
}
Q15.(10分)已知一个数m(=252),用循环求各位数字之和。
输出结果格式:
s=9
#include
usingnamespacestd;
intmain()
{
intm=252,a,b,c,s;
a=m/100;
b=m/10%10;
c=m%10;
s=a+b+c;
cout<<"s="<
return0;
}
Q16.(10分)已知一个数m(=252),用循环求各位数字之积。
输出结果格式:
f=20
#include
usingnamespacestd;
intmain()
{
intm,f=1,n;
m=252;
while(m!
=0)
{
n=m%10;
f*=n;
m=m/10;
}
cout<<"f="< return0;
}
Q17.(10分)已知10个四位数输出所有对称数及个数n。
例如1221,2332都是对称数。
设:
intm[10]={1221,2243,2332,1435,1236,5623,4321,4356,6754,3234};
输出结果:
1221
2332
#include
usingnamespacestd;
intmain()
{
inti,n=0,m[10]={1221,2243,2332,1435,1236,5623,4321,4356,6754,3234};
for(i=0;i<10;i++)
{
inta,b,c,d;
a=m[i]/1000;
b=m[i]%1000/100;
c=m[i]%100/10;
d=m[i]%10;
if(a==d&&c==b)
{
cout< n++;
}
}
return0;
}
Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。
输出结果格式:
n=225
#include
usingnamespacestd;
intmain()
{
intn=0,i=1;
while(n<200)
{
n=n+i;
i++;
i++;
}
cout<<"n="< return0;
}
Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。
输入格式要求:
cout<<"请输入三个整数:
";
输出格式要求:
cout<<"最大值是:
"<#include
usingnamespacestd;
intmain()
{
inta,b,c,t,max;
cout<<"请输入三个整数:
";
cin>>a>>b>>c;
if(a
{
t=a;
a=b;
b=t;
}
if(a {
t=a;
a=c;
c=t;
}
max=a;
cout<<"最大值是:
"< return0;
}
Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。
输入格式要求:
cout<<"请输入年份和月份:
";
输出格式要求:
cout<"<#include
usingnamespacestd;
intmain()
{
intyear,month,day;
cout<<"请输入年份和月份:
";
cin>>year>>month;
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;
break;
case4:
case6:
case9:
case11:
day=30;
break;
case2:
if(year%400==0||year%4==0&&year%100!
=0)
day=29;
else
day=28;
break;
}
cout<"< return0;
}
Q21.(10分)
编写程序,求解下面的分段函数:
输入格式要求:
cout << "请输入x:
";
输出格式要求:
cout << "y="<< y << endl;
#include
usingnamespacestd;
intmain()
{
doublex,y;
cout<<"请输入x:
";
cin>>x;
if(x>-10&&x<0)y=x-8;
if(x==0) y=x;
if(x>0&&x<10)y=x*x;
cout<<"y="< return0;
}
Q22.(10分)用“辗转相除方法”计算两个数x,y的最大公约数。
输入格式要求:
无,直接输入
输出格式要求:
无,直接输出结果
#include
usingnamespacestd;
intmain()
{
intx,y,n;
cin>>x>>y;
n=x%y;
while(n!
=0)
{
x=y;
y=n;
n=x%y;
}
cout< return0;
}
Q23.(10分)利用选择法将下面10个数按降序排列。
有如下定义:
intn[10]={5,6,4,2,3,7,8,5,6,7};
输入格式要求:
无
输出格式要求:
以逗号分隔降序数列
#include
usingnamespacestd;
intmain()
{
intn[10]={5,6,4,2,3,7,8,5,6,7},i,j,k,t;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(n[k] k=j;
t=n[i];
n[i]=n[k];
n[k]=t;
}
for(j=0;j<10;j++)
cout< return0;
}
Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。
输入格式要求:
无
输出格式要求:
cout<<"高于平均分的人数:
"<#include
usingnamespacestd;
intmain()
{
doublecj[20],aver,sum=0;
intn=0,k=0,i;
cin>>cj[0];
while(cj[n]>=0)
{
sum+=cj[n];