c语言二维数组转置蓝桥杯c 试题及答案
蓝桥杯是中国著名的计算机竞赛,由中国计算机学会主办,每年举办一次。其中,C语言组是比赛的一个重要环节,考察选手对于C语言程序设计的理解和应用能力。以下是蓝桥杯C语言组试题及答案的整理,供参赛选手参考和学习。
第一题:素数
题目描述:
请编写一个程序,计算给定范围内的素数个数,并输出结果。
输入:
输入两个正整数n和m(1 <= n, m <= 1000,n <= m),表示要计算的范围。
输出:
输出一个整数,表示该范围内的素数个数。
样例输入:
2 10
样例输出:
4
解题思路:
素数是指只能被1和自身整除的整数,根据这个定义,我们可以使用一个循环来判断每个数是否为素数。具体实现时,首先需要判断一个数n是否为素数,可以从2开始将n除以每个数,若能整除则说明n不是素数;反之,则n是素数。将这个判断的逻辑封装成一个函数,然后在给定的范围内遍历每个数,统计出素数的个数即可。
代码实现:
```c
#include <stdio.h>
int isPrime(int n) {
    if (n <= 1) {
        return 0;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}
int countPrimes(int n, int m) {
    int count = 0;
    for (int i = n; i <= m; i++) {
        if (isPrime(i)) {
            count++;
        }
    }
    return count;
}
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int result = countPrimes(n, m);
    printf("%d\n", result);
    return 0;
}
```
参考答案如上所示,该程序通过调用判断素数的函数,并在给定范围内进行循环判断,最终输出结果。
第二题:矩阵转置
题目描述:
请编写一个程序,将一个M x N的矩阵转置为一个N x M的矩阵,并输出结果。
输入:
输入两个正整数M和N(1 <= M, N <= 10),分别表示矩阵的行数和列数。
接下来输入一个M x N的矩阵。
输出:
输出一个N x M的矩阵,表示转置后的结果。
样例输入:
2 3
1 2 3
4 5 6
样例输出:
1 4
2 5
3 6
解题思路:
要将一个矩阵转置,即行变列,列变行。因此,我们可以通过一个二维数组来存储原始矩阵,并创建一个新的二维数组来存储转置后的矩阵。具体实现时,我们需要使用两个循环,分别遍历原始矩阵的行和列,然后将对应位置的元素交换到转置矩阵对应位置即可。
代码实现:
```c
#include <stdio.h>
void transposeMatrix(int matrix[][10], int m, int n) {
    int transposed[10][10];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            transposed[i][j] = matrix[j][i];
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", transposed[i][j]);
        }
        printf("\n");
    }
}
int main() {
    int m, n;
    scanf("%d %d", &m, &n);