目录:

一、使用xcode编辑工具

二、数组

三、数组遍历

四、多维数组

回到顶部

一、使用xcode编辑工具

1 打开xcode程序

2 创建一个项目

OSX -> Application -> Command line Tool -> next

-> ProductName : 项目名称(day07-1)

-> Type : C

选择项目所要保存的目录

退出项目( command + q )

双击day07-1.xcodeproj打开项目

3 buile( command + b )编译

4 clean( command + shift + k )清除目标文件或可执行文件

5 command + r 编译运行、command + z 撤销、shift + command +z 撤销前进、esc打开关闭提示

6 新建一个文件command + n -> C and C++ -> C file -> 保存C文件的位置

7 在通常练习中,项目中会创建多个文件,所以我们会修改编译、链接操作,去掉不需要编译的文件(选中文件点击‘-’号或delete),点击项目名称 -> bulid phases -> Compile Sources 保留需要的文件,(其实就是command + r要编译运行的文件,不需要的那些文件就在这里干掉)

回到顶部

二、数组

1 数组是用来存储多条相同数据类型的数据结构。(容器)

2 关键点:

多条、类型相同;

数组是数据的容器而非数据本身;

数组中的每个数据叫元素、数组有多个元素组成;

数据下标(索引)来区分数据中的元素;

元素从数组的位置0开始;

元素可以使用数组名[下标]来得到具体的元素数据;

声明数组中元素的个数叫数组的长度;

数组所占空间 = 元素类型*数组长度;

数组是一段连续的内存区域;

数组变量名指向的区域是数组在内存中的首地址;

3 语法格式

元素类型 数组名[长度];

int array[3];

4 初始化

赋使用的值:

int array[3];//未初始化 可能存在垃圾值

int array2[3] = {1,2,3};//依次给数组元素赋

int array4[3] = {1,2};//如果赋值的个数少于数组长度会自动用0填充后面的值

赋值0:

int array3[3] = {0};//数组中的元素都是0

如果数组下标超出了长度,有可能有值有可能没值。

#include <stdio.h>

int main(int argc, const char * argv[])
{ //声明一个数组
//int array[3];//未初始化 可能存在垃圾值
//int array2[3] = {1,2,3};//依次给数组元素赋值
//int array3[3] = {0};////数组中的元素都是0
int array4[] = {,};//如果赋值的个数少于数组长度会自动用0填充后面的值
//printf("array3[0]:%d\n",array3[3]);//3为数组的下标 0 1 2 3,如果超出了长度,有可能有值有可能没值
//下标 < 长度
//数组前有类型是长度
//数组前无类型是下标
//给数组元素赋值
array4[] = ;
//printf("array4[2]:%d\n",array4[2]); //遍历数组元素
for (int i = ; i < ; i++) {
printf("array4[%d]:%d\n",i,array4[i]);
}
return ; }

回到顶部

三、数组遍历

5 赋值

下标 < 长度

数组前有类型数字是长度 int array[3];

数组前无类型数字是下标 array4[2] = 10;

6 取出数组元素的值

printf("array4[2]:%d\n",array4[2]);

7 查看数组中的每一个元素,遍历

//遍历数组元素

for (int i = 0; i < 3; i++) {

printf("array4[%d]:%d\n",i,array4[i]);

}

练习:

1)声明一个100个元素的数组,数组中的值是从1~100,遍历数组中的内容。

2)在键盘上输入5个数,求最大值,在数组中的位置。

3)输入五个同学的分数,刚好下标就是学生学号,问最高分的学生学号是多少?最低分学生的学号是多少?

#include <stdio.h>
int main()
{
//练习:1)声明一个100个元素的数组,数组中的值是从1~100,遍历数组中的内容。
int arr[] = {};
//赋1~100给数组arr
for (int i = ; i < ; i++) {
arr[i] = i + ;
}
//遍历数组
for (int i = ; i < ; i++) {
printf("arr[%d]:%d\n",i,arr[i]);
} /*
  2)在键盘上输入5个数,求最大值,在数组中的位置。
    */
//声明最大值下标、最小值下标
int number[] = {}, max = -, maxIndex = -, min = , minIndex = -;
for (int i = ; i < ; i++) {
printf("输入%d个数:\n",i+);
scanf("%d",&number[i]);
}
//输出数据
for (int i = ; i < ; i++) {
//判断最大值
if (number[i] > max) {
max = number[i];
maxIndex = i;
}
//判断最小值
if (number[i] < min) {
min = number[i];
minIndex = i;
}
}
printf("max:%d,index%d\n", max, maxIndex);
printf("min:%d,index%d\n", min, minIndex); /*
3)输入五个同学的分数,刚好下标就是学生学号,问最高分的学生学号是多少?最低分学生的学号是多少?
*/
//可变数组,在声明数组前可以修改数组的长度,一旦数组声明,其长度不可变。
int length = ;
printf("输入有几个学生:");
scanf("%d",&length);
int number[length];
int max = , maxIndex = -, min = , minIndex = -, sum = ; printf("数组所占内存空间:%ld\n",sizeof(number));
printf("数组中元素所占内存空间:%ld\n",sizeof(number[]));
printf("数组长度:%ld\n",sizeof(number) / sizeof(number[])); for (int i = ; i < length; i++) {
printf("输入第%d个学生的分数:",i+);
scanf("%d",&number[i]);
if (number[i] < || number[i] > ) {
printf("警告:分数不能小于0或大于100\n");
i--;
//continue;
}
} for (int i = ; i < length; i++) {
//高分学号
if (number[i] > max) {
max = number[i];
maxIndex = i;
}
//最低学号
if (number[i] < min) {
min = number[i];
minIndex = i;
}
//总分
sum += number[i];
} printf("最高分学号:%d,最低分学号:%d\n", maxIndex, minIndex);
printf("总分:%d\n",sum);
printf("平均分:%d\n",sum / length); return ;
}

8 可变数组,在声明数组前可以修改数组的长度,一旦数组声明,其长度不可变。

在数组长度不确定时,可使用可变数组。

9 数组长度=数组所占内存空间/元素所占内存空间

sizeof(array) / sizeof(array[0])

当数组过多,只要知道数组名,使用sizeof计算出数组的长度。

练习:输入某班学生信息(人数不确定),以学号为标识,学号从1开始,将所有学生的考试成绩保存到数组中,求出总分、平均分、最高分及学号、最低分及学号。

 #include <stdio.h>
//在一个项目中不能有两个mian函数
//在通常练习中,项目中会创建多个文件,所以我们会修改编译、链接操作,去掉不需要编译的文件(选中文件点击‘-’号或delete),点击项目名称 -> bulid phases -> Compile Sources 保留需要的文件
int main()
{
/*
输入某班学生信息(人数不确定),以学号为标识,学号从1开始,将所有学生的考试成绩保存到数组中,求出总分、平均分、最高分及学号、最低分及学号。
*/
printf("请输入班级人数:\n");
int numbers = ;//声明变量保存人数
scanf("%d",&numbers); //保存所有的学生成绩
int scores[numbers];
//输入学生成绩,这里的条件虽然可以直接写numbers,但是最好还是计算出长度,这样更灵活
for (int i = ; i < sizeof(scores) / sizeof(scores[]); i++) {
printf("请输入学号%d的成绩:\n",i+);
scanf("%d",&scores[i]);//scores+i也可以
}
int max = ,min = ,maxIndex = -,minIndex = -,sum = ,avg = ;
//遍历学生成绩
for (int i = ; i < sizeof(scores) / sizeof(scores[]); i++) {
//最大值
if (scores[i] > max) {
max = scores[i];
maxIndex = i;
}
//最小值
if (scores[i] < max) {
min = scores[i];
minIndex = i;
}
//求和
sum += scores[i];
}
//求平均值
avg = sum / (sizeof(scores) / sizeof(scores[]));
printf("最最高:%d,最高分学号:%d,最低分:%d,最低分学号:%d,总分:%d,平均分:%d\n",max,maxIndex,min,minIndex,sum,avg); return ;
}

回到顶部

四、多维数组

1 声明一个一维数组 int array[3];

2 声明一个二维数组 int array[3][2];// 3代表一维数组元素个数,2代表二维数组元素个数

4 初始化

int array2[3][2] = {{1,2},{3,4},{5,6}}; //标准赋值

int array2[3][2] = {1,2,3,4,5,6};//依次赋值

int array2[3][2] = {1,2,3,4};//不够补0

3二维数组的遍历,先遍历一维数组中的元素,在遍历二维数组中的元素。

4 一维数组根据元素的个数可以确定数组的长度

int array[] = {1,2,3,4};

二维数组的必须确定二维数组的长度

int array3[][2] = {1,2,3,4,5,6};

作业:通过键盘输入5个人的课程成绩(语文、数学、英语),分别求出课程的平均分、各科成绩的总分,所有课程的平均分。

a、解决数据输入问题

b、显示问题

c、switch 0->张 0->语文

d、处理运算、计算数值

e、求谁的分高?

j张 李 王 赵 钱

i语文   10 10 10 1 0 1 0

数学   10 10 10 1 0 1 0

英语   10 10 10 1 0 1 0

语文总分:数学总分:英语总分

语文平均分:数学平均分:英语平均分

总平均分:

 #include <stdio.h>
/*
作业:通过键盘输入5个人的课程成绩(语文、数学、英语),分别求出课程的平均分、各科成绩的总分,所有课程的平均分。
a、解决数据输入问题
b、显示问题
c、switch 0->张 0->语文
d、处理运算、计算数值
e、求谁的分高?
j张 李 王 赵 钱
i语文 10 10 10 10 10
数学 10 10 10 10 10
英语 10 10 10 10 10
语文总分:数学总分:英语总分
语文平均分:数学平均分:英语平均分
总平均分:
*/
int main()
{
//从键盘上输入3们课5个人成绩
int score[][] = {};
//保存每门课的总成绩
int sum[] = {};
//保存每门课的平均分
int avg[] = {};
//所有课程的平均分
int allAvg = ;
//输入
for (int i = ; i < ; i++) {
printf("请输入,课:");
//使用switch解决课显示问题
switch (i) {
case :
printf("语文,");
break;
case :
printf("数学,");
break;
case :
printf("英语,");
break;
}
for (int j = ; j < ; j++) {
printf("人:");
switch (j) {
case :
printf("张,");
break;
case :
printf("李,");
break;
case :
printf("王,");
break;
case :
printf("赵,");
break;
case :
printf("钱,");
break;
}
//使用switch解决人显示问题
printf("的成绩:");
scanf("%d",&score[i][j]);
}
}
//输出
printf(" 张 李 王 赵 钱\n");
for (int i = ; i < ; i++) {
switch (i) {
case :
printf("语文 ");
break;
case :
printf("数学 ");
break;
case :
printf("英语 ");
break;
}
for (int j = ; j < ; j++) {
printf("%d ",score[i][j]);
//累计课程的和
sum[i] += score[i][j];
//每门课的平均分
avg[i] = sum[i] / ;
}
//总平均分
allAvg += avg[i];
printf("\n");
}
//显示每门课的总分
for (int i = ; i < ; i++) {
//使用switch解决课显示问题
switch (i) {
case :
printf("语文,");
break;
case :
printf("数学,");
break;
case :
printf("英语,");
break;
}
printf("总分:%d,",sum[i]);
}
printf("\n");
//显示每门课的平均分
for (int i = ; i < ; i++) {
//使用switch解决课显示问题
switch (i) {
case :
printf("语文,");
break;
case :
printf("数学,");
break;
case :
printf("英语,");
break;
}
printf("平均分:%d,",avg[i]);
}
printf("\n");
//所有课程的平均分
printf("所有课程平均分:%d\n",allAvg / );
return ;
}

09-C语言数组的更多相关文章

  1. GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  2. C语言 数组 列优先 实现

    C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...

  3. C语言 数组 行优先 实现

    C语言数组结构行优先顺序存储的实现 (GCC编译). /** * @brief C语言 数组 行优先 实现 * @author wid * @date 2013-11-02 * * @note 若代码 ...

  4. 不可或缺 Windows Native (5) - C 语言: 数组

    [源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...

  5. C语言数组

    在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...

  6. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  7. Go语言数组的使用

    Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...

  8. Go 语言数组

    Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number ...

  9. C语言 > 数组和指针

    C语言 数组和指针 const: 关于指针和const需要注意一些规则.首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的. 然而,只能把非const数据的地 ...

  10. Go语言数组和切片的原理

    目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...

随机推荐

  1. canvas学习笔记(一)-认识canvas

    canvas是html5新增的一个标签,主要用于图形的绘制.我们可以把它理解为是浏览器给我们提供了一个画板,至于要绘制怎样的画卷,就看神笔马良你的主意了.而在canvas上绘制图形使用的笔,就是js了 ...

  2. Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

    1 前言 Python有许多IDE能够用,官方自己也带了一个,Eclipse也能够. 但我在使用各种IDE之后,发现用Sublime Text是最好用的一个.因此.我都是用Sublime Text来编 ...

  3. javaScript 工作必知(六) delete in instanceof

    in in 判断  左边 的字符串或者能转换成字符串的是否属于 右边 的属性. var data = { x: 1, y: 4 };//定义了直接对象 alert("x" in d ...

  4. 响应式(css_media)

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  5. JDK1.7 安装加(一劳永逸的环境配置)

    1.去oracl官网下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html. ...

  6. 初学JSoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出 ...

  7. ORACLE恢复误删除的对象(表、存储过程等)

    1.恢复存储过程 原理就是利用了oracle里所有的存储过程的源代码都是存在dba_source里,而drop某个存储过程的时候,oracle这里肯定要去dba_source里把相关的源代码给dele ...

  8. vs vsvim viemu vax 备忘

    使用gt和gT往返标签 gd:到达光标所在处函数或者变量的定义处. *:读取光标处的字符串,并且移动光标到它再次出现的地方. #:和上面的类似,但是是往反方向寻找. /text:从当前光标处开始搜索字 ...

  9. 定义一个runtime的Annotation

    import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(value ...

  10. java下拉框,滚动条

    package com.soft.test; /** * 下拉列表.下拉框.滚动条的使用 */ import javax.swing.*; import java.awt.*; public clas ...