C++程序作业题.docx

上传人:b****2 文档编号:16863802 上传时间:2023-07-19 格式:DOCX 页数:35 大小:21.85KB
下载 相关 举报
C++程序作业题.docx_第1页
第1页 / 共35页
C++程序作业题.docx_第2页
第2页 / 共35页
C++程序作业题.docx_第3页
第3页 / 共35页
C++程序作业题.docx_第4页
第4页 / 共35页
C++程序作业题.docx_第5页
第5页 / 共35页
C++程序作业题.docx_第6页
第6页 / 共35页
C++程序作业题.docx_第7页
第7页 / 共35页
C++程序作业题.docx_第8页
第8页 / 共35页
C++程序作业题.docx_第9页
第9页 / 共35页
C++程序作业题.docx_第10页
第10页 / 共35页
C++程序作业题.docx_第11页
第11页 / 共35页
C++程序作业题.docx_第12页
第12页 / 共35页
C++程序作业题.docx_第13页
第13页 / 共35页
C++程序作业题.docx_第14页
第14页 / 共35页
C++程序作业题.docx_第15页
第15页 / 共35页
C++程序作业题.docx_第16页
第16页 / 共35页
C++程序作业题.docx_第17页
第17页 / 共35页
C++程序作业题.docx_第18页
第18页 / 共35页
C++程序作业题.docx_第19页
第19页 / 共35页
C++程序作业题.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序作业题.docx

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

C++程序作业题.docx

C++程序作业题

C++程序

班级:

学号:

姓名:

指导老师:

【程序6】

题目:

输入两个正整数m和n,求其最大公约数和最小公倍数。

1.程序分析:

利用辗除法。

#include

usingnamespacestd;

classDemo{

public:

Demo(int,int);

voidprint();

private:

inta,b;

};

Demo:

:

Demo(intx,inty){

a=x;

b=y;

}

voidDemo:

:

print(){

if(a>0&&b>0)

{

intc,d,e;

c=a;d=b;

e=c%d;

while(e!

=0)

{

c=d;d=e;

e=c%d;

}

cout<<"最大公约数是"<

cout<<"最小公倍数是"<

}

elsecout<<"错误"<<'\n';

}

intmain()

{

inta,b;

cout<<"请输入两个数:

";

cin>>a>>b;

Demot=Demo(a,b);

t.print();

return0;

}

【程序7】

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

importjava.util.Scanner;

publicclassChar{

publicstaticvoidmain(String[]args){

intZimu=0,Space=0,Number=0,Other=0;

Scannerin=newScanner(System.in);

Stringn=in.nextLine();

for(inti=0;i

if((n.charAt(i)>='a'&&n.charAt(i)<='z')||(n.charAt(i)>='A'&&n.charAt(i)<='Z')){

Zimu++;

}

elseif(n.charAt(i)==''){

Space++;

}

elseif(n.charAt(i)>'0'&&n.charAt(i)<='9'){

Number++;

}

elseOther++;

System.out.println("字母的个数为:

"+Zimu);

System.out.println("空格的个数为:

"+Space);

System.out.println("数字的个数为:

"+Number);

System.out.println("其他的个数为:

"+Other);

}

}

【程序11】

题目:

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

都是多少?

1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

#include

usingnamespacestd;

classDemo{

public:

voidprint(){

intx,i,j,k,n=0;

cout<<"该数可能为:

\n";

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

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

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

{

x=i*100+j*10+k;

if(i!

=j&&i!

=k&&j!

=k)

{

n++;

cout<

"\n":

"");

}

}

cout<<'\n'<<"总共有"<

}

};

intmain()

{

Demot;

t.print();

return0;

}

【程序14】

题目:

输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

#include

#include

usingnamespacestd;

classDemo{

public:

Demo(intx,inty,intz):

year(x),month(y),day(z){};

voidcompare();

private:

intyear;

intmonth;

intday;

};

voidDemo:

:

compare(){

intsum=0;

cout<<"是这一年中的第";

intarry1[]={1,3,5,7,8,10,12};

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

if(month==arry1[i])break;

sum=month*31+day;

intarry2[]={4,6,9,11};

for(intj=0;j<4;j++)

if(month==arry2[j])break;

sum=month*30+day;

if(month==2)sum=month*28+day;

if(year%100==0&&year%400!

=0)

sum=sum+1;

cout<

}

intmain()

{

cout<<"请输入年月日:

\n";

intyear;

intmonth;

intday;

cin>>year;

cin>>month;

cin>>day;

Demot(year,month,day);

pare();

return0;

}

【程序20】

题目:

有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:

请抓住分子与分母的变化规律。

程序实现:

#include

usingnamespacestd;

intmain()

{

voidshulie(int);

cout<<"数列前项及项的和为:

"<

shulie(20);

return0;

}

voidshulie(intnum)

{

inti,k=0;

doubles=2,m=1,t=0,sum=0;

for(i=0;i

{

t=s;

sum+=s/m;

cout<<(int)s<<"/"<<(int)m;

k++;

if(k%5==0)cout<

if(i==num-1)

{

cout<<"=";

}

else{

cout<<"+";

}

s=s+m;

m=t;

}

cout<

}

:

【程序22】

题目:

利用递归方法求5!

程序分析:

递归公式:

fn=fn_1*4!

程序实现:

#include

usingnamespacestd;

intJie(int);

intmain()

{

cout<<"利用递归法求的阶乘为:

"<

cout<<"5!

="<

return0;

}

intJie(intnum)

{

intresult=1;;

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

{

result*=i;

}

returnresult;

}

【程序26】

题目:

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:

用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

程序实现:

//根据输入的字母输出相应的星期几

#include

usingnamespacestd;

intmain()

{

voidshow();

show();

return0;

}

voidshow()

{chars,c;

cout<<"请输入一个字母"<

cin>>s;

if(s=='m'||s=='M')

{

cout<<"星期一"<

}

elseif(s=='t'||s=='T')

{

cin>>c;

if(c=='a'||c=='A')

{

cout<<"星期二"<

}

elseif(c=='h'||c=='H')

{

cout<<"星期四"<

}

else

{

cout<<"输入不符合要求!

"<

}

}

elseif(s=='w'||s=='W')

{

cout<<"星期三"<

}

elseif(s=='f'||s=='F')

{

cout<<"星期五"<

}

elseif(s=='s'||s=='S')

{

cout<<"请输入第二个字符:

"<

cin>>c;

if(c=='a'||c=='A')

{

cout<<"星期六"<

}

elseif(c=='u'||c=='U')

{

cout<<"星期日"<

}

else

{

cout<<"输入不符合要求!

"<

}

}

else

{

cout<<"输入的字母不符合要求!

"<

}

}

【程序29】

题目:

求一个3*3矩阵对角线元素之和

程序分析:

利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

程序实现:

//3*3

#include

usingnamespacestd;

intmain()

{voidsum();

cout<<"请输入一个*3矩阵"<

sum();

return0;

}

voidsum()

{intsum=0,num[3][3],i,j;

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

{

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

{

cout<<"请输入第"<

cin>>num[i][j];

if(i==j)sum+=num[i][j];

}

}

cout<<"输入的*3矩阵为:

"<

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

{

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

{

cout<

}

cout<

}

cout<<"输入的*3矩阵中对角线元素之和为:

"<

}

【程序30】.题目:

有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入中。

    

#include

usingnamespacestd;

intmain()

{intfac();

fac();

}

intfac(){

inta[3][3];

intsum=0;

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

for(intj=0;j<3;j++)

cin>>a[i][j];

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

{

for(intj=0;j<3;j++)

{

if(i==j)

sum+=a[i][j];

}

}

cout<

return0;

}

【程序】31.题目:

将一个数组逆序输出

#include

usingnamespacestd;

intmain(){

intfac();

fac();

}

intfac(void){

inta[5];

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

cin>>a[i];

}

for(intj=4;j>=0;j=j-1){

cout<

return0;

}

【程序32】.题目:

取一个整数a从右端开始的4~7位。

 

#include

usingnamespacestd;

intmain(){

intfac();

fac();}

intfac(void){

intn;

intsum;

cin>>n;

if(n/1000>0){

intf1=n/1000000%10;

intf2=n/100000%10;

intf3=n/10000%10;

intf4=n/1000%10;

sum=f4*1000+f3*100+f2*10+f1;

cout<<"sum="<

}

return0;

}

【程序33】.题目:

打印出杨辉三角形(要求打印出10行如下图)

#include

usingnamespacestd;

intmain(){

intfac();

fac();

}

intfac(void){

inta[10][10];

for(inti=0;i<10;i++){

a[i][0]=1;

a[i][i]=1;}

for(i=2;i<10;i++){

for(intj=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}

for(i=0;i<10;i++){

for(intk=0;k<2*(10-i)-1;k++){

cout<<"";

}

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

cout<

}

cout<

return0;

}

【程序34】

题目:

输入3个数a,b,c,按大小顺序输出。

程序分析:

利用指针方法。

实现程序:

#include

usingnamespacestd;

intmain()

{

voidexchange(int*,int*,int*);

inta,b,c,*p1,*p2,*p3;

cout<<"请输入三个数:

"<

cin>>a>>b>>c;

p1=&a;p2=&b;p3=&c;

exchange(p1,p2,p3);

cout<<"排序后的结果是(由大到小)"<

cout<

return0;

}

voidexchange(int*q1,int*q2,int*q3)//比较三个数大小

{voidswap(int*,int*);

if(*q1<*q2)swap(q1,q2);

if(*q1<*q3)swap(q1,q3);

if(*q2<*q3)swap(q2,q3);

}

voidswap(int*s1,int*s2)//定义函数,主要作用交换两个数的位置

{

inttemp;

temp=*s1;

*s1=*s2;

*s2=temp;

}

【程序35】

题目:

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

程序实现:

#include

usingnamespacestd;

intmain()

{voidcompare_sort(intnum[]);

inti,num[10];

cout<<"请输入一个包含个数的数组:

"<

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

{

cout<<"请输入第"<

"<

cin>>num[i];

}

compare_sort(num);

return0;

}

voidcompare_sort(intnum[])

{

intmax=num[0];

intmin=num[0];

intm=0,n=0;

cout<<"交换前的顺序为:

"<

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

{

if(num[i]>max)

{

max=num[i];

m=i;

}

if(num[i]

{

min=num[i];

n=i;

}

cout<<""<

}

for(intj=0;j<10;j++)

{

if(j==0)

{

intt=num[0];

num[0]=num[m];

num[m]=t;

}

if(j==9)

{

intt=num[9];

num[9]=num[n];

num[n]=t;

}

}

cout<<"交换后的顺序为:

"<

for(intk=0;k<10;k++)

{

cout<<""<

}

}

【程序36】

题目:

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

程序实现:

#include

usingnamespacestd;

intmain()

{

voidmove(intnum[],int);

cout<<"请输入个数字:

"<

intnum[10],m;

for(inti=0;i<10;i++){

cout<<"请输入第"<<(i+1)<<"个数"<

cin>>num[i];

}

cout<<"输入想要向后移动的个数m"<

cin>>m;

move(num,m);

return0;

}

voidmove(intnum[],intm)

{

intt=0;

cout<<"移动前的顺序为:

"<

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

{

cout<<""<

}

for(inti=0;i

{

for(intj=9;j>=0;j--)

{

if(j==9)

{

t=num[j];

}else

{

num[j+1]=num[j];

}

if(j==0)

{

num[0]=t;

}

}

}

cout<

cout<<"移动后的顺序为:

"<

for(intk=0;k<10;k++)

{

cout<<""<

}

}

【程序37】

题目:

有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下

的是原来第几号的那位。

程序实现:

#include

usingnamespacestd;

intmain()

{

voidreyue(intn,intnum[]);

intn;

cout<<"请输入报数的总人数:

"<

cin>>n;

intnum[100];

for(inti=0;i

{//为n个人分别赋值,代表他们的位子

num[i]=i+1;

}

reyue(n,num);

return0;

}

voidreyue(intn,intnum[])

{

intt=n;

intk=0;

while(t>1)

{

for(intj=0;j

{//对n个人进行报数跳出,如果该人报,将相应的数组赋值为

if(num[j]==0)continue;

k++;

if(k==3)

{

num[j]=0;

t--;

k=0;

}

}

}

for(inti=0;i

{//遍历数组,找到最后剩下的那位

if(num[i]!

=0)

{

cout<<"最后剩下的是原来第"<

}

else

{

continue;

}

}

}

【程序38】

题目:

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

程序实现:

#include

#include

usingnamespacestd;

intmain()

{

stringstr;

intshow(stringstr);

cout<<"请输入一个字符串:

"<

cin>>str;

cout<<"字符串的长度为:

"<

return0;

}

intshow(stringstr)

{

inti=0;

while(str[i]!

='\0')

{

i++;

}

returni;

}

【程序39】

题目:

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数

1/1+1/3+...+1/n

程序实现:

#include

#include

usingnamespac

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

当前位置:首页 > 临时分类 > 批量上传

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

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