【C语言练习题】判断单位矩阵

举报
王建峰 发表于 2021/11/19 01:34:56 2021/11/19
【摘要】 《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函数,它可以对数组进行扩展,从而能够接受任意大小的矩阵参数。函数的第一个参数应该是一个整型指针,你需要第二个参数,用于指定矩阵的大小。
 

 

代码


  
  1. #include <stdio.h>
  2. #define N 10
  3. int identity_matrix( int (*matrix)[N] );
  4. int identity_matrix_new( int *matrix, int number );
  5. void main(void)
  6. {
  7. int matrix[][N] = {//这是一个10*10的单位矩阵
  8. { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  9. { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
  10. { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
  11. { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
  12. { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
  13. { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
  14. { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
  15. { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
  16. { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
  17. { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  18. };
  19. int result = identity_matrix( matrix ); //方式1
  20. if( 0 == result ) printf("sucess!!!\n");
  21. else printf("failed!!\n");
  22. result = identity_matrix_new( matrix, 10 ); //方式2
  23. if( 0 == result ) printf("sucess!!!\n");
  24. else printf("failed!!\n");
  25. }
  26. /*
  27. *判断单位矩阵 阶数固定为10
  28. *输入: matrix指针数组
  29. *返回:0成功 1失败
  30. */
  31. int identity_matrix( int (*matrix)[N] )
  32. {
  33. int i=0,j=0;
  34. for(i=0;i<N;i++)
  35. {
  36. for(j=0;j<N;j++)
  37. {
  38. if( i == j && matrix[i][j] != 1 ) return 1;
  39. else if( i != j && matrix[i][j] !=0 ) return 1;
  40. }
  41. }
  42. return 0;
  43. }
  44. /*
  45. *判断单位矩阵new 指定阶数
  46. *输入: matrix整形指针 number矩阵阶数
  47. *返回:0成功 1失败
  48. */
  49. int identity_matrix_new( int *matrix, int number )
  50. {
  51. int i=0,j=0;
  52. for(i=0;i<number;i++)
  53. {
  54. for(j=0;j<number;j++)
  55. {
  56. if( i == j && *(matrix+i*number+j) != 1 ) return 1;
  57. else if( i != j && *(matrix+i*number+j) !=0 ) return 1;
  58. }
  59. }
  60. return 0;
  61. }

 

展示

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/85446261

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。