C++习题.docx

上传人:b****1 文档编号:1272894 上传时间:2023-04-30 格式:DOCX 页数:16 大小:18.64KB
下载 相关 举报
C++习题.docx_第1页
第1页 / 共16页
C++习题.docx_第2页
第2页 / 共16页
C++习题.docx_第3页
第3页 / 共16页
C++习题.docx_第4页
第4页 / 共16页
C++习题.docx_第5页
第5页 / 共16页
C++习题.docx_第6页
第6页 / 共16页
C++习题.docx_第7页
第7页 / 共16页
C++习题.docx_第8页
第8页 / 共16页
C++习题.docx_第9页
第9页 / 共16页
C++习题.docx_第10页
第10页 / 共16页
C++习题.docx_第11页
第11页 / 共16页
C++习题.docx_第12页
第12页 / 共16页
C++习题.docx_第13页
第13页 / 共16页
C++习题.docx_第14页
第14页 / 共16页
C++习题.docx_第15页
第15页 / 共16页
C++习题.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++习题.docx

《C++习题.docx》由会员分享,可在线阅读,更多相关《C++习题.docx(16页珍藏版)》请在冰点文库上搜索。

C++习题.docx

C++习题

•1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

#include

main()

{

inti,j,k,m=0,n=0;

for(i=1;i<5;i++)

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{if((i!

=k)&&(i!

=j)&&(j!

=k))

{

m++;

cout<

}

else

n++;

}

cout<<"m="<

}

2.//编写程序,计算1到100中所有3的倍数的数的和。

#include

voidmain()

{

intsum=0;//sum变量为3的倍数的和

for(inti=1;i<=100;i++)

{

if(i%3==0)//判断i是否是3的倍数

sum+=i;

}

cout<<"1到100中所有3的倍数的数的和为:

"<

}

3.//用户输入一些整数,该程序分别计算出所有奇数和所有偶数之和,并输出它们。

#include

voidmain()

{

intsum_odd=0;//变量为所有奇数的和

intsum_even=0;//变量为所有偶数的和

intb;//变量为输入的数字

intN;//变量为数字个数

cout<<"输入数字的总的个数为";

cin>>N;

cout<<"请输入数字(数字以空格隔开)"<

for(inti=0;i

{

cin>>b;

if(b%2==0)//判断数字是否为偶数

sum_even+=b;

else

sum_odd+=b;

}

cout<<"所有奇数的和为"<

cout<<"所有偶数的和为"<

}

4.//输入4个字母,并反向显示这些字母。

#include

voidmain()

{

chara[4];//输入4个字符

cout<<"请输入4个字符:

"<

for(inti=0;i<4;i++)

cin>>a[i];

cout<<"反向输出4个字符为:

"<

for(i=3;i>=0;i--)

cout<

cout<

}

5.//求1!

+2!

+…+50!

#include

voidmain()

{

intsum1=1;//记录i!

的结果

intsum2=0;//记录i!

累加的结果

for(inti=1;i<=50;i++)

{

for(intj=1;j<=i;j++)//计算i!

sum1*=j;

sum2+=sum1;

}

cout<<"1!

+2!

+…+50!

="<

}

6.//编写程序求一元二次方程ax*x+bx+c=0的解。

#include

#include

voidmain()

{

floata,b,c;//方程的系数

floats1,s2;//解

floattemp;

cout<<"Inputa,b,c:

"<

cin>>a>>b>>c;

if(a==0)

{

cout<<"不是一元二次方程!

"<

}else

{

temp=b*b-4*a*c;

if(temp<0)//无根的情况

cout<<"无实根!

"<

elseif(temp==0)//只有一个实根的情况

{

s1=-b/(2*a);

cout<<"方程有一个实根,为"<

}

else//两个实根的情况

{

s1=(-b+sqrt(temp))/(2*a);

s2=(-b-sqrt(temp))/(2*a);

cout<<"方程有两个实根,为"<

}

}

}

7.//编写程序,由用户输入x值,计算函数值并输出y。

函数如书中所示:

#include

voidmain()

{

intx,y;

cout<<"InputX(int):

";

cin>>x;

if(x<0)//x<0的情况

y=x;

elseif(x>10)//x>10的情况

y=4*x*x*x-x*x;

else//其余的情况

y=x*x;

cout<<"函数结果y为:

"<

}

8.//鸡兔同笼问题。

若鸡兔共有100只脚,利用循环计算鸡兔各几只。

#include

voidmain()

{

intrabbit,chicken;

for(rabbit=100/4;rabbit>=0;rabbit--)//兔子最多有25只,最少没有

{

chicken=(100-rabbit*4)/2;

cout<<"兔子有"<

}

}

9.//编写一个函数,计算直角坐标系中点a(x0,y0)到点b(x1,y1)的距离。

#include

#include

floatlength(floatx0,floaty0,floatx1,floaty1)//求两点距离的子函数

{

returnsqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));

}

voidmain()

{

floatx0,x1,y0,y1;

cout<<"Inputxandyofapoint:

";

cin>>x0>>y0;

cout<<"Inputxandyofbpoint:

";

cin>>x1>>y1;

cout<<"Thelengthfromatobis"<

}

10.//求a!

+b!

+c!

的值,其中求n!

要用一个函数实现,通过主函数输入a、b和c的值,并在主函数中输出计算的结果。

#include

intfactorial(intn)//求n!

的子函数

{

intsum=1;

for(inti=1;i<=n;i++)

sum*=i;

returnsum;

}

voidmain()

{

inta,b,c;

cout<<"Inputa,b,c:

";

cin>>a>>b>>c;

cout<<"a!

+b!

+c!

="<

}

11.//编写一个函数。

该函数读入一个整数,并判断这个整数是否为一个回文数字。

例如4,44,434,4334,43534都是回文数字。

#include

voidmain()

{

intnumber;

cout<<"Inputthenumber:

";

cin>>number;

if(palindrome(number))

cout<

else

cout<

}

#include

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;j

{

if(a[j]!

=a[num-j])returnfalse;//如果出现不相等的情况立即退出

}

returntrue;//若比较的各个位置都相等,则为回文

}

12.//编写一个程序,为选修3、4和5门课程的学生计算平均分,其中求平均分要用重载函数实现

#include

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;

}

voidmain()

{

intnumber;

floats1,s2,s3,s4,s5;

cout<<"Thetotalofstudent'scoursesis";

cin>>number;

if(number==3)

{

cout<<"Inputthreescoreofstudent:

";

cin>>s1>>s2>>s3;

cout<<"Theaverageis"<

}

elseif(number==4)

{

cout<<"Inputfourscoreofstudent:

";

cin>>s1>>s2>>s3>>s4;

cout<<"Theaverageis"<

}

else

{

cout<<"Inputthreescoreofstudent:

";

cin>>s1>>s2>>s3>>s4>>s5;

cout<<"Theaverageis"<

}

}

13.//编写一个函数。

该函数读入一个整数,然后将这个整数上每个位的数字按照相反的顺序输出。

#include

voidreverse(intn)//反向显示整数n

{

inta[20];//存储n的各位,最多20位

intm=n;

inti=0;

while(m>0)//提取n的各位

{

a[i]=m%10;

m=m/10;

i++;}

cout<<"reversednumberis";

for(intj=0;j<=i-1;j++)//反向输出各位

cout<

cout<

}

voidmain()

{

intnumber;

cout<<"Inputthenumber:

";

cin>>number;

reverse(number);

}

14.//编写函数,完成指定二维数组(3*3)的转置,即行列对换。

#include

#include

voidmain()

{

inti,j,temp,row=0,colum=0;

inta[3][3];

cout<<"输入一个3×3的整型矩阵:

"<

for(i=0;i<=2;i++)//从第0行~第2行

for(j=0;j<=2;j++)//从第0列~第2列

cin>>a[i][j];//输入矩阵元素

for(i=0;i<=2;i++)

for(j=0;j<=i;j++)

{

temp=a[i][j];//将a[i][j]与a[j][i]的值互换

a[i][j]=a[j][i];

a[j][i]=temp;

}

for(i=0;i<=2;i++)

{

for(j=0;j<=2;j++)

cout<

cout<

}

}

15.//编写一个程序,要求当输入一个数字月份时,程序输出该月的英文名称。

例如输入5时,程序输出"May",要求用指针数组实现。

#include

#include

voidmain()

{

//定义指针数组

char*month[12]={"January","February","March","April","May","June","July",

"August","September","October","November","December"};

intn;

cout<<"Inputthemonth(1-12):

";

cin>>n;

while((n>12)||(n<1))

{

cout<<"Inputthemonth(1-12):

";

cin>>n;

}

cout<<"Themonthis"<<*(month+n-1)<

}

16.//编写一个程序,要求分别输入5个学生的3科成绩,并输出平均成绩最高的学生的姓名及各科成绩。

要求用结构体数组实现。

#include

#include

structstudent

{charname[20];//姓名

floatcourse1;//第一科成绩

floatcourse2;//第二科成绩

floatcourse3;//第三科成绩

floataverage;//平均成绩

};

structstudentstu[5];

voidmain()

{

floattemp=-100.0;

intj,k=0;

charc;

for(inti=0;i<5;i++)

{

cout<<"InputNO."<

";

cin>>stu[i].name;

cout<<"InputNO."<

";

cin>>stu[i].course1>>stu[i].course2>>stu[i].course3;//输入三科成绩

stu[i].average=(stu[i].course1+stu[i].course2+stu[i].course3)/3;//求平均成绩

if(temp

{

temp=stu[i].average;//temp存放最高平均分

k=i;//k存放该同学的序号

}

}

cout<<"Thestudentis"<

}

17.//编写一个函数,利用指针将一个字符串反向输出。

编写相应的主函数对其进行调用,在主函数中完成原始数据的输入和结果输出。

#include

voidreverse(char*a,intn)//a为字符串首地址,n+1为字符串长度

{

chartemp;

for(intk=0;k<((n+1)/2);k++)//a[k]和a[n-k]交换数据

{temp=*(a+k);

*(a+k)=*(a+n-k);

*(a+n-k)=temp;

}

}

voidmain()

{

chara[100];//最多输入100个字符

cout<<"Inputthestring:

"<

cin.getline(a,100);

for(inti=0;a[i]!

=‘\0’;)//求字符串的长度

i++;

reverse(a,i-1);

cout<<"Thereversedstringis:

";

for(intj=0;j<=i-1;j++)/输出反向后的字符串

cout<<*(a+j);

cout<

}

18.//编写一个函数,统计并返回一行文字中所有字母、数字、空格及其他字符的个数,同时编写相应的主函数,在主函数中能接收用户输入的一行文本,然后调用上面定义的函数,并在主函数中输出各种字符的个数。

#include

voidmain()

{

chara[100];//最多输入100个字符

cout<<"Inputthestring:

"<

cin.getline(a,100);

intnum[4]={0,0,0,0};//分别存储数字、空格、字母和其它字符的个数

inti=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)&&(a[i]<=90))||((a[i]>=97)&&(a[i]<=122)))//大小写字母

num[2]+=1;

else//其它字符

num[3]+=1;

i++;

}

cout<<"TheStatisticresultis:

"<

cout<<"number:

"<

"<

"character:

"<

"<

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2