美文网首页iOS 开发
C程序设计语言 1.6 数组

C程序设计语言 1.6 数组

作者: dongwenbo | 来源:发表于2016-09-06 16:10 被阅读79次

在这部分,我们来编写一个程序,已统计各个数字、空白符(包括空格符、制表符及换行符)以及所有其他字符出现的次数。
在统计数字出现的次数时,我们使用一个数组存放各个数字出现的次数,这样比10个独立的变量更加方便。如下:

#include <stdio.h>
/* count digits, white space, others */
int main()
{
  int c, i, nwhite, nother;
  int ndigit[10];
  nwhite = nother = 0;
  for (i = 0; i < 10; ++i)
    ndigit[i] = 0;//初始化
  while ((c = getchar()) != EOF)
    if (c >= '0' && c <= '9')
      ++ndigit[c - '0'];
    else if (c == ' ' || c == '\n' || c == '\t')
      ++nwhite;
    else
      ++nother;
  printf("digits =");
  for (i = 0; i < 10; ++i)
    printf(" %d", ndigit[i]);
  printf(", white space = %d, other = %d\n",nwhite, nother);
  return 0;
}

当把这段程序本身作为输入时,输出结果为:

digits = 9 3 0 0 0 0 0 0 0 1, white space = 123, other = 345

该程序中的声明语句
int ndigit[10]
意为声明一个由10个整形数组成的数组,[]在变量名后意为数组,其中的数字为这个数组所能存放元素的个数。在C语言中,数组下标总是从0开始,ndigit[0]表示数组中的第一个元素,ndigit[1]表示数组中的第二个元素,以此类推,这可以通过初始化和打印数组的两个for循环反应出来。
数组下标可以是任何整形表达式,包括整形变量及整形常量

if (c >= '0' && c <= '9')

用于判断c中的字符是否为数字。如果是数字,那么对应是数的计算方式为:

c - '0'

如果c中存储的字符是'0''9',其值将为09,下标刚好和数值对应起来。
判断一个字符是数字、空白符还是其他字符的功能由下列语句序列完成:

if (c >= '0' && c <= '9')
  ++ndigit[c - '0'];
else if (c == ' ' || c == '\n' || c == '\t')
  ++nwhite;
else
  ++nother;

程序中经常使用下列方式表示多路判定:

if (条件 1)
语句 1
else if (条件 2)
语句 2
...
...
else
语句 n

这种语句从前往后依次求值,直到满足某个条件,然后执行对应的部分,语句执行结束。其中的语句可以为单条语句也可以为大括号括起来的多条语句。如果所有条件都不满足,则执行位于最后一个else之后的语句(如果有的话)。在第三章中,我们将学习多路分支的另外一种方式,switch语句。

相关文章

  • C程序设计语言 1.6 数组

    在这部分,我们来编写一个程序,已统计各个数字、空白符(包括空格符、制表符及换行符)以及所有其他字符出现的次数。在统...

  • 1.6数组

    书中的例题现在开始有一点挑战了,需要认真琢磨一下。int ndigit[10];这个是声明ndigit这个整型数组...

  • C程序设计语言04 - 指针与数组

    指针是保存变量地址的变量 0x00 指针与地址 一元运算符&可用于取一个对象的地址,如: p = &c;, 把变量...

  • 书籍推荐

    1.《C primer plus》----《C程序设计语言》-----《C和指针》、《C专家编程》、《C缺陷与陷阱...

  • 数组

    forEach(js v1.6) map()— —更新数组 filter()、includes()、find()、...

  • Java和C、C++的异同

    C是“面向过程”的程序设计语言;C++,C#,java是“面向对象”的程序设计语言。举个例子:比如你想做一个模型飞...

  • 1. Rails Environments and Config

    1.6 Logging Most programming contexts in Rails (models, c...

  • 软考-算法-排序(下)

    答案 1.1 - 1.6:A D A A A B2.1 - 2.3:C C C3.1 - 3.8:4 2 5 1 ...

  • 要读的书

    有些就在我旁边的架子上:《C 程序设计语言》(The C Programming Language),《Minds...

  • 数组和广义表

    数组,所有的程序设计语言学习之初都有它的身影。根据数组中存储的数据元素之间的逻辑关系,可以将数组分为 : 一维数组...

网友评论

    本文标题:C程序设计语言 1.6 数组

    本文链接:https://www.haomeiwen.com/subject/ehvrettx.html