翁恺老师C语言学习笔记(八)数组
· 如何写一个程序计算用户输入的数字的平均数
用户输入正整数,并计算输入数字的平均数,如果输入“-1”表示输入结束;
#include<stdio.h>int main()
{
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);// 不记录所有输入的数
}
}
输入结果
1 2 3 4 5 6 7 8 9 10
-1
5.500000
· 如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数
用户输入正整数,并计算输入数字的平均数,输出所有大于平均数的数。如果输入“-1”表示输入结束;
我们如何记录很多数
常见如下
int num1,num2,num3……num100?
所以我们需要用到数组,我们将所有需要记录的数据定义为一个数组,然后遍历整个数组,如果大于平均值,我们输出这个数组
#include<stdio.h>
int main()
{
int x;
double sum = 0;
int cnt = 0;
int number[100]; //定义数组及数组类型,有100个int
scanf("%d",&x);
while (x!= -1){number[cnt] = x; //number这个数组的cnt单元等于X // 调试用的代码,可以观察number[i]的值如何变化 {int i;printf("%d\t",cnt); //输出cnt的值 for(i=0;i<=cnt;i++){printf("%d\t",number[i]);}printf("test\n");}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]);}}
}
return 0;
}
输入结果
1 2 3 4 5 6 7 8 9 10
0 1 test
1 1 2 test
2 1 2 3 test
3 1 2 3 4 test
4 1 2 3 4 5 test
5 1 2 3 4 5 6 test
6 1 2 3 4 5 6 7 test
7 1 2 3 4 5 6 7 8 test
8 1 2 3 4 5 6 7 8 9 test
9 1 2 3 4 5 6 7 8 9 10 test
-1
5.500000
6
7
8
9
10
定义数组
· <类型>变量名称[元素数量];
· int grades[100];
· double weight[20];
· 元素数量必须是整数
· C99之前,元素数量必须是编译时确定的字面量
数组
· 是一种容器(可以放东西的东西),特点是:
· 其中所有的元素具有相同的数据类型;
· 一旦创建,不能改变大小
· *(数组中的元素在内存中是连续依次排列的)
int a[10]
· 一个int的数组
· 10个单元:a[0],a[1],……a[9]
· 每个单元就是一个int类型的变量
· 可以出现在赋值的左边或右边
· a[2] = a[1]+6;
· *在赋值左边叫左值,右边叫右值
数组的单元
· 数组的每个单元就是数组类型的一个变量
· 使用数组时,放在[]中的数字叫做下表或索引,下表从0开始计数
· grades[0]
· grades[99]
· average[5]
有效的下标范围
· 编译器和运行环境都不会检查数组下标的越界
· 一旦程序开始运行,越界的数组访问可能造成问题,导致崩溃
· ·segmentation fault
· 偶尔可能运气好,未造成严重后果
· 程序员的责任,让我们保证程序只使用有效的下标值
翁恺老师C语言学习笔记(八)数组相关推荐
- 翁恺老师C语言学习笔记(十一)字符串_字符串常量
字符串常量 char* s = "Hello,world!" 我们先看一段代码 #include<stdio.h>int main(void) {char *s = & ...
- 翁恺老师C语言学习笔记(十一)字符串
字符数组 如果我们定义了这样的一个字符数组 char word[] = {'H','e','l','l','o','!'}; word[0] H word[1] e word[2] l word[3] ...
- 翁恺老师C语言学习笔记(十)指针_指针与数组
传入函数的数组成了什么? · 当我们向一段函数传入数组变量,参数接收到的是值,如果我们传入指针时,参数接收到的是也是值(一个地址): · 如果传入函数的是一个普通变量,它接收到的是一个值 · 如果传入 ...
- 翁恺老师C语言学习笔记(十)指针_指针的使用
指针的应用场景一 · 交换两个变量的值 void swap(int *pa, int *pb);//定义指针*pa和*pb int main(void) {int a = 5; int b = 6;s ...
- 翁恺老师C语言学习笔记(十)指针_指针变量就是记录地址的变量
指针变量就是记录地址的变量 scanf函数 · 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量 · scanf("%d", &i) · ...
- 翁恺老师C语言学习笔记(十)指针_运算符取得变量的地址
指针(一) 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值.由于通过地址能找到所需的变量单元,可以说,地址指 ...
- 翁恺老师C语言学习笔记(九)数组的运算
· 在一组给定的数据中,如何找出某个数据是否存在? 先看一段代码 #include<stdio.h> /* 找出key在数组a中的位置 @param key 要寻找的数字 @param a ...
- 翁恺老师C语言学习笔记(七)函数
题目:求出1-10.20-30.35-45的三个和 #include<stdio.h>int main() {int i;int sum;for(i=1,sum=0;i<10;i++ ...
- 翁恺老师C语言学习笔记(十)指针_指针运算
我们先看一段代码 #include <stdio.h>int main(void) {char ac[] = {0,1,2,3,4,5,6,7,8,9,};char *p = ac;pri ...
最新文章
- CentOS安装编译环境
- js时间格式化函数,支持Unix时间戳
- 2019.2.20异常
- CanalAdapter启动过程分析(源码详解)
- 整合Hibernate3.x
- word菜单删除,小常识,删除word菜单,WORD菜单栏,删除词霸2003菜单,删除adobe菜单
- 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波16 - 锐化高通滤波器 - 钝化掩蔽和高提升滤波
- Android之Timer和TimerTask的介绍
- CREAMy简洁大气模板Typecho主题
- 产业链人士:台积电将同设备及原材料供应商谈判,希望明年降价15%
- java继承test 怎么写_Java Junit Test 要怎么写?
- Qt4_中央窗口部件
- Kubernetes集群搭建之Etcd集群配置篇
- d3js scales深入理解
- 《勿忘初心,不负梦想》
- Excel竟然能够按照单元格的指定颜色顺序排序
- 机器学习面试题总结!!!!
- 芝诺数解|「六」享受生活,品味甘甜——重庆奶茶
- systemd service unit
- oracle查询数据令某字段显示固定值
热门文章
- 综观java读取和创建excel方法
- 昆明北大附中2021高考成绩查询入口,昆明高考成绩单:昆明多所高中高考数据来啦!...
- python曲线拟合绘图_python – 将曲线拟合到分段图像
- mysql 使用jdbctemplate_SpringBoot学习笔记-使用jdbcTemplate访问mysql
- c语言 动态链表,C语言的链表(篇章之二:动态链表)
- android 微信支付测试,求大神指导一下!!!android开发,测试demo按步骤配置,无法调用到微信支付...
- BUUCTF Web [极客大挑战 2019]Havefun
- WIN10和XP共享及XP添加WIN10共享打印机方法
- 百度推出Apollo 3.5和Apollo Enterprise
- 47. Python socket编程 2