【C语言练习题】判断单位矩阵
        【摘要】 
                    《C和指针》习题8.8 
  
问题 
3.单位矩阵就是一个正方形矩阵,它除了主对角线元素值为1以外,其余元素的值均为0,例如:  *1 0 0  *0 1 0  *0 0 1  *就是一个3×3单位矩阵,编写一个名叫identity_matrix的函数,它接受一个10×10整型矩阵为参...
    
    
    
    《C和指针》习题8.8
问题
3.单位矩阵就是一个正方形矩阵,它除了主对角线元素值为1以外,其余元素的值均为0,例如:
  *1 0 0
  *0 1 0
  *0 0 1
  *就是一个3×3单位矩阵,编写一个名叫identity_matrix的函数,它接受一个10×10整型矩阵为参数
  *成功返回1,失败返回1
4、修改前一个问题中的identity_matrix函数,它可以对数组进行扩展,从而能够接受任意大小的矩阵参数。函数的第一个参数应该是一个整型指针,你需要第二个参数,用于指定矩阵的大小。
  
代码
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      #define N 10
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int identity_matrix( int (*matrix)[N] );
     
    
- 
    
     
    
    
     
      int identity_matrix_new( int *matrix, int number );
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      void main(void)
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     	int matrix[][N] = {//这是一个10*10的单位矩阵
     
    
- 
    
     
    
    
     
      			{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
     
    
- 
    
     
    
    
     
      			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
     
    
- 
    
     
    
    
     
      		};
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	int result = identity_matrix( matrix );	//方式1
     
    
- 
    
     
    
    
     	if( 0 == result ) printf("sucess!!!\n");
     
    
- 
    
     
    
    
     	else printf("failed!!\n");
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      	result = identity_matrix_new( matrix, 10 );	//方式2
     
    
- 
    
     
    
    
     	if( 0 == result ) printf("sucess!!!\n");
     
    
- 
    
     
    
    
     	else printf("failed!!\n");
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      /*
     
    
- 
    
     
    
    
     
       *判断单位矩阵 阶数固定为10
     
    
- 
    
     
    
    
     
       *输入: matrix指针数组
     
    
- 
    
     
    
    
     
       *返回:0成功 1失败
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     
      int identity_matrix( int (*matrix)[N] )
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     	int i=0,j=0;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	for(i=0;i<N;i++)
     
    
- 
    
     
    
    
     
      	{
     
    
- 
    
     
    
    
     		for(j=0;j<N;j++)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			if( i == j && matrix[i][j] != 1 ) return 1;
     
    
- 
    
     
    
    
     			else if( i != j && matrix[i][j] !=0 ) return 1;
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	return 0;
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      /*
     
    
- 
    
     
    
    
     
       *判断单位矩阵new 指定阶数
     
    
- 
    
     
    
    
     
       *输入: matrix整形指针 number矩阵阶数
     
    
- 
    
     
    
    
     
       *返回:0成功 1失败
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     
      int identity_matrix_new( int *matrix, int number )
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     	int i=0,j=0;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	for(i=0;i<number;i++)
     
    
- 
    
     
    
    
     
      	{
     
    
- 
    
     
    
    
     		for(j=0;j<number;j++)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			if( i == j && *(matrix+i*number+j) != 1 ) return 1;
     
    
- 
    
     
    
    
     			else if( i != j && *(matrix+i*number+j) !=0 ) return 1;
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	return 0;
     
    
- 
    
     
    
    
     
      }
     
    
 
展示

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/feit2417/article/details/85446261
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)