EDI许可证需要的网站怎么做,wordpress标签使用文章列表,微信营销平台有哪些,惠阳东莞网站建设第三讲 循环语句
1.偶数
编写一个程序#xff0c;输出 1 到 100之间#xff08;包括 1 和 100#xff09;的全部偶数。
输入格式
无输入。
输出格式
输出全部偶数#xff0c;每个偶数占一行。
输入样例
No input输出样例
2
4
6
...
100 参考代码:
#include i… 第三讲 循环语句
1.偶数
编写一个程序输出 1 到 100之间包括 1 和 100的全部偶数。
输入格式
无输入。
输出格式
输出全部偶数每个偶数占一行。
输入样例
No input输出样例
2
4
6
...
100 参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{for(int i1;i100;i){if(i%20) coutiendl;}return 0;
} 2.奇数
输入一个整数 X输出 1 到 X之间包括 1 和 X的全部奇数。
输入格式
一个整数 X。
输出格式
输出所有满足条件的奇数每个数占一行。
数据范围
1≤X≤1000
输入样例
8输出样例
1
3
5
7
参考代码: #include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{int x;cinx;for(int i1;ix;i){
//判断奇数是%2的结果不等于0if(i%2!0) coutiendl;}return 0;
} 3.正数
输入 6个实数它们要么是正数要么是负数。
请你统计并输出正数的个数。
输入格式
六个数字每个占一行。
输出格式
输出格式为 x positive numbers其中 x 为正数的个数。
数据范围
输入数字的绝对值不超过 100。
输入样例
7
-5
6
-3.4
4.6
12输出样例
4 positive numbers 参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{
//因为要从0统计0数的个数,所以s最开始定义 0;int s 0;for(int i0;i6;i){
//题目描述中输入可能是浮点数,所以直接输出浮点数float x;cinx;if(x0) s;}printf(%d positive numbers,s);return 0;
} 4.连续奇数的和1
给定两个整数 X 和 Y输出在他们之间不包括 X 和 Y的所有奇数的和。
输入格式
第一行输入 X第二行输入 Y。
输出格式
输出一个整数表示所有满足条件的奇数的和。
数据范围
−100≤X,Y≤100
输入样例1
6
-5输出样例1
5输入样例2
15
12输出样例2
13输入样例3
12
12输出样例3
0
参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{int x,y;cinxy;
//由于不知道x和y谁是最大值,所以在进行求和前先判断xy的大小,若xy则进行交换.if(xy){int t x;x y;y t;}int s 0;for(int i x1;iy;i){if(i%2!0) si;}coutsendl;return 0;
}
5.最大数和它的位置 给定 100 个整数请你找出其中最大的数字以及它的输入位置位置从 1 开始。
输入格式
共 100 行每行包含一个整数。
输出格式
第一行输出最大的数字。
第二行输出该数字的输入位置。
数据范围
1≤输入数字≤50000 保证输入数字互不相同。
输入样例
22229
48558
24992
4755
11923
...
20213输出样例
48558
2 参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{int a,b;for(int i1;i100;i){
//每次输入新的值后都进行对比是否比当前保存的最大值大,若大则更换.int x;cinx;if(xb){ai;b x;}}coutbendlaendl;return 0;
}
6.递增序列 读取一系列的整数 X对于每个 X输出一个 1,2,…,X 的序列。
输入格式
输入文件中包含若干个整数其中最后一个为 0其他的均为正整数。
每个整数占一行。
对于输入的正整数按题目要求作输出处理。
对于最后一行的整数 0不作任何处理。
输出格式
对于每个输入的正整数 X输出一个从 1 到 X 的递增序列每个序列占一行。
数据范围
1≤X≤100
输入样例
5
10
3
0输出样例
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3
参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{
//由于当读取到零0的时候停止,所以先设计死循环while(1),当读取到0时候break while
//每次输出一行后换行,所以再for循环结束后再换行.while(1){int x;cinx;if(x0) break;else{for(int i1;ix;i){couti ;}coutendl;}}return 0;
} 7.连续整数相加
读入两个整数值 A 和 N计算从 A 开始的 N 个连续整数的和。
注意如果读入的 N为 0 或负数则继续读取数字直至读入 N 值为正整数为止。
输入格式
共一行包含整数 A 和若干个整数 N不超过 100 个。
输出格式
一个整数表示从 A 开始的 N 个连续整数的和。
数据范围
1≤A≤100, −100≤N≤100
输入样例1
3 2输出样例1
7输入样例2
3 -1 0 -2 2输出样例2
7 参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int main()
{int a,b;cinab;
//因为b可能为0所以要一直输入知道b0停止.while(b0){cinb;}int s 0;
//相加从本身到本身后b个数(包含本身)for(int i0;ib;i){s (ai);}coutsendl;return 0;
}
8.约数 输入一个整数 N按照从小到大的顺序输出它的全部约数。
输入格式
一个整数 N。
输出格式
输出全部约数每个约数占一行。
数据范围
1≤N≤1000
输入样例
6输出样例
1
2
3
6 参考代码:
#include cstdio
int main()
{int n0;scanf(%d,n);
//约数就是n%i为0的数.for(int i1;in;i){if(n%i0) printf(%d\n,i);}return 0;
} 9.PUM
输入两个整数 N 和 M构造一个 N 行 M 列的数字矩阵矩阵中的数字从第一行到最后一行按从左到右的顺序依次为 1,2,3,…,N×M。
矩阵构造完成后将每行的最后一个数字变为 PUM。
输出最终矩阵。
输入格式
共一行包含两个整数 N 和 M。
输出格式
输出最终矩阵具体形式参照输出样例。
数据范围
1≤N,M≤20
输入样例
7 4输出样例
1 2 3 PUM
5 6 7 PUM
9 10 11 PUM
13 14 15 PUM
17 18 19 PUM
21 22 23 PUM
25 26 27 PUM参考代码:
#include cstdio
int main()
{int m,n;scanf(%d %d,m,n);int count1;
//for循环中第一个for循环确定行,第二个for循环确定列for(int i1;im;i){for(int j1;jn;j){if(count%n0) {count;printf(PUM\n); //每行以pum结尾所以记得换行.}else{printf(%d ,count);count;}}}return 0;
} 10.余数
输入一个整数 N请按顺序输出 11到 10000之间不包括 1 和 10000的所有除以 N余 2 的数字。
输入格式
一个整数 N。
输出格式
输出所有满足条件的数字从小到大每行输出一个。
数据范围
2N10000
输入样例
13输出样例
2
15
28
41
... 参考代码:
#include cstdio
int main()
{int x;scanf(%d,x);for(int i2;i10000;i){if(i%x2) printf(%d\n,i);}return 0;
} 11.六个奇数
读取一个整数 X输出 X之后的 6 个奇数如果 X 也是奇数那么它也算作 6个奇数之一。
输入格式
一个整数 X。
输出格式
所有满足条件的奇数每个占一行。
数据范围
1≤X≤100
输入样例
9输出样例
9
11
13
15
17
19 参考代码:
#include cstdio
int main()
{int x;scanf(%d,x);int count0;
//输入6个结束,所以count6for(int ix;count6;i){if(i%2!0) {count;printf(%d\n,i);}}return 0;
} 12.乘法表
输入一个整数 N输出 N的乘法表如下
1 x N N
2 x N 2N
...
10 x N 10N 输入格式
一个整数 N。
输出格式
输出 N的乘法表具体形式参照输出样例。
数据范围
1N1000
输入样例
140输出样例
1 x 140 140
2 x 140 280
3 x 140 420
4 x 140 560
5 x 140 700
6 x 140 840
7 x 140 980
8 x 140 1120
9 x 140 1260
10 x 140 1400 参考代码:
#include cstdio
int main()
{int x;scanf(%d,x);for(int i1;i10;i){printf(%d x %d %d\n,i,x,i*x);}return 0;
} 13.实验
医学部一共进行了 N 场动物实验。
共有三种小动物可用来实验分别是青蛙、老鼠和兔子。
每次实验都会选取其中一种动物来参与实验选取数量若干。
现在请你统计一下医学部一共用了多少小动物每种分别用了多少每种动物使用数量占总量的百分比分别是多少。
输入格式
第一行包含整数 N表示实验次数。
接下来 N 行每行包含一个整数 A表示一次实验使用的小动物的数量和一个字符 T表示一次实验使用的小动物的类型C 表示兔子(coney)R 表示老鼠(rat)F 表示青蛙(frog)。
输出格式
请你参照输出样例输出所用动物总数每种动物的数量以及每种动物所占百分比。
注意输出百分比时保留两位小数。
数据范围
1≤N≤100, 1≤A≤15
输入样例
10
10 C
6 R
15 F
5 C
14 R
9 C
6 R
8 F
5 C
14 R输出样例
Total: 92 animals
Total coneys: 29
Total rats: 40
Total frogs: 23
Percentage of coneys: 31.52 %
Percentage of rats: 43.48 %
Percentage of frogs: 25.00 %
参考代码:
#includeiostream
#includecstdio
using namespace std;
int main()
{int n;int a;char t;int sum0,sum10,sum20,sum30;//sum1表示兔子,sum2表示老鼠,sum3表示青蛙double s1,s2,s3;cinn;for(int i1;in;i){cinat;if(tC)sum1a;else if(tR)sum2a;elsesum3a;suma;}
//(double)表示将类型强制转换为double类型.s1(double)sum1/(double)sum*100;s2(double)sum2/(double)sum*100;s3(double)sum3/(double)sum*100;coutTotal: sum animalsendl;coutTotal coneys: sum1endl;coutTotal rats: sum2endl;coutTotal frogs: sum3endl;printf(Percentage of coneys: %.2lf %\n,s1);printf(Percentage of rats: %.2lf %\n,s2);printf(Percentage of frogs: %.2lf %\n,s3);return 0;
} 14.区间 2
读取 N 个整数 X1,X2,…,XN判断这 N 个整数中有多少个在 [10,20] 的范围内有多少个在范围外。
输入格式
第一行包含整数 N表示共有 N个整数需要进行判断。
接下来 N 行每行包含一个整数 Xi。
输出格式
第一行输出 x in其中 x为在范围内的整数的数量。
第二行输出 y out其中 y为在范围外的整数的数量。
数据范围
1≤N≤10000, −10^7Xi10^7
输入样例
4
14
123
10
-25输出样例
2 in
2 out 15.连续奇数的和 2
输入 N对整数对 X,Y对于每对 X,Y请你求出它们之间不包括 X 和 Y的所有奇数的和。
输入格式
第一行输入整数 N表示共有 N 对测试数据。
接下来 N行每行输入一组整数 X 和 Y。
输出格式
每对 X,Y 输出一个占一行的奇数和。
数据范围
1≤N≤100, −1000≤X,Y≤1000
输入样例
7
4 5
13 10
6 4
3 3
3 5
3 4
3 8输出样例
0
11
5
0
0
0
12 参考代码:
#include iostream
using namespace std;
int main()
{int n;scanf(%d,n);for(int i0l;in;i){int x,y;int sum0;scanf(%d %d,x,y);
//swap(x,y)交换函数,等于原来交换方法的三瓶子法.将x于y的值互换if(xy) swap(x,y);for(int jx1;jy;j){if(j%2!0) sumj;}printf(%d\n,sum);}return 0;
}
16.简单斐波那契
以下数列 0 1 1 2 3 5 8 13 21 ... 被称为斐波纳契数列。
这个数列从第 33 项开始每一项都等于前两项之和。
输入一个整数 N请你输出这个序列的前 N 项。
输入格式
一个整数 N。
输出格式
在一行中输出斐波那契数列的前 N 项数字之间用空格隔开。
数据范围
0N46
输入样例
5输出样例
0 1 1 2 3
参考代码:
#include iostream
#include cstring
#include algorithmusing namespace std;
int n;int main()
{cinn;
//本题的斐波那契以0为第一项,1为第二项.int a 0,b 1;for(int i0;in;i){printf(%d ,a);
//每次求出新的一项,a,b都往后平移int c a b;a b, b c;}return 0;
} 17.数字序列和它的和
输入若干个整数对 M,N对于每个数对输出以这两个数为最大值和最小值的公差为 1 的等差数列。
注意当输入整数对中任意一个数为 0 或负整数时立即停止输入且该组数对无需作任何处理。
输入格式
输入共若干行每行包含两个整数。
最后一行的两个整数中至少有一个是非正整数。
输出格式
对于每组需作处理的数对输出一个结果每个结果占一行。
结果包含从最小值到最大值的数字序列以及数字序列各数字之和。
具体格式请参照输出样例。
数据范围
M,N≤100
输入样例
2 5
6 3
5 0输出样例
2 3 4 5 Sum14
3 4 5 6 Sum18 参考代码:
#include iostream
using namespace std;
int main()
{int m1,n1;cinmn;while(m0n0){int sum0;
//判断mn大小,若mn则交换使得mnif(mn) swap(m,n);
//求m到n所有数的和包括m和nfor(int im;in;i){couti ;sumi;}coutSumsumendl;cinmn;}return 0;
} 18.完全数 一个整数除了本身以外的其他所有约数的和如果等于该数那么我们就称这个整数为完全数。
例如6 就是一个完全数因为它的除了本身以外的其他约数的和为 1236。
现在给定你 N 个整数请你依次判断这些数是否是完全数。
输入格式
第一行包含整数 N表示共有 N个测试用例。
接下来 N 行每行包含一个需要你进行判断的整数 X。
输出格式
每个测试用例输出一个结果每个结果占一行。
如果测试数据是完全数则输出 X is perfect其中 X 是测试数据。
如果测试数据不是完全数则输出 X is not perfect其中 X 是测试数据。
数据范围
1≤N≤100, 1≤X≤10^8
输入样例
3
6
5
28输出样例
6 is perfect
5 is not perfect
28 is perfect 参考代码:
#include iostream
using namespace std;
int main()
{int n0;cinn;for(int i0;in;i){
//因为本题的范围最大为10的8次方所以用long long类型.long long x0;cinx;long long sum0;for(int j1;j*jx;j){if(x%j0) {if(jx) sumj;if(x/j!j x/jx) sumx/j;}}if(sumx) printf(%lld is perfect\n,x);else printf(%lld is not perfect\n,x);}return 0;
} 19.质数
一个大于 1 的自然数如果除了 1 和它自身外不能被其他自然数整除则称该数为质数。
例如 7 就是一个质数因为它只能被 1 和 7 整除。
现在给定你 N 个大于 1 的自然数请你依次判断这些数是否是质数。
输入格式
第一行包含整数 N表示共有 N 个测试数据。
接下来 N行每行包含一个自然数 X。
输出格式
每个测试用例输出一个结果每个结果占一行。
如果测试数据是质数则输出 X is prime其中 X 是测试数据。
如果测试数据不是质数则输出 X is not prime其中 X是测试数据。
数据范围
1≤N≤100 1X≤10^7
输入样例
3
8
51
7输出样例
8 is not prime
51 is not prime
7 is prime
参考代码:
#include iostream
#include cmath
using namespace std;
int main()
{int n0;cinn;for(int j0;jn;j){int x; cinx;int i0;
//isqrt(x)也就是根号x,此方法更快速.for( i2;isqrt(x);i){if(x%i0) {printf(%d is not prime\n,x);
//当判断当前数为质数后就可以推出此for循环break;}}if(isqrt(x)) printf(%d is prime\n,x);}return 0;
} 20.菱形
输入一个奇数 n输出一个由 * 构成的 n阶实心菱形。
输入格式
一个奇数 n。
输出格式
输出一个由 * 构成的 n 阶实心菱形。
具体格式参照输出样例。
数据范围
1≤n≤99
输入样例
5输出样例 * ***
******** *
参考代码:
#include iostream
#include cmath
using namespace std;
int main()
{int n;cinn;
//本题可当作模板题,先背过int cxn/2,cyn/2;for(int i0;in;i){for(int j0;jn;j){
//abs()绝对值函数,最后结果全部为正数.if(abs(i-cx)abs(j-cy)n/2) cout*;else cout ;}coutendl;}return 0;
} 第四讲 数组
1.数组替换
输入一个长度为 1010 的整数数组 X[10]将里面的非正整数全部替换为 1输出替换完成后的数组。
输入格式
输入包含 10 个整数每个整数占一行。
输出格式
输出新数组中的所有元素每个元素占一行。
输出格式为 X[i] x其中 i为元素编号从 0 开始x 为元素的值。
数据范围
−100≤X[i]≤100
输入样例
10
-9
0
-4
-10
0
-2
-7
7
4输出样例
X[0] 10
X[1] 1
X[2] 1
X[3] 1
X[4] 1
X[5] 1
X[6] 1
X[7] 1
X[8] 7
X[9] 4
参考代码:
#include iostream
using namespace std;
int main()
{int a[10];for(int i0;i10;i){cina[i];if(a[i]0) a[i]1;printf(X[%d] %d\n,i,a[i]);}return 0;
} 2.数组填充
输入一个整数 V输出一个长度为 10 的数组 N数组中的第一个元素为 V每个后续元素的值都为上一个元素的值的 2 倍。
例如如果输入整数为 1则数组为1,2,4,8…
输入格式
输入一个整数 V。
输出格式
输出数组中的所有元素每个元素占一行。
输出格式为 N[i] x其中 i 为元素编号从 0 开始x 为元素的值。
数据范围
1≤V≤50
输入样例
1输出样例
N[0] 1
N[1] 2
N[2] 4
N[3] 8
N[4] 16
N[5] 32
N[6] 64
N[7] 128
N[8] 256
N[9] 512
参考代码:
#include iostream
#include cmath
using namespace std;
int main()
{int v;cinv;int a[10];
//每次输出2的i次方for(int i0;i10;i){
//pow(x,y)函数用来求x的y次方.a[i]v*pow(2,i);printf(N[%d] %d\n,i,a[i]);}return 0;
}
3.数组选择 输入一个长度为 100 的数组 A请你按顺序输出其中不大于 10的所有元素。
输入格式
输入 100 个数每个数占一行表示数组的所有元素的值。
每个数可能是整数也可能是浮点数。
输出格式
按顺序输出数组中的所有不大于 10 的元素每个元素占一行。
输出格式为 A[i] x其中 i 为元素编号x 为元素的值。
注意所有的 x 均保留一位小数。
数据范围
−100≤A[i]≤100
输入样例
0
-5
63
-8.5
...输出样例
A[0] 0.0
A[1] -5.0
A[3] -8.5
... 参考代码:
#include iostream
using namespace std;
int main()
{
//数组定义的时候尽量定义更多一些,防止空间不够用.double a[110];for(int i0;i100;i){cina[i];if(a[i]10) printf(A[%d] %.1lf\n,i,a[i]);}return 0;
}4.数组中的行 输入一个二维数组 M[12][12]根据输入的要求求出二维数组中某一行的元素的平均值或元素的和。
输入格式
第一行输入整数 L表示所求的具体行数行数从 0 开始计数。
第二行包含一个大写字母若为 S则表示需要求出第 L 行的元素的和若为 M则表示需要求出第 L行的元素的平均值。
接下来 1212 行每行包含 1212 个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或元素的和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
7
S
8.3 -9.4 -5.6 9.9 2.2 3.2 6.9 7.7 -2.9 -6.3 3.9 -1.4
-0.5 4.3 -0.3 2.3 0.7 -3.1 -6.3 5.7 -7.7 -3.7 9.7 3.8
5.8 -9.1 3.5 7.0 2.5 -2.3 6.9 2.7 5.8 -4.6 -7.8 4.3
-1.7 -8.9 -2.6 7.5 -9.6 6.4 -4.7 -8.0 0.6 6.7 -1.8 -0.4
-9.8 8.9 -3.8 -2.1 5.8 -9.4 1.3 6.3 -1.3 -6.3 -6.6 8.8
-6.3 -7.2 -6.3 -5.9 6.2 9.3 2.0 -4.3 2.7 3.6 -4.6 8.7
3.8 7.4 8.7 -2.8 6.0 -9.2 1.9 3.1 -7.2 -6.0 9.7 -8.4
-9.8 6.6 8.6 2.3 1.1 -2.9 6.6 -1.5 2.1 -5.1 6.4 -7.5
-0.6 -1.6 9.5 -6.6 3.0 3.4 -7.5 -7.9 3.1 2.0 1.7 -7.6
-9.0 9.4 6.6 -0.2 1.4 6.5 8.6 2.0 -1.3 0.2 4.0 -2.4
-7.3 -6.3 -8.6 -7.5 8.5 1.4 -3.3 7.1 0.8 3.3 3.0 0.1
3.3 9.0 1.7 5.2 -3.7 8.9 3.8 -7.4 -2.8 0.6 -2.4 7.1输出样例
6.9
参考代码:
#include iostream
using namespace std;
int main()
{int n;char s;cinns;double a[12][12];for(int i0;i12;i){for(int j0;j12;j){cina[i][j];}}double sum0;
//获得第n行的每列的数.for(int i0;i12;i){suma[n][i];}if(sM)printf(%.1lf\n,sum/12);else printf(%.1lf\n,sum);return 0;
}
5.数组的右上半部分 输入一个二维数组 M[12][12]根据输入的要求求出二维数组的右上半部分元素的平均值或元素的和。
右上半部分是指主对角线上方的部分如下图所示黄色部分为对角线绿色部分为右上半部分 输入格式
第一行输入一个大写字母若为 S则表示需要求出右上半部分的元素的和若为 M则表示需要求出右上半部分的元素的平均值。
接下来 12 行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或元素的和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
M
-6.5 8.2 0.7 9.0 0.8 -4.3 0.9 -0.0 -7.9 7.1 -1.6 4.6
-9.4 -9.0 1.5 -9.0 -5.1 -0.5 -2.8 -9.1 8.0 -6.9 -5.5 -6.6
-6.8 0.3 3.8 6.1 -9.9 -9.3 8.5 8.6 5.0 6.9 -3.6 -3.0
-0.8 -1.6 -7.3 -6.7 4.4 -9.1 -9.0 1.6 0.3 -6.0 6.0 -0.8
-0.8 -6.0 -4.9 -3.9 6.4 6.2 -4.2 -0.9 7.9 1.6 -8.2 -9.2
7.8 -5.8 -5.8 -5.8 7.2 0.5 -7.9 1.2 -6.8 -9.1 0.3 -1.4
4.3 -7.2 3.5 -6.4 -9.1 -6.0 3.5 -5.1 -5.6 -6.9 -9.1 -2.1
-7.6 -7.1 0.7 -1.7 5.0 -9.0 1.4 -6.2 7.6 4.8 -7.5 4.0
-0.2 0.3 -4.2 8.4 0.7 -6.4 -2.7 3.5 -0.9 3.7 0.9 -2.7
7.1 0.1 8.4 -5.1 -7.9 -0.5 -5.3 -5.7 -4.6 9.6 -8.3 7.0
9.6 -9.8 3.3 -9.9 -6.8 6.7 3.1 1.2 -9.5 -4.3 -1.7 -9.7
1.8 5.0 8.3 -0.7 -0.9 3.2 2.5 0.5 7.3 8.3 0.3 0.9输出样例
-1.2
参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];
//图中所有绿色部分都是行坐标大于列坐标(ij)if(ji) {count;suma[i][j];}}}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
} 6.数组的左上半部分
输入一个二维数组 M[12][12]根据输入的要求求出二维数组的左上半部分元素的平均值或元素的和。
左上半部分是指次对角线上方的部分如下图所示黄色部分为对角线绿色部分为左上半部分 输入格式
第一行输入一个大写字母若为 S则表示需要求出左上半部分的元素的和若为 M则表示需要求出左上半部分的元素的平均值。
接下来 1212 行每行包含 1212 个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
M
-0.4 -7.7 8.8 1.9 -9.1 -8.8 4.4 -8.8 0.5 -5.8 1.3 -8.0
-1.7 -4.6 -7.0 4.7 9.6 2.0 8.2 -6.4 2.2 2.3 7.3 -0.4
-8.1 4.0 -6.9 8.1 6.2 2.5 -0.2 -6.2 -1.5 9.4 -9.8 -3.5
-2.3 8.4 1.3 1.4 -7.7 1.3 -2.3 -0.1 -5.4 -7.6 2.5 -7.7
6.2 -1.5 -6.9 -3.9 -7.9 5.1 -8.8 9.0 -7.4 -3.9 -2.7 0.9
-6.8 0.8 -9.9 9.1 -3.7 -8.4 4.4 9.8 -6.3 -6.4 -3.7 2.8
-3.8 5.0 -4.6 2.0 4.0 9.2 -8.9 0.5 -3.9 6.5 -4.3 -9.9
-7.2 6.2 -1.2 4.1 -7.4 -4.6 4.7 -0.4 -2.2 -9.1 0.4 -5.8
9.1 -6.4 9.2 0.7 10.0 -5.7 -9.7 -4.4 4.7 4.7 4.9 2.1
-1.2 -6.2 -8.2 7.0 -5.3 4.9 5.5 7.2 3.4 3.2 -0.2 9.9
-6.9 -6.2 5.1 8.5 7.1 -0.8 -0.7 2.7 -6.0 4.2 -8.2 -9.8
-3.5 7.7 5.4 2.8 1.6 -1.0 6.1 7.7 -6.5 -8.3 -8.5 9.4输出样例
-0.8 参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];
//图中所有绿色部分行左坐标i列坐标j的值都小于11if(ji11) {count;suma[i][j];}}}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
} 7.数组的上方区域
输入一个二维数组 M[12][12]根据输入的要求求出二维数组的上方区域元素的平均值或元素的和。
数组的两条对角线将数组分为了上下左右四个部分如下图所示黄色部分为对角线绿色部分为上方区域 输入格式
第一行输入一个大写字母若为 S则表示需要求出上方区域的元素的和若为 M则表示需要求出上方区域的元素的平均值。
接下来 12行每行包含 12个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
输出结果与标准答案据对误差不超过 0.1即视为正确。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
-4.8 -8.0 -2.9 6.7 -7.0 2.6 6.5 1.7 1.9 5.6 -1.6 -6.3
-4.3 1.5 8.7 -0.3 5.4 -9.3 4.8 7.0 3.6 -8.3 -1.0 1.3
-9.9 9.7 -6.3 5.8 2.9 2.9 -7.7 4.9 -0.6 7.2 6.4 7.7
2.8 -5.8 -0.0 2.2 4.0 7.7 -3.0 -7.5 -3.5 9.7 -4.3 -8.6
-1.8 -0.1 5.4 0.6 9.9 -3.7 -1.1 0.8 -0.2 -0.0 9.9 4.5
3.0 -3.9 2.1 -9.7 5.5 9.4 -4.6 3.3 -9.6 5.1 -4.5 1.5
4.3 -5.4 -7.9 9.2 -7.7 -9.6 -1.5 -1.6 -7.2 2.0 -3.7 -0.7
8.0 2.8 -4.1 7.1 8.4 -5.6 3.9 -9.7 -1.1 3.0 -8.5 -3.3
1.7 5.1 0.1 9.2 4.5 9.7 7.2 8.6 8.7 1.1 6.7 0.3
-3.6 -7.1 -8.9 7.1 -5.9 1.6 -7.4 6.7 3.9 4.3 -2.4 -3.7
8.9 -6.2 5.0 -8.6 -1.3 -8.8 2.6 8.9 5.5 9.0 -2.2 -4.4
5.7 3.7 1.8 -2.1 -7.3 -7.9 4.7 6.0 3.3 -2.8 1.4 -6.9输出样例
21.7 参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i5;i){for(int j0;j12;j){cina[i][j];
//(i表示行,j表示列)图中所有绿色部分的列都大于行,且列小于11-行if(ji j11-i) {count;suma[i][j];}}}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
} 8. 数组的左方区域
输入一个二维数组 M[12][12]根据输入的要求求出二维数组的左方区域元素的平均值或元素的和。
数组的两条对角线将数组分为了上下左右四个部分如下图所示黄色部分为对角线绿色部分为左方区域 输入格式
第一行输入一个大写字母若为 S则表示需要求出左方区域的元素的和若为 M则表示需要求出左方区域的元素的平均值。
接下来 12 行每行包含 12个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
4.7 -3.3 -2.3 4.5 -7.0 8.7 -4.1 -3.0 -7.6 6.3 -6.6 -4.7
-7.2 9.3 -7.6 9.1 9.2 9.0 5.5 -7.5 -9.3 -1.6 -3.5 -4.2
0.5 -7.5 -8.3 -9.0 -6.4 3.8 0.1 -3.5 7.9 2.1 2.4 -6.2
7.0 5.7 -9.0 -5.8 1.6 2.6 -9.2 -6.2 4.6 8.2 -8.3 -1.4
3.8 -9.9 6.2 -2.5 -3.5 9.4 1.6 7.0 3.3 -0.5 6.7 6.0
1.6 -3.8 5.0 8.8 4.2 7.7 0.7 7.4 7.9 -5.9 4.4 3.3
3.7 6.2 6.7 -1.4 6.1 -6.0 8.5 9.1 5.7 -4.2 5.9 -3.5
5.0 0.3 2.2 -3.6 6.3 -10.0 9.5 -4.7 2.7 8.1 7.5 -8.4
-5.7 -0.3 -3.7 -3.3 7.7 9.3 -1.3 1.0 0.3 1.9 9.9 9.0
-7.4 1.3 -9.6 -3.6 2.2 3.4 -3.6 3.5 8.3 0.5 9.7 -6.8
1.0 -2.7 -1.5 5.4 -6.5 -3.7 5.6 8.0 -9.9 0.1 2.2 7.6
5.6 4.3 1.5 -0.8 5.8 -5.1 5.5 6.2 -5.8 8.8 -0.6 -2.3输出样例
13.3 参考代码:
#include cstdioint main()
{char t;scanf(%c, t);double q[12][12];for (int i 0; i 12; i )for (int j 0; j 12; j )scanf(%lf, q[i][j]);double s 0, c 0;
//先统计1-5行绿色格子for (int i 1; i 5; i )for (int j 0; j i - 1; j ){s q[i][j];c 1;}
//再统计6-10行绿色格子for (int i 6; i 10; i )for (int j 0; j 10 - i; j ){s q[i][j];c 1;}if (t S) printf(%.1lf\n, s);else printf(%.1lf\n, s / c);return 0;
}* 9.平方矩阵 I
输入整数 N输出一个 N 阶的回字形二维数组。
数组的最外层为 1次外层为 2以此类推。
输入格式
输入包含多行每行包含一个整数 N。
当输入行为 N0 时表示输入结束且该行无需作任何处理。
输出格式
对于每个输入整数 N输出一个满足要求的 N 阶二维数组。
每个数组占 N行每行包含 N 个用空格隔开的整数。
每个数组输出完毕后输出一个空行。
数据范围
0≤N≤100
输入样例
1
2
3
4
5
0输出样例
11 1
1 11 1 1
1 2 1
1 1 11 1 1 1
1 2 2 1
1 2 2 1
1 1 1 11 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1参考代码:
#include iostream
using namespace std;
int main()
{int n;while(cinn,n){for(int i1;in;i){for(int j1;jn;j){int upi,downn-i1,leftj,rightn-j1;coutmin(min(up,down),min(left,right)) ;}coutendl;}coutendl;}return 0;
}
10.数组变换
输入一个长度为 20 的整数数组 N将整个数组翻转使得第一个元素成为倒数第一个元素第二个元素成为倒数第二个元素…倒数第二个元素成为第二个元素倒数第一个元素成为第一个元素。
输出翻转后的数组。
输入格式
输入包含 20 个整数每个数占一行。
输出格式
输出新数组中的所有元素每个元素占一行。
输出格式为 N[i] x其中 i 为元素编号从 0 开始x为元素的值。
数据范围
−100≤N[i]≤100
输入样例
0
-5
...
63
23输出样例
N[0] 23
N[1] 63
...
N[18] -5
N[19] 0 参考代码:
#include iostream
#include algorithm
using namespace std;
int main()
{int a[20];for(int i0;i20;i){cina[i];}
//reverse(数组名,数组名要求逆置的长度)逆置函数,将reverse(12345)逆置-得到 54321reverse(a,a20);for(int i0;i20;i){printf(N[%d] %d\n,i,a[i]);}return 0;
} 11.斐波那契数列
输入整数 N求出斐波那契数列中的第 N 项是多少。
斐波那契数列的第 0 项是 0第 1 项是 1从第 2 项开始的每一项都等于前两项之和。
输入格式
第一行包含整数 T表示共有 T 个测试数据。
接下来 T 行每行包含一个整数 N。
输出格式
每个测试数据输出一个结果每个结果占一行
结果格式为 Fib(N) x其中 N 为项数x 为第 N 项的值。
数据范围
0≤N≤60
输入样例
3
0
4
2输出样例
Fib(0) 0
Fib(4) 3
Fib(2) 1 参考代码:
#include iostream
using namespace std;
int main()
{
//因为怕超出int范围所以定义long long类型数组long long a[61];int n0; cinn;for(int i0;in;i){int m; cinm;a[0]0;a[1]1;for(int i2;im;i){a[i]a[i-2]a[i-1];}printf(Fib(%d) %lld\n,m,a[m]);}return 0;
} 12. 最小数和它的位置
输入一个整数 N和一个长度为 N 的整数数组 X。
请你找到数组中最小的元素并输出它的值和下标。
注意如果有多个最小值则返回下标最小的那个。
输入格式
第一行包含整数 N。
第二行包含 N个用空格隔开的整数 X[i]。
输出格式
第一行输出 Minimum value: x其中 x为数组元素最小值。
第二行输出 Position: y其中 y 为最小值元素的下标下标从 0 开始计数。
数据范围
1N≤1000, −1000≤X[i]≤1000
输入样例
10
1 2 3 4 -5 6 7 8 9 10输出样例
Minimum value: -5
Position: 4 参考代码:
#include iostream
using namespace std;
int main()
{int n0;cinn;int a[n];int min1001;int index0;
//若最小值重复,返下标最小的等同于返回数组下标最靠前的那个最小值.for(int i0;in;i){cina[i];if(mina[i]) {mina[i];indexi;}}printf(Minimum value: %d\nPosition: %d,min,index);return 0;
} 13.数组中的列
输入一个二维数组 M[12][12]根据输入的要求求出二维数组中某一列的元素的平均值或元素的和。
输入格式
第一行输入整数 C表示所求的具体列数列数从 0 开始计数。
第二行包含一个大写字母若为 S则表示需要求出第 C 列的元素的和若为 M则表示需要求出第 C 列的元素的平均值。
接下来 12 行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或元素的和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
1
S
-9.0 -2.4 -3.3 2.4 -9.7 -5.7 -5.3 6.5 -7.3 4.8 -4.1 3.9
1.6 -0.9 9.2 -7.5 1.0 -8.0 -4.1 -4.0 -0.1 -9.0 8.4 4.9
-8.2 -0.3 -5.1 -5.6 6.6 0.9 -1.0 -5.4 -2.1 -4.5 -8.7 -1.1
-4.2 6.5 -8.2 3.6 -4.6 -9.2 -1.7 6.9 -9.0 -9.8 7.7 -3.4
-8.0 5.7 4.8 0.3 -1.4 2.8 -6.3 9.3 0.3 6.3 1.5 -1.7
1.7 -0.0 9.7 -6.6 1.3 -2.0 -6.1 2.0 -7.8 -4.7 -9.1 6.0
-8.2 -1.7 9.4 -1.2 -1.0 -9.0 -7.0 -6.9 -1.6 -6.8 -6.7 1.8
4.8 1.3 -6.1 -0.6 0.5 -2.9 -6.8 1.5 5.8 3.2 0.0 7.7
6.3 1.1 4.7 7.3 7.6 5.6 0.9 9.2 1.3 -4.9 7.8 -4.9
0.5 3.5 -5.0 9.0 8.8 8.7 7.5 7.5 -9.6 -6.9 -1.6 6.9
7.8 5.6 -6.4 3.6 2.3 0.5 4.1 6.1 8.6 -9.3 2.2 -0.4
9.9 0.9 6.4 -2.8 -4.2 -7.6 0.6 9.6 3.0 0.9 5.1 4.5输出样例
19.3 #include iostream
using namespace std;
int main()
{int n;char s;cinns;double a[12][12];double sum0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];
//变输出边判断如果是第c列,则加上c列所有行的元素.if(jn) suma[i][j];}}if(sM) printf(%.1lf,sum/12);else printf(%.1lf,sum);return 0;
} 14.数组的右下半部分
输入一个二维数组 M[12][12]根据输入的要求求出二维数组的右下半部分元素的平均值或元素的和。
右下半部分是指次对角线下方的部分如下图所示黄色部分为对角线绿色部分为右下半部分 输入格式
第一行输入一个大写字母若为 S则表示需要求出右下半部分的元素的和若为 M则表示需要求出右下半部分的元素的平均值。
接下来 12 行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1 行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
9.7 -4.9 6.1 -6.1 -9.6 1.0 -3.2 0.6 3.2 -9.8 4.9 1.2
-2.8 -5.3 2.8 -1.9 -5.4 7.5 -2.0 5.7 2.3 5.3 -7.5 8.9
6.0 4.3 3.8 -6.7 8.1 -0.5 7.8 -2.2 -1.0 4.0 -4.9 -9.4
5.4 3.7 -6.5 -3.9 -3.3 4.1 -2.5 -4.7 8.2 1.4 1.8 4.7
2.4 9.0 -4.3 9.6 8.6 -6.1 -7.4 8.6 5.6 0.5 -0.4 5.2
-5.2 2.9 -5.6 4.0 -0.2 3.8 -4.1 -1.6 -3.8 -3.1 -1.1 3.3
-9.4 -1.4 0.6 6.5 -4.3 -8.3 6.1 2.9 -5.2 2.5 9.8 -7.7
-2.9 -3.6 7.9 -5.8 -4.7 8.2 -6.2 1.0 7.4 -1.0 -4.4 -4.5
0.1 9.5 4.9 1.5 0.8 -8.2 0.4 9.5 -0.8 -0.9 9.7 -2.1
0.1 -7.6 7.8 -6.9 5.5 1.4 4.0 7.8 1.0 -1.2 9.7 -1.9
-4.6 2.3 -5.5 8.2 -4.8 -3.7 5.4 0.2 -2.4 -0.8 7.4 0.0
-0.1 8.2 0.8 -3.5 -7.6 -0.5 5.6 8.4 -8.6 0.9 9.0 -7.5输出样例
53.0 参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];
//绿色部分所有行坐标列坐标都12if(ij12) {suma[i][j];count;} }}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
}15.数组的左下半部分 输入一个二维数组 M[12][12]根据输入的要求求出二维数组的左下半部分元素的平均值或元素的和。
左下半部分是指主对角线下方的部分如下图所示黄色部分为对角线绿色部分为左下半部分 输入格式
第一行输入一个大写字母若为 S则表示需要求出左下半部分的元素的和若为 M则表示需要求出左下半部分的元素的平均值。
接下来 12行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1行的第 j1 个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
8.7 5.6 -2.0 -2.1 -7.9 -9.0 -6.4 1.7 2.9 -2.3 8.4 4.0
-7.3 -2.1 0.6 -9.8 9.6 5.6 -1.3 -3.8 -9.3 -8.0 -2.0 2.9
-4.9 -0.5 -5.5 -0.2 -4.4 -6.1 7.6 6.9 -8.0 6.8 9.1 -8.5
-1.3 5.5 4.6 6.6 8.1 7.9 -9.3 9.6 4.6 0.9 -3.5 -4.3
-7.0 -1.2 7.0 7.1 -5.7 7.8 -2.3 4.3 0.2 -0.4 -6.6 7.6
-3.2 -5.4 -4.7 4.7 3.6 8.8 5.1 -3.1 -2.9 2.8 -4.3 -1.4
-1.8 -3.3 -5.6 1.8 8.3 -0.5 2.0 -3.9 -1.0 -8.6 8.0 -3.3
-2.5 -9.8 9.2 -0.8 -9.4 -0.5 1.6 1.5 3.4 -0.1 7.0 -6.2
-1.0 4.9 2.2 -8.7 -0.9 4.8 2.3 2.0 -3.2 -7.5 -4.0 9.9
-1.1 -2.9 8.7 3.6 7.4 7.8 10.0 -9.0 1.6 8.3 6.3 -5.8
-9.9 0.6 2.0 -3.8 -6.3 0.6 7.3 3.8 -7.1 9.5 2.2 1.3
-2.8 -9.1 7.1 -0.2 0.6 -6.5 1.1 -0.1 -3.6 4.0 -5.4 1.1输出样例
-2.8
参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];
//绿色部分行坐标大于列坐标if(ij) {suma[i][j];count;} }}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
}
16.数组的下方区域
输入一个二维数组 M[12][12]根据输入的要求求出二维数组的下方区域元素的平均值或元素的和。
数组的两条对角线将数组分为了上下左右四个部分如下图所示黄色部分为对角线绿色部分为下方区域 输入格式
第一行输入一个大写字母若为 S则表示需要求出下方区域的元素的和若为 M则表示需要求出下方区域的元素的平均值。
接下来 12 行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1行的第 j1个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
-6.0 0.7 -8.4 -5.7 -4.1 7.6 9.5 -9.7 4.1 0.6 -6.5 -4.9
6.6 4.9 -3.1 5.3 0.3 -4.5 3.9 -1.5 6.6 7.0 5.1 2.5
-8.5 1.8 -2.7 0.1 -4.9 -7.2 4.3 6.0 -1.4 2.7 -3.0 2.0
4.8 -7.0 -1.3 0.8 1.0 4.5 -1.1 -2.9 -3.9 -3.9 -8.9 5.8
-2.1 -9.6 5.1 0.2 1.0 -1.7 6.4 4.1 2.8 -6.9 2.4 9.3
-6.0 -9.1 -7.0 -7.0 7.8 5.1 6.9 -7.6 0.4 -7.2 5.5 6.0
-1.9 5.5 1.9 -8.5 -5.3 2.3 -9.3 2.0 -0.2 1.2 5.6 -1.8
8.2 2.3 3.5 1.4 4.0 -5.1 -6.9 -2.8 1.7 -7.0 7.8 1.8
-6.0 -4.1 -4.6 -9.4 -4.9 -4.1 4.2 6.3 -2.8 8.7 8.1 -0.9
8.8 -6.5 -4.3 6.1 -6.2 -3.9 -7.0 7.3 5.0 -0.9 -0.0 5.6
-2.4 1.4 8.5 -2.2 0.9 5.3 3.6 8.8 -8.1 3.0 -3.1 6.5
-3.8 -6.4 2.3 4.2 -9.8 -0.3 -9.9 -7.4 3.5 1.5 -0.2 7.0输出样例
-11.9
参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];double sum0;int count0;for(int i0;i12;i){for(int j0;j12;j){cina[i][j];}}
//绿色部分7-11行,列起始为12-i(当前行),小于行-1;for(int i7;i11;i){for(int j12-i;ji-1;j){suma[i][j];count;}}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
}
17.数组的右方区域 输入一个二维数组 M[12][12]根据输入的要求求出二维数组的右方区域元素的平均值或元素的和。
数组的两条对角线将数组分为了上下左右四个部分如下图所示黄色部分为对角线绿色部分为右方区域 输入格式
第一行输入一个大写字母若为 S则表示需要求出右方区域的元素的和若为 M则表示需要求出右方区域的元素的平均值。
接下来 12行每行包含 12 个用空格隔开的浮点数表示这个二维数组其中第 i1行的第 j1个数表示数组元素 M[i][j]。
输出格式
输出一个数表示所求的平均数或和的值保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例
S
2.4 7.8 9.4 -5.6 6.9 -4.9 4.8 0.8 3.6 1.7 -1.4 9.7
-6.8 -3.7 -2.0 -4.9 -4.5 -5.3 6.1 7.5 -4.3 5.9 -9.5 9.7
-6.5 -0.4 1.6 3.7 -4.4 -3.3 1.9 7.7 -1.4 4.5 7.4 -3.0
-1.2 0.4 9.8 9.8 -4.3 -1.3 -1.6 0.5 2.8 -4.0 8.5 3.9
0.2 -2.0 -6.4 -9.8 3.7 -2.0 1.7 -3.6 -3.4 2.4 -1.2 -3.9
-8.3 5.8 -1.0 -4.4 1.0 -2.4 2.8 -4.6 2.1 8.7 -6.8 -8.3
6.3 -6.8 -7.0 9.3 -7.7 -1.7 8.2 -6.5 -1.8 6.7 8.2 4.4
0.4 8.6 -1.2 8.6 -4.6 1.8 9.6 1.6 2.0 -1.0 3.9 -9.2
7.5 -3.1 6.2 -4.5 -3.0 2.5 -7.7 2.9 0.3 3.3 -2.7 3.4
-5.0 3.0 -0.0 4.3 9.5 -0.0 -9.9 -8.6 -0.9 -5.5 7.7 6.5
4.9 -9.6 -2.9 8.5 2.0 -9.9 -4.9 -1.5 -2.4 -7.6 1.7 8.5
-6.4 6.8 -3.7 -4.7 0.2 5.8 -5.4 0.6 7.0 -4.2 -7.5 -2.4输出样例
40.9 参考代码:
#include iostream
using namespace std;
int main()
{char s;cins;double a[12][12];for(int i0;i12;i){for(int j0;j12;j){cina[i][j];}}double sum0; int count0;
//统计前五行,每行起始12-行数,小于等于11for(int i1;i5;i){for(int j12-i;j11;j){suma[i][j];count;}}
//统计后五行,每行起始行数1,小于等于11for(int i6;i10;i){for(int ji1;j11;j){suma[i][j];count;}}if(sM) printf(%.1lf,sum/count);else printf(%.1lf,sum);return 0;
}*18.平方矩阵 II
输入整数 N输出一个 N 阶的二维数组。
数组的形式参照样例。
输入格式
输入包含多行每行包含一个整数 N。
当输入行为 N0 时表示输入结束且该行无需作任何处理。
输出格式
对于每个输入整数 N输出一个满足要求的 N 阶二维数组。
每个数组占 N行每行包含 N 个用空格隔开的整数。
每个数组输出完毕后输出一个空行。
数据范围
0≤N≤100
输入样例
1
2
3
4
5
0输出样例
11 2
2 11 2 3
2 1 2
3 2 11 2 3 4
2 1 2 3
3 2 1 2
4 3 2 11 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1 参考代码:
#include iostream
#include cmath
using namespace std;
int main()
{int n;while(cinn,n){for(int i1;in;i){for(int j1;jn;j){coutabs(i-j)1 ; }coutendl;}coutendl;}return 0;
}
*19.平方矩阵 III
输入整数 N输出一个 N 阶的二维数组 M。
这个 N 阶二维数组满足 M[i][j]2ij。
具体形式可参考样例。
输入格式
输入包含多行每行包含一个整数 N。
当输入行为 N0 时表示输入结束且该行无需作任何处理。
输出格式
对于每个输入整数 N输出一个满足要求的 N 阶二维数组。
每个数组占 N 行每行包含 N 个用空格隔开的整数。
每个数组输出完毕后输出一个空行。
数据范围
0≤N≤15
输入样例
1
2
3
4
5
0输出样例
11 2
2 41 2 4
2 4 8
4 8 161 2 4 8
2 4 8 16
4 8 16 32
8 16 32 641 2 4 8 16
2 4 8 16 32
4 8 16 32 64
8 16 32 64 128
16 32 64 128 256参考代码:
#include iostream
#include cstdiousing namespace std;int main()
{int n;while (cin n, n){for (int i 0; i n; i ){for (int j 0; j n; j ){int v 1;for (int k 0; k i j; k ) v * 2;cout v ;}cout endl;}cout endl;}return 0;
}*20.蛇形矩阵
输入两个整数 n 和 m输出一个 n 行 m列的矩阵将数字 1 到 n×m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行包含两个整数 n和 m。
输出格式
输出满足要求的矩阵。
矩阵占 n 行每行包含 m 个空格隔开的整数。
数据范围
1≤n,m≤100
输入样例
3 3输出样例
1 2 3
8 9 4
7 6 5 参考代码:
#include iostream
using namespace std;
int s[100][100];
int main()
{int n,m;cinnm;int dx[] {0,1,0,-1},dy[] {1,0,-1,0};for(int x0,y0,d0,k1;km*n;k){s[x][y]k;int axdx[d],bydy[d];if(a0 || an || b0 || bm || s[a][b]){d(d1)%4;axdx[d],bydy[d];}xa,yb;}for(int i0;in;i){for(int j0;jm;j) couts[i][j] ;coutendl;}return 0;
}