输入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博客