华北电力大学c++实验指导数组的应用习题参考答案Word格式.docx
- 文档编号:21255429
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:26
- 大小:21.52KB
华北电力大学c++实验指导数组的应用习题参考答案Word格式.docx
《华北电力大学c++实验指导数组的应用习题参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《华北电力大学c++实验指导数组的应用习题参考答案Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
参考答案
(1)a>
=0
(2)n++(3)i<
n(4)x[i]<
ave
(3)计算一个3X3矩阵的各列元素的平均值。
#include"
iostream.h"
#defineM3
{inta[M][M]={1,2,3,4,5,6,7,8},i,j;
floatave[M];
i<
M;
{
(1);
for(j=0;
j<
j++)
ave[i]=ave[i]+
(2);
ave[i]=(3);
ave[i];
参考答案
(1)ave[i]=0
(2)a[j][i](3)ave[i]/M
(4)找出一个5x5矩阵中的最小值及其在数组中的位置。
#defineM5
{inta[M][M],i,j,h,l;
(1);
h=0;
l=0;
if(
(2)>
a[i][j])
{h=i;
(3);
}
最小值:
(4)<
位置:
行:
h<
列:
l;
参考答案
(1)cin>
a[i][j]
(2)a[h][l](3)l=j(4)a[h][l]
(5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。
stdio.h>
{charstr1[100],str2[100];
inti,s;
printf("
请输入第一个字符串:
);
gets(str1);
请输入第二个字符串:
gets(str2);
i=0;
while(
(1))
i++;
s=
(2);
%d"
s);
参考答案
(1)str1[i]==str2[i]&
&
str1[i]!
='
\0'
(2)str1[i]-str2[i]
思考:
1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?
根据这个结果判断字符’\0’的ASCII码是多少?
答:
运行结果为-99。
依此判断字符’\0’的ASCII码为0
2.对于字符数组str1,关系表达式str1[i]!
=’\0’与str1[i]!
=0是否等价?
等价。
(6)子函数的功能是将十进制数转换成二进制数。
在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。
{inty,n,j,a[8];
y;
n=
(2);
for(j=(3);
j>
=0;
j--)
a[j];
intzh(inta[],intx)
{inti;
do
{a[i]=(4);
i++;
x=x/2;
}
while(x>
=1);
(5);
参考答案
(1)intzh(int[],int)
(2)zh(a,y)(3)n-1(4)x%2(5)returni
(一)编写程序
1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。
程序如下:
#include<
{inta[50],n,min,max,b,i;
输入数据个数:
scanf("
&
n);
输入数据:
n;
a[i]);
max=0;
min=0;
for(i=1;
{if(a[i]>
a[max])
max=i;
if(a[i]<
a[min])
min=i;
}
b=a[0];
a[0]=a[min];
a[min]=b;
b=a[n-1];
a[n-1]=a[max];
a[max]=b;
printf("
%5d"
a[i]);
2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。
{intn,i,b;
floata[50],x,s=0;
输入实数:
n=0;
x;
0)
{a[n]=x;
n++;
s+=a[i];
s/=n;
b=0;
=s)
b++;
大于等于平均值的实数个数:
b;
3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。
{intn,i,a[50];
=100;
if(i%7==0||i%11==0)
{a[n]=i;
n++;
{if(i%10==0)printf("
\n"
4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。
{inta[50],i,x,n;
输入数列:
a[n];
while(a[n]!
=0)
{n++;
输入要查找的数:
if(x==a[i])
{cout<
x<
在数列中,是第"
i+1<
个数."
break;
if(i==n)
不在数列中."
5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。
方法一:
{inta[50],n,x,i,j;
a[n]);
输入要查的数:
x);
if(a[i]==x)
{for(j=i+1;
a[j-1]=a[j];
n--;
i--;
处理结果"
方法二:
{inta[50],b[50],n,x,i,j;
j=0;
if(a[i]!
=x)
{b[j]=a[i];
j++;
j;
b[i]);
6.将一个数组中的数循环右移,例如,数组中原来的数为:
12345,移动后变成51234。
{intt[10],i,k,n;
输入%d数据:
n);
t[i]);
k=t[n-1];
for(i=n-2;
i>
i--)
t[i+1]=t[i];
t[0]=k;
t[i]);
7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
{inta[11],i,j,m;
10;
=8;
for(j=i+1;
=9;
a[j])
{m=a[i];
a[i]=a[j];
a[j]=m;
输入要插入的数:
m);
if(m>
a[i])break;
for(j=9;
=i;
j--)
a[j+1]=a[j];
a[i]=m;
8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。
{inta[50],gs,m,i,j,n,w,b,s;
s=0;
输入一组正整数,输入0或负数结束输入操作:
m;
while(m>
{gs=0;
=m;
if(m%i==0)gs++;
if(gs==2)
{a[n]=m;
s+=a[n];
n-1;
{w=i;
for(j=i+1;
if(a[w]<
a[j])w=j;
if(w!
=i)
{b=a[w];
a[w]=a[i];
a[i]=b;
素数之和:
s<
a[i]<
9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。
例如:
输入整数347,重新组合成的新整数为743。
要求:
程序能处理9位之内的任意正整数。
#include<
{inta[15],m1,m2,n,i,j;
输入一个正整数"
m1;
while(m1!
{a[n]=m1%10;
m1=m1/10;
{m1=a[i];
a[j]=m1;
m2=0;
m2=m2*10+a[i];
组合成的新数为:
m2;
10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。
{inta[2][3],b[2][3],i,j;
请输入第一个矩阵:
2;
3;
scanf("
a[i][j]);
请输入第二个矩阵:
b[i][j]);
a[i][j]+=b[i][j];
结果:
{printf("
%3d"
a[i][j]);
11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。
例如,一个3X3矩阵为:
123
456
789
其转置为:
147
258
369
其上三角部分:
56
9
其下三角部分:
1
45
{inta[3][3],i,j;
请输入矩阵:
原始矩阵为:
{printf("
\n其转置为:
a[j][i]);
\n其上三角部分为:
3*i;
j++)//输出空格
for(j=i;
//输出上三角元素
\n其下三角部分为:
12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。
{inta[3][4],i,j,wz;
4;
//寻找每行最大数及其位置
{wz=0;
for(j=1;
if(a[i][wz]<
a[i][j])wz=j;
第%d行最大数:
%d,在第%d列\n"
i+1,a[i][wz],wz+1);
//寻找每列最小数及其位置
if(a[wz][i]>
a[j][i])wz=j;
第%d列最小数:
%d,在第%d行\n"
i+1,a[wz][i],wz+1);
13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。
{inta[3][4],b[4][3],i,j;
b[j][i]=a[i][j];
转置为:
b[i][j]);
14.打印“魔方阵”。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为:
816
357
492
要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。
{inta[11][11],h,l,n,m;
请输入魔方的阶数(奇数):
h=1;
l=n/2+1;
//数据1放置的位置
a[h][l]=1;
for(m=2;
m<
=n*n;
m++)//在数组中放置数
{if(m%n==1)h++;
else
{h--;
l++;
if(h==0)h=n;
if(l==n+1)l=1;
a[h][l]=m;
for(h=1;
=n;
h++)
for(l=1;
l<
l++)
%4d"
a[h][l]);
15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。
{chart[50];
inttj[10]={0},i;
请输入数字字符组成的字串:
gets(t);
t[i]!
tj[t[i]-48]++;
\n字符%d的个数%d"
i,tj[i]);
16.将一个字符串中的字符按ASCII码从大到小的顺序排序。
{chart[50],c;
inti,j;
请输入字串:
t[j]!
if(t[i]<
t[j])
{c=t[i];
t[i]=t[j];
t[j]=c;
puts("
排序结果:
puts(t);
string.h>
inti,j,l;
l=strlen(t);
l-2;
17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。
{chart1[50],t2[50],c;
gets(t1);
t1[i]!
i++)//t1[i]!
=0和t1[i]!
等价
if(t1[i]%3!
{t2[j]=t1[i];
j++;
t2[j]='
t2[i]!
t2[j]!
if(t2[i]>
t2[j])
{c=t2[i];
t2[i]=t2[j];
t2[j]=c;
排序的新字串:
//和printf("
puts(t2);
18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。
inti,w,l,j;
输入字串1:
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北电力 大学 c+ 实验 指导 数组 应用 习题 参考答案