2021-12-06 自动化专业C语言上机作业参考答案13
2021-12-06 自动化专业C语言上机作业参考答案13
·
上机练习13
p216.c
/*
编写一程序P216.C实现以下功能
求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:
printf("Please input m: ");
printf("\nPlease input array:\n");
printf("\nmax=…,i=…,j=…\n"…;
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, max, row, col;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("\nPlease input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
max = arr[0][0];
row = col = 0;
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (arr[i][j] > max)
{
max = arr[i][j];
row = i;
col = j;
}
}
}
//output
printf("\nmax=%d,i=%d,j=%d\n", max, row, col);
return 0;
}
p217.c
/*
编写一程序P217.C实现以下功能
求任意的一个m×m矩阵的对角线上元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。
编程可用素材:printf("Please input m: ")、printf("Please input array:\n")、printf("\nsum=…\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("Please input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 注意,对角线有两根i==j和i+j==data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (i == j || i + j == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nsum=%d\n", sum);
return 0;
}
p218.c
/*
编写一程序P218.C实现以下功能
求任意的一个m×m矩阵的周边元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。
编程可用素材:printf("Please input m: ")、printf("Please input array:\n")、printf("\nsum=…\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("Please input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 周边:i=0,j=0,i=data-1,j=data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (i == 0 || j == 0 || i == data - 1 || j == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nsum=%d\n", sum);
return 0;
}
p234.c
/*
编写一程序P234.C实现以下功能
求任意的一个m×m矩阵的第0行和最后一行所有数之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:printf("Please input m: ")、printf("\nPlease input array:\n")、printf("\nSum = …\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("\nPlease input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 0行,最后一行:i=0 i=data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (i == 0 || i == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nSum = %d\n", sum);
return 0;
}
p235.c
/*
编写一程序P235.C实现以下功能
求任意的一个m×m矩阵的第0列和最后一列所有数之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:printf("Please input m: ")、printf("\nPlease input array:\n")、printf("\nSum = …\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("\nPlease input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 周边:i=0 i=data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (j == 0 || j == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nsum=%d\n", sum);
return 0;
}
p236.c
/*
编写一程序P236.C实现以下功能
求任意的一个m×m矩阵的第0行、第2行和最后一行所有数之和,m(4<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:printf("Please input m: ")、printf("\nPlease input array:\n")、printf("\nSum = …\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("\nPlease input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 周边:i=0 i=data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (i == 0 || i == 2 || i == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nsum=%d\n", sum);
return 0;
}
p237.c
/*
编写一程序P237.C实现以下功能
求任意的一个m×m矩阵的第0列、第2列和最后一列所有数之和,m(4<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:printf("Please input m: ")、printf("\nPlease input array:\n")、printf("\nSum = …\n"…。
*/
#include <stdio.h>
#define M 20
int main(void)
{
int arr[M][M];
int data;
int i, j, sum = 0;
//input
printf("Please input m: ");
scanf("%d", &data);
printf("\nPlease input array:\n");
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
scanf("%d", &arr[i][j]);
}
}
//process
// 周边:i=0 i=data-1
for (i = 0; i < data; i++)
{
for (j = 0; j < data; j++)
{
if (j == 0 || j == 2 || j == data - 1)
{
sum += arr[i][j];
}
}
}
//output
printf("\nsum=%d\n", sum);
return 0;
}
p272.c
/*编写一程序P272.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计该行字符中出现的数字、小写字母、大写字母和其它字符的数量,
最后按示例格式输出这四类字符的数量及其内容。
编程可用素材:
printf("Please intput the string: ");
printf("\nDigistal string length = …, Digitals: …\n"…;
printf("azLetter string length = …, azLetters: …\n"…;
printf("AZLetter string length = …, AZLetters: …\n"…;
printf("Symbol string length = …, Symbols: …\n"…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N];
int i, len;
int ld, llaz, llAZ, ls;
char strd[N], straz[N], strAZ[N], strs[N];
// input
printf("Please intput the string: ");
gets(str);
len = strlen(str);
// process
ld = llaz = llAZ = ls = 0;
for (i = 0; i < len; i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
strd[ld++] = str[i];
}
else if (str[i] >= 'a' && str[i] <= 'z')
{
straz[llaz++] = str[i];
}
else if (str[i] >= 'A' && str[i] <= 'Z')
{
strAZ[llAZ++] = str[i];
}
else
{
strs[ls++] = str[i];
}
}
strd[ld] = '\0';
straz[llaz] = '\0';
strAZ[llAZ] = '\0';
strs[ls] = '\0';
// output
printf("\nDigistal string length = %d, Digitals: %s\n", ld, strd);
printf("azLetter string length = %d, azLetters: %s\n", llaz, straz);
printf("AZLetter string length = %d, AZLetters: %s\n", llAZ, strAZ);
printf("Symbol string length = %d, Symbols: %s\n", ls, strs);
return 0;
}
p274.c
/*
编写一程序P274.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计并显示该行字符中26个英文字母(不区分大小写)各自出现的次数,没有出现的字符不显示。
编程可用素材:printf("请输入一行字符:")、printf("统计结果为:\n")、printf("%c-%d\n"…。
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N];
int count[26] = {0};
int len, i;
// input
printf("请输入一行字符:");
gets(str);
len = strlen(str);
// process
for (i = 0; i < len; i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
count[str[i] - 32 - 'A']++;
}
else if (str[i] >= 'A' && str[i] <= 'Z')
{
count[str[i] - 'A']++;
}
}
//output
printf("统计结果为:\n");
for (i = 0; i < 26; i++)
{
if (count[i] != 0)
{
printf("%c-%d\n", 'A' + i, count[i]);
}
}
return 0;
}
p275.c
/*
编写一程序P275.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计并显示该行字符中10个数字字符各自出现的次数,没有出现的字符不显示。
编程可用素材:printf("请输入一行字符:")、printf("统计结果为:\n")、printf("%c-%d\n"…。
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N];
int count[10] = {0};
int len, i;
// input
printf("请输入一行字符:");
gets(str);
len = strlen(str);
// process
for (i = 0; i < len; i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
count[str[i] - '0']++;
}
}
//output
printf("统计结果为:\n");
for (i = 0; i < 10; i++)
{
if (count[i] != 0)
{
printf("%c-%d\n", '0' + i, count[i]);
}
}
return 0;
}
更多推荐
所有评论(0)