输入12个一位整数,创建二维数组a[3][4],显示二维数组及各列的平均值,平均值四舍五入到小数点后一位。
题干 | 输入12个一位整数,创建二维数组a[3][4],显示二维数组及各列的平均值,平均值四舍五入到小数点后一位。 | ||
输入样例 | 1 2 3 4 5 6 7 8 9 2 2 5 | ||
输出样例 | 1*2*3*4* 5*6*7*8* 9*2*2*5* 5.0*3.3*4.0*5.7* |
#include<stdio.h>
int main() {int i, j, a[3][4], s[4] = { 0 };for (i = 0; i < 3; i++) {for (j = 0; j < 4; j++) {scanf("%d", &a[i][j]);}}for (i = 0; i < 3; i++) {for (j = 0; j < 4; j++) {printf("%d*", a[i][j]);s[j] += a[i][j];}printf("\n");}for (j = 0; j <= 3; j++) {printf("%.1lf*", s[j]/3.0);}return 0;
}
输入一个二维数组 M[12][12],根据输入要求,求出二维数组左上绿色部分元素的平均值或和。 |
#include<stdio.h>
int main() {char c;scanf("%c", &c);int i, j,n=0;double M[12][12], s = 0;for (i = 0; i < 12; i++) {for (j = 0; j < 12; j++) {scanf("%lf", &M[i][j]);if (i + j <= 10) {s += M[i][j];n++;}}}if (c == 'S') {printf("%.1lf\n", s);}else {printf("%.1lf\n", s / n);}return 0;
}
#include<stdio.h>
int main() {char c;scanf("%c", &c);int i, j, n = 0;double M[12][12], s = 0;for (i = 0; i < 12; i++) {for (j = 0; j < 12; j++) {scanf("%lf", &M[i][j]);if (j - i >= 1) {s += M[i][j];n++;}}}if (c == 'S') {printf("%.1lf\n", s);}else {printf("%.1lf\n", s / n);}return 0;
}
输入若干个整数 N(0≤N≤9),输出如下各 N 阶方阵。当输入N=0 时输入结束。
若输入5显示如下方阵:
* 1** 2** 4** 8** 16*
* 2** 4** 8** 16** 32*
* 4** 8** 16** 32** 64*
* 8** 16** 32** 64** 128*
* 16** 32** 64** 128** 256*
题干 | 输入若干个整数 N(0≤N≤9),输出如下各 N 阶方阵。当输入N=0 时输入结束。 若输入5显示如下方阵: * 1** 2** 4** 8** 16* * 2** 4** 8** 16** 32* * 4** 8** 16** 32** 64* * 8** 16** 32** 64** 128* * 16** 32** 64** 128** 256* | ||
输入样例 | 9 6 0 | ||
输出样例 | * 1** 2** 4** 8** 16** 32** 64** 128** 256* * 2** 4** 8** 16** 32** 64** 128** 256** 512* * 4** 8** 16** 32** 64** 128** 256** 512** 1024* * 8** 16** 32** 64** 128** 256** 512** 1024** 2048* * 16** 32** 64** 128** 256** 512** 1024** 2048** 4096* * 32** 64** 128** 256** 512** 1024** 2048** 4096** 8192* * 64** 128** 256** 512** 1024** 2048** 4096** 8192**16384* * 128** 256** 512** 1024** 2048** 4096** 8192**16384**32768* * 256** 512** 1024** 2048** 4096** 8192**16384**32768**65536* * 1** 2** 4** 8** 16** 32* * 2** 4** 8** 16** 32** 64* * 4** 8** 16** 32** 64** 128* * 8** 16** 32** 64** 128** 256* * 16** 32** 64** 128** 256** 512* * 32** 64** 128** 256** 512** 1024* |
#include<stdio.h>
int main() {int n, i, j, s, t;while (scanf("%d", &n), n) {t = 1;for (i = 1; i <= n; i++) {s = 1;for (j = 1; j <= n; j++) {printf("*%5d*", t * s);s *= 2;}t *= 2; printf("\n");}printf("\n");}return 0;
}
输入奇数 N(1≤N≤9),输出如下各 N 阶数字魔方。魔方各行各列及主次对角线的和相同。
若输入5显示如下方阵:
*17**24** 1** 8**15*
*23** 5** 7**14**16*
* 4** 6**13**20**22*
*10**12**19**21** 3*
*11**18**25** 2** 9*
题干 | 输入奇数 N(1≤N≤9),输出如下各 N 阶数字魔方。魔方各行各列及主次对角线的和相同。 若输入5显示如下方阵: *17**24** 1** 8**15* *23** 5** 7**14**16* * 4** 6**13**20**22* *10**12**19**21** 3* *11**18**25** 2** 9* | ||
输入样例 | 3 | ||
输出样例 | * 8** 1** 6* * 3** 5** 7* * 4** 9** 2* |
#include<stdio.h>
int main() {int a[9][9]={0},k, n, i, j, hang = 0, lie;scanf("%d", &n);lie = n / 2;for (k = 1; k <= n * n; k++) {a[hang][lie] = k;hang--, lie++;if (hang < 0 && lie>n - 1) {//上右越界hang += 2, lie--;}else if (hang < 0) {//上越界hang = n - 1;}else if (lie>n-1) {//右越界lie = 0;}else if (a[hang][lie]!=0) {//以有数hang += 2, lie--;}}for (i = 0; i < n; i++) {for (j = 0; j < n; j++) {printf("*%2d*", a[i][j]);}printf("\n");}return 0;
}
关于*%d和%*的区别:
(1) %*d
(仅它有意义:忽略掉它本身,并重新匹配:)
(2) %.*d
(仅它有意义:忽略%*d的下一个输入,并重新匹配)
详细见:
【C语言】的%*d、%.*s等详解:-CSDN博客