目录
前言
1、转置矩阵
1.1 题目
描述
输入描述:
输出描述:
1.2解题
分析:
程序:
2、KiKi判断上三角矩阵
2.1 题目
描述
输入描述:
输出描述:
2.2 解题
分析:
程序:
3、有序序列判断
3.1 题目
描述
输入描述:
输出描述:
3.2解题
分析:
程序:
结语
前言
纸上得来终觉浅,觉知此事要躬行。C语言的学习不仅要了解理论知识,更要不断练习,在练习中成长。下面我将给出几到例题,并分析讲解,帮助我们在实践中了解C语言。
1、转置矩阵
1.1 题目
描述
KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。
输入描述:
第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
输出描述:
输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。
1.2解题
分析:
此题就是一个对二维数组的操作,只需要在输入时按照行和列的顺序输入,输出时按照列到行反过来输出即可。
程序:
int main()
{int a[10][10] = { 0 };int n = 0;int m = 0;scanf("%d%d", &n, &m);for (int i = 0;i < n;i++){for (int j = 0;j < m;j++){scanf("%d", &a[i][j]);}}for (int i = 0;i < m;i++){for (int j = 0;j < n;j++){printf("%d ", a[j][i]);}printf("\n");}return 0;
}
2、KiKi判断上三角矩阵
2.1 题目
描述
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
输入描述:
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
输出描述:
一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。
2.2 解题
分析:
此题先输入数据,然后对左下角的数据进行判断,只要出现非0则不为上三角矩阵,输出NO。如果判断完成后未发现问题,则为上三角矩阵,输出YES
程序:
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[10][10] = { 0 };int i = 0;int j = 0;int p = 1; //标记,如果是上三角矩阵,则为1,否则为0.for (i = 0;i < n;i++) //输入{for (j = 0;j < n;j++){scanf("%d", &arr[i][j]);}}for (i = 0;i < n;i++) //判断{for (j = 0;j < n;j++){if (((i - j) > 0) && (arr[i][j] != 0)){p = 0;goto end;}}}
end:if (p == 1){printf("YES\n");}else{printf("NO\n");}return 0;
}
3、有序序列判断
3.1 题目
描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围:3≤n≤50 序列中的值都满足 1≤val≤100
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
3.2解题
分析:
此题需要从两种情况进行分析:升序和降序。
用一个变量(我用的p)来标记升序和降序以及不升不降,然后看整个数列的升降情况是否统一,也就是在遍历整个数组时p是否改变。这里要注意的是,当前后两个数据相同时,并没有破坏数列的有序性,所以需要特别判断。
程序:
#include<stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[50] = { 0 };int i = 0;int p = 0;int f = -1;int k = 1;for (i = 0;i < n;i++){scanf("%d", &arr[i]);}for (i = 1;i < n;i++){if (arr[i] > arr[i - 1]){p = 0; //降序标记}else if (arr[i] < arr[i - 1]){p = 1; //升序标记}else{p = -1; //未改变标记}if ((f != p) && (f != -1)){k = 0;}f = p;}if (k == 1){printf("sorted");}else{printf("unsorted");}return 0;
}
结语
不要小瞧每一次练习,每天保持练习,持之以恒,我们的C语言技术才会越发熟练。希望大家都能越来越好,不辜负自己的努力。