苏小红c语言第四版课后习题练习8.9--8.11

8.9 

 

   1 #include <stdio.h>
   2 int Sum(int arr[][4], int x){  //二维数组传参 列的参数不能空;
   3     int sum1 = 0, sum2 = 0, l, j;
   4 
   5     for(l = 0; l < x; l++){
   6         sum1+= arr[l][l];
   7     }
   8     for(j = 0; j < x; j++){
   9         sum2+= arr[x-1-j][j];
  10     }
  11     return sum1+sum2;
  12 }
  13 
  14 int main()
  15 {
  16     int n, i, j, z;
  17 
  18     printf("请输入每一行矩阵元素的数量:\n");
  19     scanf("%d", &n);
  20 
  21     int a[][10];
  22     do{
  23         printf("请输入矩阵的数值:\n");
  24         for(i = 0; i < n; i++){
  25             for(j = 0; j < n; j++){
  26                 scanf("%d", &a[i][j]);
  27                 printf("%d    ", a[i][j]);
  28            }
  29             printf("\n");
  30         }
  31     }while (n<1);
  32 
  33     z = Sum(a, n);
  34 
  35     printf("对角线上所有元素之和是:%d\n", z);
  36 
  37     return 0;
  38 }
  39 
  40 

8.10

      还是不知道怎么用函数来写,常规方法先不写了,后面再补;

8.11

   1 #include <stdio.h>
   2 int main()
   3 {
   4     int n, i, j, k, sum1 = 0, sum2 = 0, b, c;
   5     printf("请输入行数:\n");        
   6     scanf("%d", &n);
   7     int a[][10];        
   8 
   9     for(k = 0; k < n; k++){        //先设置矩阵的对角线和第一列的数字全为1同时计算和;
  10         a[k][0] = 1;
  11         a[k][k] = 1;
  12         sum1=sum1+a[k][0]+a[k][k]-1;
  13     }
  14 
  15     for(i = 2; i < n; i++){    //通过观察每一行除了1以外的元素规律循环赋值;
  16         for(j = 1; j < i; j++){    
  17             a[i][j] = a[i-1][j-1]+a[i-1][j];
  18             sum2+=a[i][j];    //计算和;
  19         }
  20     }
  21         printf("%d   %d\n",sum1,sum2);    //验证下每一步加和是否正确;
  22     for(b = 0; b < n; b++){
  23         for(c = 0; c < b+1; c++){
  24             printf("%d  ", a[b][c]);
  25         }
  26         printf("\n");
  27     }
  28     printf("总和为:%d \n",sum1+sum2);
  29 
  30     return 0;
  31 }
  32 

        通过观察可知该矩阵存在一定规律,首先第一列以及对角线的元素都是1,其次其他的元素都是上一行前一列元素和相同列元素相加的和,因此可以通过两步来输出这个矩阵,顺便可以完成两部分的加和计算,最后的总和自然也就是这两部分的总和了,题目相对来说不算难,只不过需要想清楚规律,就可以按部就班的写出来了,不过写程序的过程中也要注意细节哦。

        不过不知道怎么用函数来写,会的麻烦评论区留言分享。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值