第四次数组部分补充习题.docx

上传人:b****8 文档编号:10113380 上传时间:2023-02-08 格式:DOCX 页数:21 大小:23.41KB
下载 相关 举报
第四次数组部分补充习题.docx_第1页
第1页 / 共21页
第四次数组部分补充习题.docx_第2页
第2页 / 共21页
第四次数组部分补充习题.docx_第3页
第3页 / 共21页
第四次数组部分补充习题.docx_第4页
第4页 / 共21页
第四次数组部分补充习题.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第四次数组部分补充习题.docx

《第四次数组部分补充习题.docx》由会员分享,可在线阅读,更多相关《第四次数组部分补充习题.docx(21页珍藏版)》请在冰豆网上搜索。

第四次数组部分补充习题.docx

第四次数组部分补充习题

第三次作业没有完成的程序题

2.9从键盘输入一组非0整数,以输入0标志结束,求这组整数的平均值,并统计其中正数和负数的个数。

#include

usingnamespacestd;

intmain()

{

intn;

intu=0,v=0;

intsum=0;

intcount=0;//算是一个计数器

doubleaverage;

cout<<"输入任意的一个整数"<

cin>>n;//先输入一个值,否则系统会随机给定一个值

while(n!

=0)

{

count=count+n;

if(n>0)

u=u+1;

else//else(n<0);注意如果else后跟着条件就要加分号

v=v+1;

cin>>n;//继续进行判断

}

cout<<"负数有:

"<

"<

average=sum/count;

cout<<"这组数的平均值为:

"<

return0;

}

2.6编程输出下列图形,中间一行英文字母由输入得到。

A

BBB

CCCCC

DDDDDDD

CCCCC

BBB

A

还是不懂后面的

#include

usingnamespacestd;

intmain()

{

charin;

inti,j;

do

{

cout<<"输入一个字母:

";

cin>>in;

if((in>=97)&&(in<=122))in-=32;//小写改大写

}

while((in<65)||(in>90));

intline=in-'A';

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

{//上三角

for(j=line-i;j>0;j--)cout<<"";//前方空格

for(j=1;j<=2*i+1;j++)cout<<''<

cout<

}

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

{//下三角(少一行)

for(j=0;j<=line-i;j++)cout<<"";

for(j=1;j<=2*i-1;j++)cout<<''<

cout<

}

return0;

}

2.5编程打印如下图形:

*

***

*****

*******

***

***

***

#include

usingnamespacestd;

intmain()

{

inti,j;

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

{

for(j=4-i;j>0;j--)

cout<<"";

for(j=1;j<=2*i-1;j++)

cout<<"*";

cout<

}

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

cout<<"***\n";

return0;

}

2.12将100元换成用10元、5元和1元的组合,共有多少种组合方法。

#include

usingnamespacestd;

intmain()

{

inti,j,k,count=0;

for(i=0;i<=10;i++)//控制是十元的个数

for(j=0;j<=20;j++)//控制五元的个数

{

k=10*i+5*j;

if(k>=0)

{

cout<

count++;//计数器

}

}

cout<

return0;

}

2.11编程求1000之内的所有完全数。

所谓完全数指的是一个数恰好等于它的所有因子和。

例如6=1+2+3,就是一个完全数。

#include

usingnamespacestd;

intmain()

{

inti,j,sum_yz;

for(i=1;i<=1000;i++)//找从1到1000的满足题意的数

{

sum_yz=0;

for(j=1;j<=i;j++)//找其因子

if(i%j==0)

sum_yz=sum_yz+j;

if(i=sum_yz)

cout<

}

return0;

}

 

以下作业截止提交时间为:

2012年4月30日23:

00

一、没有全部完成第三章编程题的或程序有错的,首先完成第三章的程序作业。

第四章数组部分补充习题

二程序设计

1.若有一字符串正反读都一样(如level、madam),称之为回文。

请编写一程序验证输入的字符串是否为回文。

#include

usingnamespacestd;

intmain()

{

charhui[10];

intn;

cout<<"请输入您要验证的数组:

"<

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

{

cin>>hui[i];

if(hui[i]=='z')

{

n=i-1;

break;

}

}

cout<<"您所输入的字符串为:

";

for(i=0;i

cout<

for(i=0;i<=(n+1)/2;i++)

{

intj=n-i;

if(hui[i]==hui[j])

{

continue;//如果对应相等则继续进行判断

}

else//else后一定不能跟着表达式

{

cout<<"您所输入的不是回文"<

break;

}

}

if(i>=(n+1)/2)//从循环中跳出来有两种可能,一种是不是回文,一种是i>(n+1)/2

cout<<"您所输入的是回文";

return0;

}

结果:

能正常运行并得出想要的结果。

2.将一个数组中的值按由小到大重新存放。

例如,原来顺序8,3,5,4,1。

要求改为1,3,4,5,8。

编程实现之。

#include

usingnamespacestd;

intmain()

{

constintM=100;

intnum[M];

intn;

cout<<"输入一组数,并且以0结束,这组数为:

"<

for(intu=0;u

{

cin>>num[u];

if(num[u]==0)

{

n=u-1;

break;

}

}

for(inti=0;i

for(intj=n;j>i;j--)

if(num[j-1]>num[j])

{

intx=num[j-1];

num[j-1]=num[j];

num[j]=x;

}

cout<<"结果是:

"<

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

{

cout<

cout<

}

return0;

}

结果:

能正常运行,并得到想要的结果。

3.设有下列矩阵:

A=

请编程序找出符合下列特征的所有元素,并打印出他们在矩阵中的位置:

(1)它们既是所在行的最小值,又是所在列的最小值;

#include

usingnamespacestd;

intmain()

{

intmin,tmp,MIN;

intP=0,q=0;

inta[4][4]={

1,2,3,4,

5,6,7,8,

9,10,11,12,

13,14,15,16};

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

{

for(intj=0;j<4;j++)//找到一行中的最小值,确定列数

{

min=a[i][j];

for(intk=j;k<4;k++)

if(a[i][k]>min)

P++;

if(P!

=3-j)

continue;

else

for(intn=0;n<4;n++)

{

MIN=a[n][j];

for(intu=n;u<4;u++)//在该列中跟其他进行比较

{

if(a[u][j]>MIN)

q++;

}

if(q!

=3-n)

continue;

else

if(i!

=n)

continue;

else

cout<<"第"<

}

}

}

return0;

}

结果:

能正常运行,并得出想要的结果。

自己编的程序不对,看了同学的。

(2)它们既是所在行的最大值,又是所在列的最大值;

#include

usingnamespacestd;

intmain()

{

intmax,tmp,MIN;

intp=0,q=0;

inta[4][4]=

{

1,2,3,4,

5,6,7,8,

9,10,11,12,

13,14,15,16

};

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

{

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

{

max=a[i][j];

for(intk=j;k<4;k++)

if(a[i][k]

p++;

if(p!

=3-j)

continue;

else

for(intn=0;n<4;n++)

{

max1=a[n][j];

for(intu=n;u<4;u++)

{

if(a[u][j]

q++;

}

if(q!

=3-n)

continue;

else

if(i!

=n)

continue;

else

cout<<"第"<

}

}

}

return0;

}

结果:

能正常运行,并得出想要的结果。

(3)它们是所在行的最小值,却是所在列的最大值;

#include

usingnamespacestd;

intmain()

{

intmin,tmp,MIN;

intp=0,q=0;

inta[4][4]=

{

1,2,3,4,

5,6,7,8,

9,10,11,12,

13,14,15,16

};

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

{

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

{

min=a[i][j];

for(intk=j;k<4;k++)

if(a[i][k]>min)

p++;

if(p!

=3-j)

continue;

else

for(intn=0;n<4;n++)

{

MIN=a[n][j];

for(intu=n;u<4;u++)

{

if(a[u][j]

q++;

}

if(q!

=3-n)

continue;

else

if(i!

=n)

continue;

else

cout<<"第"<

}

}

}

return0;

}

结果:

能运行,但没有显示结果。

(4)它们是所在行的最大值,却是所在列的最小值。

#include

usingnamespacestd;

intmain()

{

intmax,tmp,MIN;

intp=0,q=0;

inta[4][4]=

{

1,2,3,4,

5,6,7,8,

9,10,11,12,

13,14,15,16

};

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

{

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

{

max=a[i][j];

for(intk=j;k<4;k++)

if(a[i][k]

p++;

if(p!

=3-j)

continue;

else

for(intn=0;n<4;n++)

{

MIN=a[n][j];

for(intu=n;u<4;u++)

{

if(a[u][j]>MIN)

q++;

}

if(q!

=3-n)

continue;

else

if(i!

=n)

continue;

else

cout<<"第"<

}

}

}

return0;

}

结果:

能正常运行并的出想要的结果。

4.编写程序,将上题中的矩阵用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。

#include

usingnamespacestd;

intmain()

{

intA[4][4];

intx;

cout<<"请输入您要转置的4*4阶行列式:

"<

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

{

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

cin>>A[i][j];

}

cout<<"您输入的4*4阶行列式为:

"<

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

{

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

cout<

cout<

}

cout<<"转置后的行列式为:

"<

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

{

for(intv=i;v<4;v++)

{

x=A[i][v];

A[i][v]=A[v][i];//如果有多条语句,一定要用{}括起来

A[v][i]=x;

}

}

cout<<"转置后的行列式为:

"<

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

{

for(intj=0;j<4;j++)//为什么前面已经定义了j后面还要在定义一次?

{

cout<

}

cout<

}

return0;

}

结果:

能正常运行并得出想要的结果。

5.编写程序,将两个字符串连接起来,要求不使用strcat()函数。

#include

usingnamespacestd;

intmain()

{

charA[20];

intn;

cout<<"输入一个字符串A并以z为结束"<

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

{

cin>>A[i];

if(A[i]=='z')

{

n=i;

break;

}

}

charB[20];

intm;

cout<<"输入一个字符串B并以z为结束"<

for(intj=n;j<40;j++)

{

cin>>B[j];

if(B[j]=='z')

{

m=j;//这里是m=j-1

break;

}

}

charC[100];

for(intv=0;v

{

if(v

C[v]=A[v];

else

C[v]=B[v];

}

cout<<"连接后的字符串C为:

"<

for(intx=0;x

cout<

cout<

return0;

}

结果:

能正常运行并得到想要的结果。

6.输入三个字符串,请使用字符串比较函数strcmp()将这三个字符串排序后按从小到大的顺序输出。

#include

#include

usingnamespacestd;

intmain()

{

chara[10],b[10],c[10];

chard[10],e[10],f[10];

cout<<"请分别输入三组字符串";

cin>>a;

cin>>b;

cin>>c;

if((strcmp(a,b)>0)&&(strcmp(a,c)>0))//第一种情况如果a>b,a>c

{

if(strcmp(b,c)>0)//比较b,c的大小,如果b>c

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

d[i]=a[i],e[i]=b[i],f[i]=c[i];//a>b>c分别赋值给d,e,f.

else

for(inti=0;i<10;i++)//a>c>b

d[i]=a[i],e[i]=c[i],f[i]=b[i];

}

else

{

if((strcmp(b,a)>0)&&(strcmp(b,c)>0))//如果b>a,b>c.

{

if(strcmp(a,c)>0)//b>a>c分别赋值给d,e,f.

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

d[j]=b[j],e[j]=a[j],f[j]=c[j];

else//b>c>a分别赋值给d,e,f.

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

d[j]=b[j],e[j]=c[j],f[j]=a[j];

}

else

if(strcmp(a,b)>0)

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

d[k]=c[k],e[k]=a[k],f[k]=b[k];

else

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

d[k]=c[k],e[k]=b[k],f[k]=a[k];

}

cout<<"排序后的字符串排列为:

"<

return0;

}

结果:

能正常运行,得出想要的结果,不知道理解的对不对。

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1