判断一个任意大小的矩阵是否为单位矩阵

《C和指针》第8章编程练习第4题:

修改前一个问题中的 identity_matrix 函数,它可以对数组进行扩展,从而能够接受任意大小的矩阵参数。函数的第1个参数应该是一个整型指针,你需要第2个参数,用于指定矩阵的大小。

 1 /*
 2 ** 判断一个矩阵是否为单位矩阵
 3 ** 矩阵为任意大小
 4 */
 5
 6 #include <stdio.h>
 7 #define  SIZE 4
 8
 9 /*
10 ** 函数接受任意大小矩阵参数,判断它是否为单位矩阵
11 ** 形参:
12 **      第1个参数为一个整型指针,指向矩阵中第一个元素&matric[0][0]
13 **      第2个参数为矩阵的大小
14 ** 返回:
15 **      是单位矩阵,返回1
16 **      不是单位矩阵,返回0
17 */
18 int
19 indentity_matrix_anysize( int *matrix, int mtx_size )
20 {
21     int row, col;
22     for( row = 0; row < mtx_size; ++ row )
23         for( col = 0; col < mtx_size; ++ col )
24         {
25             if( row == col && *( matrix + row * mtx_size + col ) != 1 )
26                 return 0;
27             if( row != col && *( matrix + row * mtx_size + col ) != 0 )
28                 return 0;
29         }
30     return 1;
31 }
32
33 int
34 main()
35 {
36     int matrix[SIZE][SIZE];
37
38     int i, j;
39     for( i = 0; i < SIZE; ++ i )
40         for( j = 0; j < SIZE; ++ j )
41             scanf( "%d", & matrix[i][j] );
42
43     printf( "%d", indentity_matrix_anysize( matrix[0], SIZE ) );
44
45     return 0;
46 }
时间: 2024-10-14 06:38:37

判断一个任意大小的矩阵是否为单位矩阵的相关文章

判断一个10*10的矩阵是否为单位矩阵

<C和指针>第8章编程练习第3题: 1 /* 2 ** 判断一个10*10的矩阵是否为单位矩阵 3 */ 4 5 #include <stdio.h> 6 #define ROW 10 7 #define COL 10 8 9 /* 10 ** 函数接受一个10*10的矩阵 11 ** 判断其是否为单位矩阵 12 ** 返回值: 13 ** 是单位矩阵,返回1 14 ** 不是单位矩阵,返回0 15 */ 16 int 17 indentity_matrix( int (*matr

oracle 产生一个任意大小的随机数

SELECT DBMS_RANDOM.RANDOM FROM DUAL;          产生一个任意大小的随机数 SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) FROM DUAL

任意大小的图片垂直水平居中与一个固定大小的容器中

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>无标题文档</title> <style type="text/css"> *{ margin:0; padding:0;} .fl{ float:left; width:100px; height:100px; background:green} .nofl{

C语言 判断一个字符串是不是另一个旋转任意位所得

/************************************************************************************ 4.判断一个字符串是否为另外一个字符串旋转之后的字符串. 例如:给定s1 = AABCD和s2 = BCDAA,返回1, 给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC AABCD右旋两个字符得到CDAAB ****

一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下来N行,每行M个数,表示矩阵每个元素的值 输出: 输出最小面积的值.如果出现任意矩阵的和都小于K,直接输出-1. 样例输入: 4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 样例输出: 1 首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3lo

(hdu step 4.2.7)逃离迷宫(在有转弯次数的限制的情况下,判断一个点是否能到另一个点)

题目: 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 264 Accepted Submission(s): 85   Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍

delphi 判断一个数组的长度用 Length 还是 SizeOf ?

判断一个数组的长度用 Length 还是 SizeOf ?最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组.且元素大小是一个字节, 这样用看不出错误, 譬如:  -------------------------------------------------------------------------------- vararr1: array[0..9] of Char;arr2: array[0..9] o

c语言:判断一个整数是不是2的整数次方

判断一个整数是不是2的整数次方. 解:程序: #include<stdio.h> int count(int t) { int count=0; while (t) { count++; t=t&(t-1); } return count; } int main() { int num,ret=0; printf("请输入一个整数:"); scanf("%d", &num); ret = count(num); if (ret == 1)

判断一个字符串之中出现次数最多的字符和它出现的次数

判断一个字符串之中出现次数最多的字符和它出现的次数!!! 思路:用一个空对象将字符串的各个字符和其出现的次数缓存起来,再通过比较次数的大小来判断出最大值 (function(){ // 判断一个字符串中出现次数最多的字符,统计这个次数 var str = 'hkjjsdhfagsdhfjhkjsdhfjkjjsjdjksjkfjkdjfkjjjjjjjsadfss'; var a={} for(var i=0;i<str.length;i++){ if(!a[str.charAt(i)]){ a