除去自身的最大因数 矩阵对角线互换

发布时间 2023-11-29 10:35:57作者: 鸢凛

7-2 除去自身的最大因数

输入一个整数,计算该整数除去自身的最大因数。

输入格式:

一个整数a。

输出格式:

一个整数,整数a除去自身的最大因数。

输入样例:

在这里给出一组输入。例如:

6

输出样例:

在这里给出相应的输出。例如:

3

解题思路:

  1.题目意思:输入一个数,找到它除自身之外的最大因数,如输入样例的6,它的因数有:1,2,3,6,其中6是它自身,所以我们需要的是将6剔除后剩下的最大的数字,即为3

  2.实现这个思路很简单,只需要进行循环判断,为了找到除自身外的最大因数,只需要在循环的时候不到达该数自身,即循环进行条件为i<n

  3.要判断一个数是否是输入数据n的因数,只需要判断n/该数的余数是否为零即可,循环判断下来,result最后记录的数即为我们需要的结果,将其输出即可

#include<stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    int result = 0;
    for(int i=1;i<n;i++){
        if(n%i==0){
            result = i;
        }
    }
    printf("%d",result);
    return 0;
}

7-3 矩阵对角线互换

本题目要求读入1个n×n的矩阵A,然后输出该矩阵正对角线与反对角线互换后的矩阵。具体过程如下图所示:

图片1.jpg

输入格式:

输入在一行中给出1个不超过1000的正整数n。

输出格式:

输出对角线互换后的矩阵。

输入样例:

3
16 5 7
30 2 3
-8 0 5

输出样例:

在这里给出相应的输出。例如:

7 5 16
30 2 3
5 0 -8

解题思路:

  1.实现矩阵对角线互换,节省时间的方法可以在读入的时候就进行变换,通过观察可知,矩阵的主对角线的坐标是i=j,次对角线是i=n-1-j

  2.因此可以根据这个规律,在读入时进行交换,将主对角线和次对角线交换

  3.最后使用两个循环嵌套将读入的已经交换好的数组输出即可

#include<stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    int matrix[n][n];
    for(int i=0;i<n;i++) {
        for (int j = 0; j < n; j++) {
            if(j==i){
                scanf("%d", &matrix[i][n-j-1]);
            }else if(j==n-i-1){
                scanf("%d",&matrix[i][n-j-1]);
            } else{
                scanf("%d",&matrix[i][j]);
            }
        }
    }
    for(int i=0;i<n;i++) {
        for (int j = 0; j < n; j++) {
            if(j==n-1){
                printf("%d", matrix[i][j]);
                continue;
            }
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}