明解C语言(基础篇)—第5章部分答案

我在做到练习5-10的时候才想起来可以将代码上传,之前的练习题稍后有机会温书的时候再上传吧。

练习5-10 

#include <stdio.h>
int main(void)
{
	int i, j;
	int m, n;
	int a[4][3] = { 0 }, b[3][4] = { 0 };
	int c[4][4] = { 0 };

	/*输入矩阵a*/
	puts("输入矩阵a。");
	for (i = 0; i < 4; i++) {
		for (j = 0; j < 3; j++) {
			printf("a[%d][%d]=", i + 1, j + 1);
			scanf_s("%d", &a[i][j]);
		}
	}

	/*输入矩阵b*/
	puts("输入矩阵b。");
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 4; j++) {
			printf("a[%d][%d]=", i + 1, j + 1);
			scanf_s("%d", &b[i][j]);
		}
	}

	/*计算矩阵乘积*/
	for (m = 0; m < 4; m++) 
		for (n = 0; n < 4; n++) 
			for (i = 0; i < 3; i++)
				c[m][n] += a[m][i] * b[i][n];

	/*输出矩阵乘积*/
	puts("矩阵乘积");
	for (m = 0; m < 4; m++) {
		for (n = 0; n < 4; n++) {
			printf("  c[%d][%d]=%d  ", m + 1, n + 1, c[m][n]);
		}
		putchar('\n');
	}

	return 0;
}

练习5-11:这里的学生成绩是提前写入了程序,读者也可以采用scanf读取来进行操作。

#include <stdio.h>

#define STUDENT 6
#define COURSE 2

int main(void)
{
	int i, j;
	int tensu[STUDENT][COURSE] = { {89,91},{87,82},{78,93},{86,85},{78,100},{95,75} };
	int sum[COURSE] = { 0 };
	int score[STUDENT] = { 0 };

	/*求解各门课程的总分*/
	for (j = 0; j < COURSE; j++) 
		for (i = 0; i < STUDENT; i++) 
			sum[j] += tensu[i][j];

	/*显示各门课程的总分和平均分*/
	for (j = 0; j < COURSE; j++)
		printf("第%d门课的总分是%d,平均分是%.2f。\n", j + 1, sum[j], (double)sum[j] / STUDENT);
	
	putchar('\n');

	/*求解各位学生的总成绩*/
	for (i = 0; i < STUDENT; i++)
		for (j = 0; j < COURSE; j++)
			score[i] += tensu[i][j];

	/*显示各位同学的总成绩和平均分*/
	for (i = 0; i < STUDENT; i++)
		printf("第%d位同学的总分是%d,平均分是%.2f。\n",i+1,score[i],(double)score[i]/COURSE);

	return 0;
}

练习5-12

#include <stdio.h>

#define A 4
#define B 3
#define C 2

int main(void)
{
	int i, j, k;
	int tensu1[A][B] = { {91,63,78},{67,72,46},{89,34,53},{32,54,54} };
	int tensu2[A][B] = { {97,67,82},{73,43,46},{97,56,21},{85,46,35} };
	int tensu[C][A][B] = { 0 };

	/*将tensu1放入三维数组*/
	for (i = 0; i < A; i++)
		for (j = 0; j < B; j++)
			tensu[0][i][j] = tensu1[i][j];

	/*将tensu2放入三维数组*/
	for (i = 0; i < A; i++)
		for (j = 0; j < B; j++)
			tensu[1][i][j] = tensu2[i][j];

	/*将三维数组打印出来*/
	for (k = 0; k < C; k++) {
		printf("三维数组中第%d个元素\n",k+1);
		for (i = 0; i < A; i++) {
			for (j = 0; j < B; j++) {
				printf("%d ", tensu[k][i][j]);
			}
			putchar('\n');
		}
		putchar('\n');
	}

			
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值