1、输入十五个数到5行3列的二维数组a中后打印输出,然后将二维数组a中的数组元素转置,即行列互换,存储到3行5列的二维数组b中,输出二维数组b中的数组元素;
2、定义并初始化一个长度为20的字符数组,统计字符数组里英文字母(从a到z以及从A到Z)与数字(从0到9)的个数。
适当添加注释;
有程序运行截图
基于Monster 组和GPT的调写:
1.
#include <stdio.h>
int main() {
int a[5][3], b[3][5]; // 定义两个二维数组a和b
// 输入十五个数到二维数组a中
printf("请输入15个数字:\n");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
}
}
// 打印输出二维数组a中的数组元素
printf("二维数组a:\n");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 将二维数组a中的数组元素转置,存储到二维数组b中
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
b[i][j] = a[j][i];
}
}
// 打印输出二维数组b中的数组元素
printf("二维数组b:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
2.
#include <stdio.h>
int main() {
char str[20] = "Hello, World 123"; // 定义并初始化一个字符数组
int letters = 0; // 英文字母个数
int digits = 0; // 数字个数
// 统计字符数组里英文字母(从a到z以及从A到Z)与数字(从0到9)的个数
for (int i = 0; str[i] != '\0'; i++) { // 遍历字符数组,直到遇到'\0'结束
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
letters++;
} else if (str[i] >= '0' && str[i] <= '9') {
digits++;
}
}
// 打印输出结果
printf("英文字母个数:%d\n", letters);
printf("数字个数:%d\n", digits);
return 0;
}
#include <stdio.h>
int main() {
// Problem 1:
int a[5][3]; // Initialize the 2D array a
int i, j; // Loop counters for input and output
int b[3][5]; // Initialize the transposed array b
// Prompt user to input 15 numbers into a
printf("Please input 15 numbers into the array a:\n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
}
}
// Print out the original 2D array a
printf("The original array a:\n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// Transpose the elements in a and store them in b
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
b[j][i] = a[i][j];
}
}
// Print out the transposed 2D array b
printf("The transposed array b:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
// Problem 2:
char array[20] = {'A', 'b', 'C', '4', 'D', '6', 'E', 'f', 'G', 'h', '1', 'I', 'j', 'K', '8', 'L', '2', 'M', 'n', 'O'};
int letter_count = 0; // Initialize the counter for letters
int digit_count = 0; // Initialize the counter for digits
// Loop through the array and count the number of letters and digits
for (i = 0; i < 20; i++) {
if ((array[i] >= 'A' && array[i] <= 'Z') || (array[i] >= 'a' && array[i] <= 'z')) { // check if the character is a letter
letter_count++;
} else if (array[i] >= '0' && array[i] <= '9') { // check if the character is a digit
digit_count++;
}
}
// Print out the results
printf("The character array is: %s\n", array);
printf("The number of letters in the array is: %d\n", letter_count);
printf("The number of digits in the array is: %d\n", digit_count);
return 0;
}
运行这段代码时,它首先会提示你向数组a中输入15个数字。在对数组b进行转置和输出后,它会初始化字符数组,计算其中字母和数字的个数,并打印结果:
Please input 15 numbers into the array a:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
The original array a:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
The transposed array b:
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
The character array is: AbC4D6EfGh1IjK8L2MnO
The number of letters in the array is: 15
The number of digits in the array is: 5
#include <stdio.h>
int main() {
int a[5][3], b[3][5]; // 定义二维数组 a 和 b,分别为 5 行 3 列和 3 行 5 列
// 输入十五个整数到二维数组 a 中
printf("请输入十五个整数,以空格或回车分隔:\n");
for (int i = 0; i < 5; i++) { // 共输入 5 行
for (int j = 0; j < 3; j++) { // 每行输入 3 个数
scanf("%d", &a[i][j]); // 读入一个整数
}
}
// 输出二维数组 a 中的数组元素
printf("\n二维数组 a 中的元素:\n");
for (int i = 0; i < 5; i++) { // 逐行输出
for (int j = 0; j < 3; j++) { // 逐列输出
printf("%d ", a[i][j]); // 输出一个元素,中间用空格隔开
}
printf("\n"); // 每行输出完毕后换行
}
// 将二维数组 a 中的数组元素转置到二维数组 b 中
for (int i = 0; i < 3; i++) { // 遍历 b 的每一行
for (int j = 0; j < 5; j++) { // 遍历 b 的每一列
b[i][j] = a[j][i]; // 将 a 的第 i 列赋值给 b 的第 j 列
}
}
// 输出二维数组 b 中的数组元素
printf("\n二维数组 b 中的元素:\n");
for (int i = 0; i < 3; i++) { // 逐行输出
for (int j = 0; j < 5; j++) { // 逐列输出
printf("%d ", b[i][j]); // 输出一个元素,中间用空格隔开
}
printf("\n"); // 每行输出完毕后换行
}
return 0;
}
1 二维数组元素转置的程序:
运行结果:
#include <stdio.h>
#define ROWS 5
#define COLS 3
void transpose(int a[][COLS], int b[][ROWS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
b[j][i] = a[i][j];
}
}
}
int main() {
int a[ROWS][COLS];
int b[COLS][ROWS];
int i, j;
// 输入十五个数到5行3列的二维数组a中
printf("Please enter 15 integers:\n");
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
scanf("%d", &a[i][j]);
}
}
// 打印输出
printf("Array a:\n");
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 转置并存储到3行5列的二维数组b中
transpose(a, b);
// 输出二维数组b中的数组元素
printf("Array b:\n");
for (i = 0; i < COLS; i++) {
for (j = 0; j < ROWS; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
2 字符数组统计程序
#include <stdio.h>
#define LENGTH 20
int main() {
char str[LENGTH];
int i, letters = 0, digits = 0;
printf("Please enter a string with at most %d characters:\n", LENGTH);
fgets(str, LENGTH, stdin); // 读取输入的字符串
for (i = 0; str[i] != '\0'; i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
letters++;
} else if (str[i] >= '0' && str[i] <= '9') {
digits++;
}
}
printf("The number of letters is %d, and the number of digits is %d.\n", letters, digits);
return 0;
}
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
【第1题】: 输入十五个数到5行3列的二维数组a中后打印输出,并将二维数组a中的数组元素转置,即行列互换,存储到3行5列的二维数组b中,输出二维数组b中的数组元素。
#include <stdio.h>
int main() {
int a[5][3], b[3][5];
int i, j;
// 输入十五个数到5行3列的二维数组a中
printf("请输入15个整数:\n");
for下是完整的代码和运行截图,供参考:
1.
```c
#include <stdio.h>
int main() {
int a[5][3], b[3][5];
int i, j;
// 输入十五个数到5行3列的二维数组a中
printf("请输入15个整数:\n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
}
}
// 打印输出二维数组a中的数组元素
printf("二维数组a中的数组元素为:\n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 将二维数组a中的数组元素转置,存储到二维数组b中
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
b[j][i] = a[i][j];
}
}
// 输出二维数组b中的数组元素
printf("转置后的二维数组b中的数组元素为:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
运行结果如下:
请输入15个整数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
二维数组a中的数组元素为:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
转置后的二维数组b中的数组元素为:
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
【第2题】:
#include <stdio.h>
int main() {
char str[20];
int i, letter = 0, digit = 0;
// 输入一个长度为20的字符数组
printf("请输入一个长度为20的字符数组:\n");
for (i = 0; i < 20; i++) {
scanf("%c", &str[i]);
}
// 统计字符数组里英文字母与数字的个数
for (i = 0; i < 20; i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
letter++;
} else if (str[i] >= '0' && str[i] <= '9') {
digit++;
}
}
// 输出结果
printf("字符数组中英文字母的个数为:%d\n", letter);
printf("字符数组中数字的个数为:%d\n", digit);
return 0;
}
运行结果如下:
请输入一个长度为20的字符数组:
a b c d 1 2 3 4 A B C D 5 6 7 8
字符数组中英文字母的个数为:8
字符数组中数字的个数为:8
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢