除去自身的最大因数 矩阵对角线互换
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个不超过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; }