c语言使用二维数组发牌,C语言二维数组的应用举例

今天小编准备了两个例题,一起来看看吧!

No.1

问题:

某地区6个商店在一个月内电视机的销售数量见下表,试编写程序,计算并打印电视机销售汇总表。

某地区6个商店在一个月内电视机的销售数量

1

52

34

40

40

2

32

10

35

15

3

10

12

20

15

4

35

20

40

25

5

47

32

50

27

6

22

20

28

20

分析:

要完成这道题,我们先定义一个二维数组,小编在这里按照问题定义了 6 行 4 列的二维数组 amount [6] [4],行表示每个商店的销售情况,列表示每个品牌的销售情况。

定义好数组后,如何计算11个总量(6个商店销售总量+4个品牌销售总量+1个总销售量)呢?小编在这里把计算和打印结合在了一起,在打印每行的时候,累加各商店的销售总量,至于各品牌的销售总量,设置了一个一维数组brand [4],用其中的每个元素当做变量累加品牌销售总量,最后将四个元素加起来得到总销售量。

在打印的过程中就要考虑格式了,尽量让表格整齐好看。商店序号我们可以在循环的时候根据循环变量打印出来,另外元素与元素之前的间距要控制好,小编这里用到了输出空格这个笨办法,聪明的你也可以通过控制各个元素的位数来达到效果。

听小编讲得懵懵懂懂?代码一摆,那都不是事 ↓

代码:

#include "stdio.h"main ()

{int amount [6][4] = {52, 34, 40, 40, 32, 10, 35, 15, 10, 12, 20, 15, 35, 20, 40, 25, 47, 32, 50, 27, 22, 20, 28, 20};int i, j, m1, m2=0;int brand[4]={0};

printf("某地区 6 个商店一个月内电视机的销售总量\n");

printf("----------------------------------------------------------------\n");

printf("商品代号 熊猫牌 西湖牌 金星牌 梅花牌 销售总量\n");

printf("----------------------------------------------------------------\n");for(i = 0; i < 6; i++) //按行遍历//统计并输出

{

printf("%d", i);

m1= 0;for (j = 0; j < 4; j++) //按列遍历

{

printf("%d", amount [i] [j]);

m1+= amount [i] [j]; //累加每个商店的销量

brand[j] = amount [i] [j]; //累加每个品牌的销量

}

printf("%d", m1);

printf("\n");

m2+=m1;

}

printf("----------------------------------------------------------------\n");

printf("合计 %d %d %d %d %d\n", brand[0], brand[2], brand[3], brand[4], m2);

}

No.2

问题:

打印输出以下的杨辉三角形(要求打印出10行)。

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

……

分析:

首先来玩个找规律游戏:

①题目要求打印的杨辉三角形的形状为等腰直角三角形,第n行有n个数;

②每行第一个元素都为1;

③每行最后一个元素为1;

④每行(除第一行)除了第一列和最后一列的元素都满足:a[i][j]=a[i-1][j-1]+a[i-1][j];

要打印十行,和上道题一样有计算和打印两个步骤,在这道题中,小编分别进行计算和打印。

要计算杨辉三角每个位置的元素,就需要用到上面找到的规律。我们先定义一个二维数组 a[10] [10],给第一行第一列这个元素赋值为1(其他元素默认为0);然后利用循环将每行第一列的元素赋值为1,其他元素利用a[i][j]=a[i-1][j-1]+a[i-1][j]得出,到了这里你可能会问,每一行最后一列的元素也是1呀!对,是1,1不就等于1+0吗?也符合这个公式,所以我们就可以把问题简化啦。

计算完毕后,打印就不是问题啦,设置外循环输出行,内循环输出列就OK啦。

代码:

#include main ()

{int a[10][10]={1};inti, j;//填充各个位置的值

for(i = 1; i < 10; i++)

{

a[i][0] = 1;for(j = 1; j <= i; j++)

a[i][j]= a[i-1][j-1] + a[i-1][j];

}//打印杨辉三角

for(i = 0; i < 10; i++)

{for(j = 0; j <=i; j++)

printf("%4d", a[i][j]);

printf("\n");

}

}

本次的分享就到这里啦,欢迎小伙伴们前来指正!

预告:C语言字符数组超细讲解

2020-04-22 09:36:03

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值