C++习题Word格式文档下载.docx
《C++习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++习题Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
#include<
voidmain()
{
intsum=0;
//sum变量为3的倍数的和
for(inti=1;
=100;
if(i%3==0)//判断i是否是3的倍数
sum+=i;
1到100中所有3的倍数的数的和为:
sum<
3.//用户输入一些整数,该程序分别计算出所有奇数和所有偶数之和,并输出它们。
intsum_odd=0;
//变量为所有奇数的和
intsum_even=0;
//变量为所有偶数的和
intb;
//变量为输入的数字
intN;
//变量为数字个数
输入数字的总的个数为"
;
cin>
>
N;
请输入数字(数字以空格隔开)"
for(inti=0;
cin>
b;
if(b%2==0)//判断数字是否为偶数
sum_even+=b;
else
sum_odd+=b;
所有奇数的和为"
sum_odd<
所有偶数的和为"
sum_even<
4.//输入4个字母,并反向显示这些字母。
chara[4];
//输入4个字符
请输入4个字符:
4;
a[i];
反向输出4个字符为:
for(i=3;
i>
=0;
i--)
cout<
5.//求1!
+2!
+…+50!
。
intsum1=1;
//记录i!
的结果
intsum2=0;
累加的结果
for(inti=1;
=50;
for(intj=1;
=i;
j++)//计算i!
sum1*=j;
sum2+=sum1;
1!
="
sum2<
6.//编写程序求一元二次方程ax*x+bx+c=0的解。
math.h>
floata,b,c;
//方程的系数
floats1,s2;
//解
floattemp;
Inputa,b,c:
a>
b>
c;
if(a==0)
不是一元二次方程!
}else
temp=b*b-4*a*c;
if(temp<
0)//无根的情况
cout<
无实根!
elseif(temp==0)//只有一个实根的情况
{
s1=-b/(2*a);
方程有一个实根,为"
s1<
}
else//两个实根的情况
s1=(-b+sqrt(temp))/(2*a);
s2=(-b-sqrt(temp))/(2*a);
方程有两个实根,为"
和"
s2<
7.//编写程序,由用户输入x值,计算函数值并输出y。
函数如书中所示:
intx,y;
InputX(int):
x;
if(x<
0)//x<
0的情况
y=x;
elseif(x>
10)//x>
10的情况
y=4*x*x*x-x*x;
else//其余的情况
y=x*x;
函数结果y为:
y<
8.//鸡兔同笼问题。
若鸡兔共有100只脚,利用循环计算鸡兔各几只。
intrabbit,chicken;
for(rabbit=100/4;
rabbit>
rabbit--)//兔子最多有25只,最少没有
chicken=(100-rabbit*4)/2;
兔子有"
rabbit<
只,鸡有"
chicken<
只"
9.//编写一个函数,计算直角坐标系中点a(x0,y0)到点b(x1,y1)的距离。
floatlength(floatx0,floaty0,floatx1,floaty1)//求两点距离的子函数
returnsqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));
floatx0,x1,y0,y1;
Inputxandyofapoint:
x0>
y0;
Inputxandyofbpoint:
x1>
y1;
Thelengthfromatobis"
length(x0,y0,x1,y1)<
10.//求a!
+b!
+c!
的值,其中求n!
要用一个函数实现,通过主函数输入a、b和c的值,并在主函数中输出计算的结果。
intfactorial(intn)//求n!
的子函数
intsum=1;
=n;
sum*=i;
returnsum;
inta,b,c;
a!
factorial(a)+factorial(b)+factorial(c)<
11.//编写一个函数。
该函数读入一个整数,并判断这个整数是否为一个回文数字。
例如4,44,434,4334,43534都是回文数字。
intnumber;
Inputthenumber:
number;
if(palindrome(number))
number<
isapalindrome."
else
isnotapalindrome."
boolpalindrome(intn)//判断n是否为回文的子函数
inta[20];
intm=n;
inti=0;
inttemp,num;
while(m>
0)//将数字的各位反向放置在数组a中
a[i]=m%10;
m=m/10;
i++;
temp=i/2;
//需要比较的次数
num=--i;
//数字的最高位存储在a[num]中
for(intj=0;
temp;
if(a[j]!
=a[num-j])returnfalse;
//如果出现不相等的情况立即退出
returntrue;
//若比较的各个位置都相等,则为回文
12.//编写一个程序,为选修3、4和5门课程的学生计算平均分,其中求平均分要用重载函数实现
floataverage(floata,floatb,floatc)//求三门课程平均分子函数
return(a+b+c)/3;
floataverage(floata,floatb,floatc,floatd)//求四门课程平均分子函数
return(a+b+c+d)/4;
floataverage(floata,floatb,floatc,floatd,floate)//求五门课程平均分子函数
return(a+b+c+d+e)/5;
floats1,s2,s3,s4,s5;
Thetotalofstudent'
scoursesis"
if(number==3)
Inputthreescoreofstudent:
s1>
s2>
s3;
Theaverageis"
average(s1,s2,s3)<
elseif(number==4)
Inputfourscoreofstudent:
s3>
s4;
average(s1,s2,s3,s4)<
s4>
s5;
average(s1,s2,s3,s4,s5)<
13.//编写一个函数。
该函数读入一个整数,然后将这个整数上每个位的数字按照相反的顺序输出。
voidreverse(intn)//反向显示整数n
//存储n的各位,最多20位
0)//提取n的各位
reversednumberis"
=i-1;
j++)//反向输出各位
a[j];
"
reverse(number);
14.//编写函数,完成指定二维数组(3*3)的转置,即行列对换。
iomanip.h>
inti,j,temp,row=0,colum=0;
inta[3][3];
输入一个3×
3的整型矩阵:
for(i=0;
=2;
i++)//从第0行~第2行
for(j=0;
j++)//从第0列~第2列
cin>
a[i][j];
//输入矩阵元素
temp=a[i][j];
//将a[i][j]与a[j][i]的值互换
a[i][j]=a[j][i];
a[j][i]=temp;
i++)
j++)
setw(8)<
15.//编写一个程序,要求当输入一个数字月份时,程序输出该月的英文名称。
例如输入5时,程序输出"
May"
,要求用指针数组实现。
string>
//定义指针数组
char*month[12]={"
January"
"
February"
March"
April"
June"
July"
August"
September"
October"
November"
December"
};
intn;
Inputthemonth(1-12):
n;
while((n>
12)||(n<
1))
Inputthemonth(1-12):
Themonthis"
*(month+n-1)<
16.//编写一个程序,要求分别输入5个学生的3科成绩,并输出平均成绩最高的学生的姓名及各科成绩。
要求用结构体数组实现。
structstudent
{charname[20];
//姓名
floatcourse1;
//第一科成绩
floatcourse2;
//第二科成绩
floatcourse3;
//第三科成绩
floataverage;
//平均成绩
structstudentstu[5];
floattemp=-100.0;
intj,k=0;
charc;
{
InputNO."
i+1<
student'
sname:
stu[i].name;
sthreescores:
stu[i].course1>
stu[i].course2>
stu[i].course3;
//输入三科成绩
stu[i].average=(stu[i].course1+stu[i].course2+stu[i].course3)/3;
//求平均成绩
stu[i].average)
temp=stu[i].average;
//temp存放最高平均分
k=i;
//k存放该同学的序号
Thestudentis"
stu[k].name<
threescoresare"
stu[k].course1<
"
stu[k].course2<
and"
stu[k].course3<
17.//编写一个函数,利用指针将一个字符串反向输出。
编写相应的主函数对其进行调用,在主函数中完成原始数据的输入和结果输出。
voidreverse(char*a,intn)//a为字符串首地址,n+1为字符串长度
chartemp;
for(intk=0;
((n+1)/2);
k++)//a[k]和a[n-k]交换数据
{temp=*(a+k);
*(a+k)=*(a+n-k);
*(a+n-k)=temp;
chara[100];
//最多输入100个字符
Inputthestring:
cin.getline(a,100);
a[i]!
=‘\0’;
)//求字符串的长度
reverse(a,i-1);
Thereversedstringis:
for(intj=0;
j++)/输出反向后的字符串
*(a+j);
18.//编写一个函数,统计并返回一行文字中所有字母、数字、空格及其他字符的个数,同时编写相应的主函数,在主函数中能接收用户输入的一行文本,然后调用上面定义的函数,并在主函数中输出各种字符的个数。
intnum[4]={0,0,0,0};
//分别存储数字、空格、字母和其它字符的个数
while(a[i]!
=‘\0’)//求字符串的长度
if((a[i]>
=48)&
(a[i]<
=57))//数字
num[0]+=1;
elseif(a[i]==32)//空格
num[1]+=1;
elseif(((a[i]>
=65)&
=90))||((a[i]>
=97)&
=122)))//大小写字母
num[2]+=1;
else//其它字符
num[3]+=1;
TheStatisticresultis:
//输出统计结果
number:
num[0]<
blank:
num[1]<
character:
num[2]<
other:
num[3]<