20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises16
P749

/*
编写一程序P749.C实现以下功能
用键盘输入的整数产生5*5矩阵N,并按行输出该矩阵,每个元素占4个数位、右对齐。
编程可用素材:
printf("Please input an integer: ");
程序的运行效果应类似地如图1和图2所示,图1中的5和图2中的7是从键盘输入的内容。
Please input an integer: 5
5 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12
9 10 11 12 13
图1 程序运行效果示例
Please input an integer: 7
7 8 9 10 11
8 9 10 11 12
9 10 11 12 13
10 11 12 13 14
11 12 13 14 15
图2 程序运行效果示例
*/
#include <stdio.h>
#define N 5
int main(void)
{
int arr[N][N];
int i, j;
int data;
printf("Please input an integer: ");
scanf("%d", &data);
// 构造
for ( i = 0; i < N; i++)
{
for ( j = 0; j < N; j++)
{
arr[i][j] = data + i + j;
}
}
printf("\n");
// 输出
// 按行输出该矩阵,每个元素占4个数位、右对齐
for ( i = 0; i < N; i++)
{
for ( j = 0; j < N; j++)
{
printf("%4d", arr[i][j]);
}
printf("\n");
}
return 0;
}
P234

#include <stdio.h>
#define N 20
int main(void)
{
int m;
int i, j;
int arr[N][N];
int sum = 0;
printf("Please input m: ");
scanf("%d", &m);
printf("\nPlease input array:\n");
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
if(i==0 || i==m-1)
{
sum += arr[i][j];
}
}
}
printf("\nSum = %d\n",sum);
return 0;
}
p235

/*
编写一程序P235.C实现以下功能
求任意的一个m×m矩阵的第0列和最后一列所有数之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:
printf("Please input m: ");
printf("\nPlease input array:\n");
printf("\nSum = …\n"…);
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Please input m: 5
Please input array:
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 32225
Sum = 37741
图1 程序运行效果示例
*/
#include <stdio.h>
#define N 20
int main(void)
{
int m;
int i, j;
int arr[N][N];
int sum = 0; // 第0列和最后一列所有数之和
printf("Please input m: ");
scanf("%d", &m);
// 矩阵元素从键盘输入
printf("\nPlease input array:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 求和:第0行和最后一行所有数之和
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
if (j == 0 || j == m - 1) // 判断是第0列或最后一列
{
sum += arr[i][j];
}
}
}
// 输出
printf("\nSum = %d\n", sum);
return 0;
}
P732

/*
编写一程序P732.C实现以下功能
输入3行3列的矩阵,输出所有元素的累加和。
编程可用素材:
printf("Please input the 3x3 Matrix:\n");
printf("\nsum=…\n"…);
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Please input the 3x3 Matrix:
9 20 13
16 51 79
32 8 6
sum=234
图1 程序运行效果示例
*/
#include <stdio.h>
int main(void)
{
int arr[3][3];
int i, j;
int sum = 0;
printf("Please input the 3x3 Matrix:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
sum += arr[i][j];
}
}
printf("\nsum=%d\n", sum);
return 0;
}
P218

/*
编写一程序P218.C实现以下功能
求任意的一个m×m矩阵的周边元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。
编程可用素材:
printf("Please input m: ");
printf("Please input array:\n");
printf("\nsum=…\n"…);
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Please input m: 5
Please input array:
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 25
sum=14944
图1 程序运行效果示例
*/
#include <stdio.h>
#define N 20
int main(void)
{
int i, j;
int sum = 0;
int arr[N][N];
int m;
printf("Please input m: ");
scanf("%d", &m);
printf("Please input array:\n");
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 周边元素之和
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
if(i==0 || i==m-1 ||j==0 ||j==m-1)
{
sum += arr[i][j];
}
}
}
// 输出
printf("\nsum=%d\n", sum);
return 0;
}
P217

/*
编写一程序P217.C实现以下功能
求任意的一个m×m矩阵的对角线上元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。
编程可用素材:
printf("Please input m: ");
printf("Please input array:\n");
printf("\nsum=…\n"…);
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Please input m: 5
Please input array:
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 25
sum=56339
图1 程序运行效果示例
*/
#include <stdio.h>
#define N 20
int main(void)
{
int i, j;
int sum = 0;
int m;
int arr[N][N];
printf("Please input m: ");
scanf("%d", &m);
printf("Please input array:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 对角线上元素之和
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
if (i == j || i == m - 1 - j) // 判断是否为对角线上的元素
{
sum += arr[i][j];
}
}
}
// 输出
printf("\nsum=%d\n", sum);
return 0;
}