上三角矩阵指主对角线如下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。html
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。数组
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每一个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。网络
每一个矩阵的判断结果占一行。若是输入的矩阵是上三角矩阵,输出“YES”,不然输出“NO”。数据结构
以上是题目要求。接下来先给出代码:spa
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #include<string.h> //有些.h是没有用到的,不过出于习惯,而且没有工程压力就加上了。 5 int main() { 6 int n = 0; // n是整个矩阵的个数 7 int* m; // m是第n个矩阵(方阵)的横或纵的数 【m是数组】 8 int a = 0; // a是判断条件,后面在if语句里会用到 9 //int interval = 0; //无关要素,请自动忽略 10 int boo[10]; //把每个矩阵的判断放到此数组中 11 scanf("%d", &n); 12 m = (int*)malloc(n * sizeof(int)); //动态数组 13 14 for (int l = 0; l < n; l++) { 15 boo[l] = 1; //此处直接先假设都是 上三角矩阵 后面若是遇到不符的直接判0 16 scanf("%d", &m[l]); 17 int len = pow(m[l],2); 18 for (int i = 0; i < m[l]; i++) { 19 for(int j = 0 ; j < m[l] ; j++){ 20 scanf("%d", &a); 21 if (i > j) { 22 if (a != 0) { 23 boo[l] = 0; //这里 !个人思路是在线处理 24 } 25 } 26 27 } 28 } 29 } 30 for (int i = 0; i < n; i++) { 31 if (boo[i] == 1) { 32 printf("YES\n"); 33 } 34 else 35 printf("NO\n"); 36 } 37 return 0; 38 39 }
以上是代码,接下来逐步分析。操作系统
我大一就学过了c,此次是从新学c,想经过c把本身的代码找回来,毕竟上一年都在学理论课,好比操做系统, 数据结构,网络和组成原理这种,就把代码耽搁了,此次争取补回来而且从不一样的方向加油。code
这个题个人核心思路是,在线处理,就是输入一个数字,若是符合条件,就进行判断,而且将判断的结果保存在boo数组中。htm
而后须要稍微动脑的地方就是,如何表示对角线如下都是“0”,我用的是笨的方法,就是用了2个for嵌套,外层是横坐标,内层是纵坐标,而后横坐标>纵坐标,即对角线如下的元素。blog
写写心得体会吧数学
1.此代码能够精进,若是按照我这个思路来的话,能够不用2层for来解决元素位置问题,能够运用数学方法巧妙解决,奈何宝宝笨,想了好久也想不出巧法,要不就定义不少数据,我不喜欢这样子,就采用了本方法,若是兄弟们有好的方法,能够在评论区说下或者私信均可以。我必定第一时间解决。
2.大三了,准备考研了,为啥学c呢,由于它考c,我一方面想捡起来,另外一方面也想考上它。就从如今起加油吧!