第四次数组部分补充习题Word文档下载推荐.docx
《第四次数组部分补充习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第四次数组部分补充习题Word文档下载推荐.docx(21页珍藏版)》请在冰点文库上搜索。
![第四次数组部分补充习题Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/5f1bbda9-e905-42c2-8887-644dd4f81252/5f1bbda9-e905-42c2-8887-644dd4f812521.gif)
u<
average=sum/count;
这组数的平均值为:
average<
return0;
2.6编程输出下列图形,中间一行英文字母由输入得到。
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
还是不懂后面的
charin;
inti,j;
do
{
cout<
输入一个字母:
;
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<
'
'
char(i+'
);
for(i=line;
i>
i--)
{//下三角(少一行)
for(j=0;
=line-i;
=2*i-1;
char(i-1+'
return0;
}
2.5编程打印如下图形:
*
***
*****
*******
inti,j;
for(i=1;
5;
for(j=4-i;
j--)
cout<
for(j=1;
j++)
*"
4;
***\n"
2.12将100元换成用10元、5元和1元的组合,共有多少种组合方法。
inti,j,k,count=0;
for(i=0;
=10;
i++)//控制是十元的个数
for(j=0;
=20;
j++)//控制五元的个数
k=10*i+5*j;
if(k>
\t'
k<
count++;
//计数器
}
count<
2.11编程求1000之内的所有完全数。
所谓完全数指的是一个数恰好等于它的所有因子和。
例如6=1+2+3,就是一个完全数。
inti,j,sum_yz;
=1000;
i++)//找从1到1000的满足题意的数
sum_yz=0;
=i;
j++)//找其因子
if(i%j==0)
sum_yz=sum_yz+j;
if(i=sum_yz)
以下作业截止提交时间为:
2012年4月30日23:
00
一、没有全部完成第三章编程题的或程序有错的,首先完成第三章的程序作业。
第四章数组部分补充习题
二程序设计
1.若有一字符串正反读都一样(如level、madam),称之为回文。
请编写一程序验证输入的字符串是否为回文。
charhui[10];
请输入您要验证的数组:
for(inti=0;
hui[i];
if(hui[i]=='
z'
)
{
n=i-1;
break;
您所输入的字符串为:
=(n+1)/2;
intj=n-i;
if(hui[i]==hui[j])
continue;
//如果对应相等则继续进行判断
else//else后一定不能跟着表达式
您所输入的不是回文"
break;
if(i>
=(n+1)/2)//从循环中跳出来有两种可能,一种是不是回文,一种是i>
(n+1)/2
您所输入的是回文"
结果:
能正常运行并得出想要的结果。
2.将一个数组中的值按由小到大重新存放。
例如,原来顺序8,3,5,4,1。
要求改为1,3,4,5,8。
编程实现之。
constintM=100;
intnum[M];
intn;
输入一组数,并且以0结束,这组数为:
for(intu=0;
M;
u++)
num[u];
if(num[u]==0)
n=u-1;
for(inti=0;
for(intj=n;
i;
if(num[j-1]>
num[j])
{
intx=num[j-1];
num[j-1]=num[j];
num[j]=x;
}
结果是:
for(intk=0;
=n;
k++)
num[k];
能正常运行,并得到想要的结果。
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(intj=0;
j++)//找到一行中的最小值,确定列数
min=a[i][j];
for(intk=j;
if(a[i][k]>
min)
P++;
if(P!
=3-j)
continue;
else
for(intn=0;
n<
n++)
{
MIN=a[n][j];
for(intu=n;
u++)//在该列中跟其他进行比较
{
if(a[u][j]>
MIN)
q++;
}
if(q!
=3-n)
continue;
else
if(i!
=n)
continue;
else
cout<
第"
i+1<
行第"
j+1<
列"
a[i][j]<
}
}
能正常运行,并得出想要的结果。
自己编的程序不对,看了同学的。
(2)它们既是所在行的最大值,又是所在列的最大值;
#include<
intmax,tmp,MIN;
intp=0,q=0;
inta[4][4]=
13,14,15,16
};
for(intj=0;
max=a[i][j];
if(a[i][k]<
max)
p++;
if(p!
max1=a[n][j];
if(a[u][j]<
cout<
}
(3)它们是所在行的最小值,却是所在列的最大值;
能运行,但没有显示结果。
(4)它们是所在行的最大值,却是所在列的最小值。
能正常运行并的出想要的结果。
4.编写程序,将上题中的矩阵用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。
intA[4][4];
intx;
请输入您要转置的4*4阶行列式:
for(intj=0;
A[i][j];
您输入的4*4阶行列式为:
cout<
A[i][j]<
转置后的行列式为:
for(intv=i;
v++)
x=A[i][v];
A[i][v]=A[v][i];
//如果有多条语句,一定要用{}括起来
A[v][i]=x;
j++)//为什么前面已经定义了j后面还要在定义一次?
//一定要注意放的位置,不然无法输出4*4阶行列式
5.编写程序,将两个字符串连接起来,要求不使用strcat()函数。
charA[20];
输入一个字符串A并以z为结束"
20;
cin>
A[i];
if(A[i]=='
n=i;
charB[20];
intm;
输入一个字符串B并以z为结束"
for(intj=n;
40;
B[j];
if(B[j]=='
m=j;
//这里是m=j-1
charC[100];
for(intv=0;
m;
v++)//这里v<
m改为v<
=m,为什么运行结果少了最后一个字符
if(v<
n)
C[v]=A[v];
else
C[v]=B[v];
连接后的字符串C为:
for(intx=0;
x<
x++)
C[x];
能正常运行并得到想要的结果。
6.输入三个字符串,请使用字符串比较函数strcmp()将这三个字符串排序后按从小到大的顺序输出。
cstring>
intmain()
chara[10],b[10],c[10];
chard[10],e[10],f[10];
请分别输入三组字符串"
a;
b;
c;
if((strcmp(a,b)>
0)&
(strcmp(a,c)>
0))//第一种情况如果a>
b,a>
c
if(strcmp(b,c)>
0)//比较b,c的大小,如果b>
for(inti=0;
10;
d[i]=a[i],e[i]=b[i],f[i]=c[i];
//a>
b>
c分别赋值给d,e,f.
else
i++)//a>
c>
b
d[i]=a[i],e[i]=c[i],f[i]=b[i];
if((strcmp(b,a)>
(strcmp(b,c)>
0))//如果b>
a,b>
c.
if(strcmp(a,c)>
0)//b>
a>
for(intj=0;
d[j]=b[j],e[j]=a[j],f[j]=c[j];
else//b>
a分别赋值给d,e,f.
d[j]=b[j],e[j]=c[j],f[j]=a[j];
if(strcmp(a,b)>
0)
for(intk=0;
d[k]=c[k],e[k]=a[k],f[k]=b[k];
else
d[k]=c[k],e[k]=b[k],f[k]=a[k];
排序后的字符串排列为:
f<
e<
d<
结果:
能正常运行,得出想要的结果,不知道理解的对不对。