文档章节

C Primer Plus 第6章 C控制语句:循环 6.11 数组

idreamo
 idreamo
发布于 2016/06/02 06:40
字数 1153
阅读 70
收藏 0

float debts[20];

声明debts是一个具有20个元素的数组,其中每一个元素都是一个float类型的值。这个数组的每一个元素称为debts[0],第二个元素称为debts[1],这样直到debts[9]。注意元素编号是从0而不是从1开始的。每个元素都可以被赋予一个float类型的值。如:

debts[0]=32.54; debts[1]=1.2e+21;

实际上您可以像使用相同类型的变量那样使用一个数组元素。例如,您可以把一个值读入一个特定的元素:scanf("%f",&debts[4]);为第5个元素读入一个值。

一个潜在的易犯的错误是:出于执行速度的考虑,C并不检查您是否使用了正确的下标。例如,以下都是错误的代码:debts[20]=88.32; //没有这个数组元素;

但是编译器不会发现这样的错误。当程序运行时,这些语句把数据放在可能由其他数据使用的位置上,因而可能破坏程序的结果甚至使程序崩溃。

数组可以是任意数据类型的数组

例如,我们先前提到过的字符串就是一个特别的例子,它被存储在一个字符数组中。一般说来,字符数组就是元素都被赋于字符值的数组。如果字符数组包含了空字符\0,那么字符数组的内容就构成了一个字符串,其中空字符标志着字符串的结尾。

用于标识数组元素的数字称为下标、索引、或偏移量。必须是整数。从0开始。数组中的元素在内存中是顺序存储的。

在for循环中使用数组

程序清单 6.19 scores_in.c

//scores_in.c -- 使用循环进行数组处理
#include <stdio.h>
#define SIZE 10
#define PAR 72
int main (void)
{
    int index,scores[SIZE];
    int sum=0;
    float arerage;
 
    printf("Enter %d golf scores: \n",SIZE);
    for (index=0;index<SIZE;index++)
        scanf("%d",&scores[index]);
    printf("The scores read in are follows: \n")
    for (index=0;index<SIZE;index++)
        printf("%5d",scores[index]);
    printf("\n");
    for(index=0;index<SIZE;index++)
        sun+=scores[index];
    average=(float)sum/SIZE;
    printf("Sum of scores = %d,average = %.2f \n",sum,average);
    printf("That's a hanicap of %.0f.\n",average-PAR);
    return 0;
}
/*下面是输出:
Enter 10 scores:
Enter 10 golf scores:
102 98 112 108 105 103 
99 101 96 102 100 
The scores read in are as follows:
102 98 112 108 105 103 99 101 96 102  
Sum of scores = 1026,average=102.60
That's a handicap of 31
*/   

我们来看一些细节。首先,注意到尽管这个例子显示您输入了11个数,但是只有10个被读入了,因为读取循环只读入10个值。因为scanf()跳过空白字符,所以您可以一行之内 输入 所有的10个数,也可以在每一行只输入一个数,或者您也可以像这个例子一样混合 使用新行与空格 来分隔输入。

其次,使用数组和循环要比使用10个单独的xcanf()语句和10个单独的printf()语句来读入并验证这10个分数更方便。

这个例子说明了一些风格的问题。首先,使用#define指令创建一个指定数组 大小 的明显常量(SIZE)是一个好主意,您可以在定义数组和设置循环限制时使用这个常量 。如果您以后需要 把程序扩展为处理20个分数,简单地把SIZE重新定义为20就可以了。

其次,下面的代码可以很方便地处理一个大小 为SIZE的数组:

for(index=0;index<SIZE;index++)

获取正确的数组边界是很重要的。使用判断条件index<SIZE可使最后一个index的值为SIZE-1。

第三,一个好的编程习惯是使程序重复输出或“回显”刚刚读入的值。这有助于确保程序处理了您所期望的值。

最后,程序使用了三个独立的for循环,当然也可以合并操作。但您应该根据模块化的原则进行调整。这个术语所蕴含的思想是程序应该被分为一些单独的单元,每个单元执行一个任务,这会使程序更易读。可以使程序更易升级或修改。

 

© 著作权归作者所有

idreamo
粉丝 18
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
C Primer Plus 第6章 C控制语句:循环 6.5 for循环

for 循环把所有这三种动作(初始化、测试、更新)都放在一起。通过使用for循环,您可以用程序清单6.11中的程序来代替前一个程序 。 程序清单6.11 sweetie2.c 在关键字for之后的圆括号中包含了...

idreamo
2016/05/31
23
0
C Primer Plus 第6章 C控制语句:循环 6.1 再探while循环

程序清单6.1 summing.c 6.11 程序注释 这个循环的判断表达式是:status==1;==运算符是C的相等运算符。当status的值不为1时终止循环。 要使程序正确运行,在每次循环中应该为num获取一个新值,...

idreamo
2016/05/26
58
0
C Primer Plus 第11章 11.7 ctype.h字符函数和字符串

第7章“C控制语句 分支和跳转”介绍了ctype.h系列字符相关的函数。这些函数不能被 应用于整个字符串,但是可以被应用于字符串中的个别字符。程序清单11.26定义了一个函数,它把toupper( )函数...

idreamo
2016/08/27
52
0
C Primer Plus 第6章 C控制语句 6.16 编程练习及答案

1、编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。 6、编写一个程序把一个单词读入一个字符数组,然后反向打印这个词。提示:使用str...

idreamo
2016/06/12
271
0
C Primer Plus 第10章 数组和指针 10.1 数组

10.1 数组 数组由一系列相同的元素构成。 数组声明中包括数组元素的数目和元素的类型。 一些数组声明的例子: float candy[365]; /365个浮点数的数组/ char code[12]; /12个字符的数组/ int...

idreamo
2016/07/21
38
0

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
28分钟前
6
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
28分钟前
5
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
33分钟前
5
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
34分钟前
5
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部