“21好习惯“第一期-10

 21:13:58
数组

数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。

6.1.1初试数组
如何写一个程序计算用户输入的平均数?输入-1代表输入结束
不需要记录输入的每一个数;计算sum然后除法数组

数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。

6.1.1初试数组
如何写一个程序计算用户输入的平均数?输入-1代表输入结束
不需要记录输入的每一个数;计算sum然后除法

 21:13:59
int x;
double sum=0;
int cnt=0;
scanf("%d",&x);
while(x!=-1){
sum+=x;
cnt++;
scanf("%d",&x);
}
if(cnt>0){
printf("%f\n",sum/cnt);

且输出所有大于平均数的数?
需要记录读入的所有数。且输出所有大于平均数的数?
需要记录读入的所有数。
#include<stdio.h>

int main()
{
int x;
double sum=0;
int cnt=0;
int number[100];//定义数组
scanf("%d",&x);
while(x!=-1){
number[cnt]=x;//对数组中元素赋值
sum+=x;
cnt++;
scanf("%d",&x);
}
if(cnt>0){
printf("%f\n",sum/cnt);
int i;
for (i=0;i<cnt;i++){//遍历数组
if(number[i]>sum/cnt){
printf("%d\n",number[i]);//使用数组中元素
}
}
使用数组的常见步骤:
定义数组—赋值数组—遍历数组(使用数组中的元素)

6.1.2定义数组

<类型>变量名称[元素个数]
int number[100];
元素数量必须是整数
C99之前:元素数量必须是编译时刻确定的字面量,不能是变量,不能是动态的程序运行过程中产生的数字

数组
是一种容器(放东西的东西),所有的元素具有相同的数据类型;
一旦创建,不能改变大小;数组中的元素在内存中是连续依次排列的
数组中的单元可以出现在复制号的左边或者右边;在赋值号左边的叫做左值

数组的单元
数组的每个单元就是数组类型的一个变量
使用数组是放在[ ]中的数字叫做下标或索引,下标从0开始计数

有效的下标范围
编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写
一旦程序运行,越界的数组访问可能导致问题,导致程序崩溃。
Segmentation fault
换了电脑不能运行的原因之一(另一个是指针)
所以这是程序员的责任来保证程序只使用有效的下标值:
[0,数组的大小-1]

6.1.1节中我们的代码是危险的,因为输入的数据可能超过100个。

解决方案一:读满100个就不可以再读
解决方案二:C99特性,先让用户输入它要输入的个数,然后再创建数组

Int a[0] :
长度为0的数组,编译可以通过,可以存在但无用
因为即使是0也是越界了
字符也可以做下标

6.1.3数组例子:统计个数
写一个程序,输入数量不确定的[0,9]的范围内的整数,统计每一种数字出现的次数,输入-1表示结束
(不需要记录输入的数值,而是要记录输入的这个数曾经输入过多少次,设置的变量是记录次数的。)

 21:14:00
#include<stdio.h>

int main(void)
{
const int number=10;//数组的大小
int x;
int count[number];
int i;

for(i=0;i<number;i++){//初始化数组
count[i]=0;
}
scanf("%d",&x);
while(x!=-1){
if(x>0&&x<=9){
count[x]++;
}
scanf("%d",&x);
}
for (i=0;i<number;i++){
printf("%d:%d\n",i,count[i]);
}
return 0;
}

tips:
初始化数组是必要的,并且需要通过循环才能完成
Const int number 通过用这种方式来设定数组大小
Magic number:是指在程序中经常使用的数字,比如数组的大小,在for的条件里常常用到,我们使用const int 来声明,能够让其他人更加理解和明白代码中数字的含义

作业:#include<stdio.h>

int main()
{
float miles;
int time;
float sum = 0;
scanf("%f %d", &miles, &time);

if ( miles <= 3 )
{
sum = sum+10+(time/5)*2;
} else if ( miles>3 && miles <=10 )
{
sum = sum+10+(miles-3)*2+(time/5)*2;
} else if ( miles > 10 )
{
sum = sum+10+14+(miles-10)*3+(time/5)*2;
}

printf("%.0f",sum);

return 0; 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值