C++大学编程题及答案Word格式.docx
《C++大学编程题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++大学编程题及答案Word格式.docx(202页珍藏版)》请在冰豆网上搜索。
return0;
}
/*输入5个百分制成绩,求出总成绩及平均成绩*/
floata,b,c,d,e,sum,ave;
输入5个百分制成绩:
a>
b>
c>
d>
e;
sum=a+b+c+d+e;
ave=sum/5.0f;
总成绩为:
sum<
平均成绩为:
ave<
/*编写程序,输入一个三位正整数,输出各位数字组成的最大值。
例如:
输入“123”,输出“321”。
*/
inta,b,c,max,mid,min,x;
输入一个三位正整数:
a=int(x/100);
b=int((x-a*100)/10);
c=int(x-a*100-b*10);
//分别得出该三位数的每一位上的值,并分别赋给a,b,c
max=a;
if(b>
a)max=b;
if(max<
c)max=c;
//求出三个数的最大值
mid=b;
if(a<
b&
c<
a)mid=a;
c&
b)mid=c;
//求出三个数的中间值
min=a;
if(a>
b)min=b;
if(c<
min)min=c;
//求出三个数的最小值
转换后的形式为:
max<
mid<
min<
/*输入若干个百分制成绩,求出总成绩及平均成绩。
提示:
由于成绩值不可能小于0,因此可将负值作为输入结束的标志*/
floatsum=0,ave,g;
intn;
请输入n个百分制成绩并以一个负数结束输入"
for(n=1;
n=n++)
{
cin>
g;
if(g<
0)break;
//break语句结束循环
sum+=g;
}
ave=sum/n;
endl
<
平均成绩为"
floatsum=0,ave,a,n=1;
输入n个百分制成绩,并以一个负数结束输入"
loop:
a;
0)
{
sum=a+sum;
ave=sum/n/1.0;
n=n++;
gotoloop;
//goto和if组成循环
}
/*输入若干个百分制成绩,输出对应的五分制成绩,输入结束后再分别输出这五个分段的人数。
五分制成绩用字母A、B、C、D和E分别表示百分制成绩的100~90、89~80、79~70、69~60、59~0*/
floatx;
inta=0,b=0,c=0,d=0,e=0;
请输入n个百分制成绩:
for(;
)
if(x<
if(90<
=100)
{cout<
分对应的等级是:
A"
a+=1;
if(80<
90)
B"
b+=1;
if(70<
80)
C"
c+=1;
if(60<
70)
D"
d+=1;
if(0<
60)
E"
e+=1;
等级为A的人数为:
a<
<
等级为B的人数为:
b<
等级为C的人数为:
c<
等级为D的人数为:
d<
等级为E的人数为:
e<
/*设计一个程序,输出所有的水仙花数。
所谓水仙花数是一个三位数
其各位数字的立方和等于该数本身。
153=1^3+5^3+3^3*/
cmath>
inta,b,c,d;
for(a=100;
=999;
a++)
b=int(a/100);
c=int((a-b*100)/10);
d=int(a-b*100-c*10);
//分别得出三位数三个位上的数
if(a==pow(b,3)+pow(c,3)+pow(d,3))
cout<
为水仙花数"
return0;
/*编写程序,计算100到200之内所有素数的和*/
{
intx,i,sum=0;
for(x=100;
=200;
x++)
for(i=2;
i<
=sqrt(x);
i++)
{if(x%i==0)break;
if(i>
sqrt(x))sum+=x;
100到200以内的素数之和为:
/*编写程序,求出100到200之间的素数,并按每行5个输出。
iomanip>
intx,i;
sqrt(x))cout<
setw(16)<
left<
/*编写程序,按以下公式求出数列的前20项并输出
y=0(n=0)
y=1(n=1)
y=y(n-1)+y(n-2)(n>
=2)*/
intn=1,a,b;
0<
endl<
1<
a=0,b=1;
while(n<
=9)//因为一次性输出“cout<
endl”有两项,所以只要执行9次循环。
a=a+b;
b=a+b;
n+=1;
cout<
/*输入一个整数,输出该整数的所有素数因子。
输入“12”,输出为“2,2,3”*/
intn,c=2;
请输入一个整数:
n;
结果是:
while(n>
c)
if(n%c==0)
{
"
n=n/c;
}
else
{c++;
/*自守数是平方后尾数等于该数自身的自然数。
25*25=62576*76=5776任意输入一个自然数(设不超过3位),判断其是否为自守数并输出,如:
25YES25*25=62511NO11*11=121*/
intx,a,b,c;
输入一个自然数(不超过3位):
if(x<
4)
if(x*x==x)cout<
"
Yes"
*"
="
x*x;
elsecout<
No"
elseif(4<
10)
a=x*x;
if((a-a/10*10)==x)cout<
elseif(10<
32)
b=a-a/100*100;
if(b==x)cout<
elseif(32<
99)
b=(a-a/1000*1000);
c=b-b/100*100;
if(c==x)cout<
/*设计一个程序,求出满足以下条件的最小的n值和s值:
s=1+1/2+1/3+1/4+……+1/n,且s>
=30*/
longdoubles=1;
longintn=2;
while(s<
30)
s=s+(1.0/n);
n++;
s<
最小的n值为:
n<
s的值为:
/*试编写一个加密程序,加密方法是将明文的字母变成其后的第4个字母,字母表首尾相连。
例如,输入明文“China”,输出密文“Glmre”。
非字母符不加密,当输入字符“#”时,程序运行结束。
*/
charc;
请输入需要加密的文字:
for(cin.get(c);
c!
='
#'
cin.get(c))
if(65<
=c&
87)
char(int(c+4));
if(87<
=90)
char(int(c+4-90+64));
if(97<
119)
if(119<
=122)
char(int(c+4-122+96));
65||c>
122)
c;
/*用一下公式求e的近似值(n取10)。
e=1+1/1!
+1/2!
+1/3!
+……+1/n!
*/
doublee=1,s=1;
intn=1;
do
s*=n;
e+=1/s;
11);
e的近似值为:
/*用一下公式求e的近似值(直到最后一项的绝对值小于10^-8为止)。
setprecision(8)<
while(fabs(1/s)>
1e-8);
/*输入一个实数x,用下式求e^x的近似值,知道最后一项的绝对值小于1e-8为止*/
doublee=1,s=1,x,n=1;
输入一个实数x:
do{
e+=(pow(x,n))/s;
while(fabs((pow(x,n))/s)>
e^x的近似值为:
/*求出1~599中能被3整出,且至少有一位数字为5的所有整数。
例如15、51、513均是满足条件的整数*/
intb,s,g,n;
//b表示百位,s表示十位,g表示个位
600;
n++)
if(10<
=n&
=99)
for(n=10;
s=n/10;
g=n-s*10;
if(n%3==0&
(s==5||g==5))
cout<
if(100<
=599)
for(n=100;
b=n/100;
s=n-n/100*100;
g=n-b*100-s*10;
(b==5||s==5||g==5))
/*由于3^2+4^2=5^2,所以称3,4,5为勾股数。
试编程求出100以内的所有勾股数。
inta,b,c;
for(a=1;
=100;
for(b=1;
b++)
for(c=1;
c++)
{
if(c*c==a*a+b*b)
为勾股数!
}
/*求满足以下条件的三位数n:
它除以11(整数相除)所得的商等于n的各位数字的平方和,且其中至少有
两位数字相同。
131除以11的商为11,各位数字的平方和为11,所以它是满足条件的三位数。
intn,b,s,g,a;
for(n=100;
1000;
b=n/100;
s=(n-b*100)/10;
g=n-b*100-s*10;
a=n/11;
if(b==s||b==g||s==g)
if(s*s+b*b+g*g==a)
满足条件"
/*用牛顿迭代法求一元方程2x^3-4x^2+3x-6=0在x=1.5附近的根,要求精度为1e-8。
floatx,y;
for(x=1.5;
)
y=x;
x=x-(2*pow(x,3)-4*pow(x,2)+3*x-6)/(6*x*x-8*x+3);
if(fabs(y-x)<
1e-8)break;
2x^3-4x^2+3x-6=0在x=1.5附近的根为:
/*在1000以内验证哥德巴赫猜想*/
intprime(inti)
for(intj=2;
j<
=sqrt(i);
j++)
{if(i%j==0)break;
if(j>
sqrt(i))returni;
intn,k,h;
请输入一个大于2的偶数(小于1000):
for(k=2;
k<
=1000;
k++)
for(h=2;
h<
h++)
if(prime(k)+prime(h)==n)
+"
n-k<
/*用二分法求方程x^3-6x-1=0在x=2附近的一个实根,要求迭代精度为1e-8*/
longdoubley1,y2,x0,x1=1,x2=3;
while(fabs(y1)>
=1e-8||fabs(y2)>
=1e-8)
y1=pow(x1,3)-6*x1-1;
y2=pow(x2,3)-6*x2-1;
x0=(x1+x2)/2;
if(y1*y2<
x1=x0;
if(y1*y2>
=0)
x1=x1*2-x2;
x2=x0;
y1"
y1<
y2"
y2<
//直观显示出y1和y2的变化
方程x^3-6x-1=0在x=2附近的一个实根:
x0<
/*计算体重指数并得出相应的评语*/
#include<
math.h>
intmain(void)
floats,t,x;
请输入您的体重(Kg)和身高(m):
t>
s;
if(s<
5||t<
0.5)
cout<
输入的数据无效!
\n"
return1;
x=t/(pow(s,2));
18.5)cout<
不好意思,您有点营养不良!
elseif(18.5<
=x&
=23)cout<
perfect!
完美身材"
唉!
您超重了!
/*编写一个程序,从标准输入读入某职员的工作时间(以小时计)和每小时的工资
数,计算并输出他的:
工资。
若职员月工作时间超过40小时,则超过部分按原工资的1.5倍来
计算。
inthour;
floatreward,pay;
输入工作时间(以小时计):
hour;
输入每小时的工资:
reward;
if(hour<
=40)pay=hour*reward;
elseif(hour>
40)pay=4