return0;
}
5.已声明一个一维字符数组,并用四位八进制字符初始化如下:
chara[4]={'2','4','6','5'};
试设计一程序,计算这四位八进制字符“2465”所表示的十进制数是多少,输出之。
#include
usingnamespacestd;
intmain()
{
chara[4]={'2','4','6','5'};
inti,k,s=0;
for(i=0;i<4;i++){
k=a[i]-48;
s=s*8+k;
}
cout<<"八进制2465所表示的十进制数是:
"<
return0;
}
6.设有一个数列,它的头四项是0、0、2、5,以后每项分别是各自前四项之和,试编程求此数列的前20项。
用一维数组完成此操作。
#include
#include
usingnamespacestd;
intmain()
{
inta[20]={0,0,2,5};
for(inti=4;i<20;i++)
a[i]=a[i-1]+a[i-2]+a[i-3]+a[i-4];
for(i=0;i<20;i++){
cout<if((i+1)%5==0)cout<}
return0;
}
7.已知一数组的十个元素值为3、5、2、5、6、4、6、8、9、7。
试设计程序,用指针变量求出最小的元素值以及奇下标元素之和。
#include
usingnamespacestd;
intmain()
{
ints=0,a[10]={3,5,2,5,6,4,6,8,9,7},*p=a;
intmin=*p;
for(inti=0;i<10;i++){
if(*(p+i)%2==1)s+=*(p+i);
if(*(p+i)}
cout<<"奇下标元素和="<
cout<<"最小的元素值="<return0;
}
8.输入10个数到一维数组中,按从大到小排序后输出。
分别用三个函数实现数据的输入、排序和输出。
#include
usingnamespacestd;
#defineN10
voidin(int*x){
cout<<"请输入"<"<for(inti=0;icin>>*x++;
}
voidpaxu(int*x){
for(inti=0;ifor(intj=i+1;jif(*(x+j)>*(x+i)){
intt=*(x+i);
*(x+i)=*(x+j);
*(x+j)=t;
}
}
voidout(int*x)
{
for(inti=0;icout<<*(x+i)<<'';
cout<}
intmain()
{
inta[N];
in(a);
paxu(a);
out(a);
return0;
}
9.已知矩阵如图6.13所示。
试设计程序,用下标表示法求该矩阵两对角线元素之和。
#include
usingnamespacestd;
intmain()
{
inta[4][4]={21,22,23,24,25,26,27,28,
29,30,31,32,33,34,35,36};
ints=0;
for(inti=0;i<4;i++)
s+=a[i][i]+a[i][3-i];
cout<<"矩阵两对角线元素之和="<
return0;
}
10.已知两个二维数组声明如下:
inta[][4]={51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66},b[4][4];
试将数组a的转置矩阵存入数组b。
输出数组b。
#include
usingnamespacestd;
intmain()
{
inta[][4]={51,52,53,54,
55,56,57,58,
59,60,61,62,
63,64,65,66};
intb[4][4];
for(inti=0;i<4;i++)
for(intj=0;j<4;j++)
b[j][i]=a[i][j];
cout<<"转置矩阵如下:
"<for(i=0;i<4;i++)
for(intj=0;j<4;j++){
cout<
if((j+1)%4==0)cout<}
return0;
}
11.设计一程序,声明一个二维数组doubleb[5][2]用来存放小组内5个同学的两门课程(数学和物理)的成绩。
要求依次输入每个同学的成绩,求出全组的平均成绩和每一门课程的平均成绩。
#include
usingnamespacestd;
intmain()
{
doubles=0,sm=0,sp=0,b[5][2];
cout<<"请依次输入5位同学的数学和物理成绩。
"<for(inti=0;i<5;i++){
for(intj=0;j<2;j++){
cin>>b[i][j];
s+=b[i][j];
}
sm+=b[i][0];
sp+=b[i][1];
}
cout<<"总的平均成绩="<
cout<<"数学平均成绩="<cout<<"物理平均成绩="<return0;
}
12.某小组有4个同学,考了三门课程。
他们的成绩如表6-5所示。
试设计程序,求每位同学的平均成绩,输出之。
(用数组名表示形式对元素进行访问)
表6-5同学考试成绩表
数学
物理
外语
98
82
88
76
77
86
69
73
78
83
92
70
#include
#include
usingnamespacestd;
intmain()
{
inta[4][4]={98,82,88,0,
76,77,86,0,
69,73,78,0,
83,92,70,0};
for(inti=0;i<4;i++)
for(intj=0;j<3;j++)*(*(a+i)+3)+=*(*(a+i)+j);
cout<<"同学们的平均成绩分别为:
";
for(i=0;i<4;i++)
cout<cout<return0;
}
13.设计一程序,用首元素指针表示法求图6.13所示矩阵两对角线元素之和。
#include
usingnamespacestd;
intmain()
{
inta[4][4]={21,22,23,24,
25,26,27,28,
29,30,31,32,
33,34,35,36};
int*p=(int*)(a),s=0;
for(inti=0;i<4;i++)
s+=*(p+4*i+i)+*(p+4*i+(3-i));
cout<<"矩阵对角元素和="<
return0;
}
14.试声明一个二维数组,按图6.14所示矩阵初始化。
用一个指向一维数组的指针变量,输出该二维数组各元素。
#include
usingnamespacestd;
intmain()
{
inta[5][5]={1,2,3,4,5,
2,3,4,5,6,
3,4,5,6,7,
4,5,6,7,8,
5,6,7,8,9};
int(*p)[5]=a;
for(inti=0;i<5;i++)
for(intj=0;j<5;j++){
cout<
if((j+1)%5==0)cout<}
return0;
}
15.试设计一程序。
调用函数求二维数组全部元素的平均值。
函数用指向一维数组的指针变量作形参,实现元素平均值的计算。
设二维数组如图6.15所示。
#include
usingnamespacestd;
doubleave(int(*p)[5]){
ints=0;
for(inti=0;i<3;i++)
for(intj=0;j<5;j++)
s+=p[i][j];
returns/15.0;
}
intmain()
{
inta[3][5]={1,2,3,4,5,
3,4,5,6,7,
5,6,7,8,9};
cout<<"数组元素平均值="<return0;
}
16.声明一个二维数组:
intb[3][4];
采用数组名作实参,指向一维数组的指针变量作形参,调用函数实现输入各元素值,求平均值、最大元素值和最小元素值,并输出之。
#include
usingnamespacestd;
voidin(int(*p)[4],intn){
cout<<"请输入"<<4*n<<"个元素值。
"<for(inti=0;ifor(intj=0;j<4;j++)
cin>>*(*(p+i)+j);
}
voidfun(int(*p)[4],intn,double&av,int&mx,int&mi){
mx=mi=**p;
av=0;
for(inti=0;ifor(intj=0;j<4;j++){
av+=*(*(p+i)+j);
if(*(*(p+i)+j)>mx)mx=*(*(p+i)+j);
if(*(*(p+i)+j)}
av/=4.0*n;
}
voidout(doubleav,intmx,intmi){
cout<<"元素平均值="<cout<<"最大元素值="<cout<<"最小元素值="<}
intmain()
{
doubleave;
intmax,min,n=3,b[3][4];
in(b,n);
fun(b,n,ave,max,min);
out(ave,max,min);
return0;
}
17.定义一个未初始化的二维数组,用编程的方法形成图6.16所示的矩阵(数据不准通过键盘输入),并按该矩阵形式输出之。
#include
usingnamespacestd;
intmain()
{
intb[5][5];
for(inti=0;i<5;i++)
for(intj=0;j<5;j++){
if(j<=i)*(*(b+i)+j)=1;
else*(*(b+i)+j)=j+1-i;
cout<<*(*(b+i)+j)<<"";
if((j+1)%5==0)cout<}
return0;
}
18.试设计程序,用cin输入一个无空格字符串。
然后按正序和反序输出该字符串。
例如输入“abcde”,正序输出得abcde,反序输出得edcba。
#include
usingnamespacestd;
intmain()
{
chara[50],*p=a;
cout<<"请输入一条无空格字符串。
"<cin>>a;
cout<<"字符串正序输出为:
"<