c12---数组
//
// main.c
// 数组基本概念
//
// Created by xiaomage on 15/6/9.
// Copyright (c) 2015年 itcast. All rights reserved.
// #include <stdio.h> int main(int argc, const char * argv[]) { // 当需要保持很多"相同类型"的数据时就可以使用数组来保持
// 因为如果使用变量, 那么将变得非常复杂, 并且非常没有技术含量
int score = ;
int score1 = ;
...
int score998 = ;
printf("%i\n", score); /*
数组的定义格式:
数据类型 变量名称;
数据类型 数组名称[数据的个数];
元素类型 数组名称[元素个数];
元素类型: 就是数组中需要存储的数据类型, 一旦指定, 数组中就只能存储该类型的数据
元素个数: 就是数组中能够存储的数据(元素)的个数
*/
int num;
num = ;
printf("num = %i\n", num); int scores[]; // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据
// scores = 12; // 系统搞不清楚应该赋值给谁
// 只要定义一个C语言的数组, 系统就自动会给数组中的每一块小得存储空间一个编号
// 这个编号从0开始, 一次递增
// 数组中系统自动绑定的编号, 我们称之为 索引
scores[] = ;
scores[] = ;
scores[] = ; printf("scores[0] = %i\n", scores[]); return ;
}
//
// main.c
// 数组的初始化和遍历
//
// Created by xiaomage on 15/6/9.
// Copyright (c) 2015年 itcast. All rights reserved.
// #include <stdio.h> int main(int argc, const char * argv[]) {
// 需求保持全班101个人的分数
// 元素类型 数组名称[元素个数];
/*
// 先定义再初始化
int scores[5];
scores[0] = 99;
scores[1] = 88;
scores[2] = 77;
scores[3] = 66;
scores[4] = 100;
*/
/*
int num;
num = 10; int num1 = 10;
*/
// 依次将{}中的每一个值赋值给数组中的每一个元素
// 并且从0开始赋值
// 也称之为数组的初始化(完全初始化)
int scores[] = {,,,,}; // 部分初始化
// 默认从0开始初始化, 依次赋值
// 注意: 如果"在部分初始化中"对应的内存没有被初始化, 那么默认是0
int scores1[] = {, };
printf("0 = %i\n", scores1[]);
printf("1 = %i\n", scores1[]);
printf("2 = %i\n", scores1[]); printf("-------\n"); // 注意: 如果没有对数组进行初始化(完全和部门), 那么不要随便使用数组中的数据, 可能是一段垃圾数据(随机值)
int scores2[];
printf("0 = %i\n", scores2[]);
printf("1 = %i\n", scores2[]);
printf("2 = %i\n", scores2[]); printf("-------\n"); // 注意: 定义数组的时候, 数组的元素个数不能使用变量, 如果使用变量, 那么数组中是一些随机值
int num = ;
int scores3[num];
printf("0 = %i\n", scores3[]);
printf("1 = %i\n", scores3[]);
printf("2 = %i\n", scores3[]); // 注意: 不建议使用变量定义数组, 如果使用了变量定义数组, 作为数组的元素个数, 不初始化的情况下是随机值, 如果初始化会直接报错
// int num2 = 10;
// int scores4[num2] = {11, 12};
printf("-------\n"); // 注意: 如果定义的同时进行初始化, 那么元素的个数可以省略
// 省略之后, 初始化赋值几个数据, 那么数组的长度就是几. 也就是说数组将来就能存储几个数据
int scores5[] = {, };
printf("0 = %i\n", scores5[]);
printf("1 = %i\n", scores5[]);
printf("-------\n"); // 注意; 如果定义数组时没有进行初始化, 那么不能省略元素个数
// int scores6[]; // 0 1 2 3 4
// int socres7[101] = {0, 0, 0, 1, 3};
// int socres7[101];
// socres7[99] = 1;
// socres7[100] = 3; // 可以通过[索引] = 的方式, 给指定索引的元素赋值
int socres7[] = {[] = , [] = };
printf("3 = %i\n", socres7[]);
printf("4 = %i\n", socres7[]); // 注意: 只能在定义的同时利用{}进行初始化, 如果是先定义那么就不能使用{}进行初始化
// 如果先定义那么就不能再进行整体赋值, 只能单个赋值
// int scores8[3];
// scores8 = {1 , 4, 19};
// scores8[0] = 1; return ;
}
//
// main.c
// 数组的遍历
//
// Created by xiaomage on 15/6/9.
// Copyright (c) 2015年 itcast. All rights reserved.
// #include <stdio.h> int main(int argc, const char * argv[]) {
// 取出数组中所有的值, 称之为遍历
int scores[] = {, , , , , , , };
/*
printf("scores[0] = %i\n", scores[0]);
printf("scores[1] = %i\n", scores[1]);
printf("scores[2] = %i\n", scores[2]);
printf("scores[3] = %i\n", scores[3]);
printf("scores[4] = %i\n", scores[4]);
printf("scores[5] = %i\n", scores[5]);
*/
// 注意: 在遍历数组的时候, 尽量不要把遍历的次数写死
// 遍历多少次应该由数组来决定, 也就是说遍历多少次应该通过数组计算得出
/*
printf("scores = %lu\n", sizeof(scores)); // 计算出数组占用的总字节数
printf("scores[0] = %lu\n", sizeof(scores[0])); // 计算出数组中某一个元素占用的字节数
printf("一个有多少个元素 : %lu\n", sizeof(scores) / sizeof(scores[0]));
*/
// 动态计算数组的元素个数
int length = sizeof(scores) / sizeof(scores[]); for (int i = ; i < length; i++) {
printf("scores[%i] = %i\n", i,scores[i]);
}
return ;
}
c12---数组的更多相关文章
- PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...
- 后缀数组:倍增法和DC3的简单理解
一些定义:设字符串S的长度为n,S[0~n-1]. 子串:设0<=i<=j<=n-1,那么由S的第i到第j个字符组成的串为它的子串S[i,j]. 后缀:设0<=i<=n- ...
- 后缀数组 & 题目
后缀数组被称为字符串处理神器,要解决字符串问题,一定要掌握它.(我这里的下标全部都是从1开始) 首先后缀数组要处理出两个数组,一个是sa[],sa[i]表示排名第i为的后缀的起始位置是什么,rank[ ...
- POJ2406 Power Strings(KMP,后缀数组)
这题可以用后缀数组,KMP方法做 后缀数组做法开始想不出来,看的题解,方法是枚举串长len的约数k,看lcp(suffix(0), suffix(k))的长度是否为n- k ,若为真则len / k即 ...
- POJ 2406 KMP/后缀数组
题目链接:http://poj.org/problem?id=2406 题意:给定一个字符串,求由一个子串循环n次后可得到原串,输出n[即输出字符串的最大循环次数] 思路一:KMP求最小循环机,然后就 ...
- POJ 1743 Musical Theme(后缀数组)
题意:有n个数值,算出相邻两个值的差值,此时有n-1个值的序列,把这序列当做字符串的话,求最长重复子串,且这两个子串不能重叠. 分析:后缀数组解决.先二分答案,把题目变成判定性问题:判断是否存在两个长 ...
- POJ 2774 Long Long Message (后缀数组模板)
借用罗大神的模板,开始搞后缀数组 #include <cstdio> #include <iostream> #include <cstring> #include ...
- POJ 3261 Milk Patterns(后缀数组+二分答案+离散化)
题意:给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠. 分析:经典的后缀数组求解题:先二分答案,然后将后缀分成若干组.这里要判断的是有没有一个组的符合要求的后缀个数(height ...
- HDU 4691(多校第九场1006) 后缀数组
...还能多说什么. 眼角一滴翔滑过. 一直以为题意是当前串与所有之前输入的串的LCP...然后就T了一整场. 扫了一眼标程突然发现他只比较输入的串和上一个串? 我心中突然有千万匹草泥马踏过. 然后随 ...
- js数组sort排序方法的算法
说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD ...
随机推荐
- Qt5.9 WebChannel
Qt WebChannel enables peer-to-peer communication between a server (QML/C++ application) and a client ...
- Super超级ERP系统---(4)采购管理--采购单创建
Erp系统中采购是系统必不可少的一部分,也就是ERP种的进货模块,超级ERP系统中的采购模块选选择采购供应商,然后选择进货商品的数量和采购价格,创建采购进货单 1.创建采购单 2.审核采购单 采购单创 ...
- SQLServer Union 和 Union All 在Insert 语句中的不同效果
如果不是发了那个帖子还不会像这样意外发现这两者的不同,好歹了也工作了一段时间,真是汗颜 上例子: 执行此条插入语句后,只会插入两条数据,因为会把完全重复的数据过滤掉 insert into tests ...
- Ajax+Struts做登录判断
Action类里: /* * 登录 */ public ActionForward doLogin(ActionMapping mapping,ActionForm form,HttpServletR ...
- 打开word2010每次都要配置进度的解决办法
作者:朱金灿 来源:http://blog.csdn.net/clever101 不小心把ms office2010搞坏了,于是重装ms office2010,结果一打开word文档时总是出现下面的对 ...
- 2nd
Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引 ...
- Mac 查看 剪贴板/剪切板/粘贴板 内容与格式
命令行形式 osascript -e 'clipboard info' GUI 形式 Finder->编辑->显示剪贴板 图示:
- ES6的let命令
1.let命令所在的代码块内有效: 2.循环的计数器,就很合适使用let命令:(for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域.) 例如:如下会输出十次s ...
- SPOJ-CRAN02 - Roommate Agreement(前缀和)
CRAN02 - Roommate Agreement Leonard was always sickened by how Sheldon considered himself better tha ...
- 安装oracle执行runInstaller文件时报错:“……/install/.oui:Permission denied”
一:问题描述 二:出错原因 将windows下未解压的Oracle安装软件上传到了linux服务器,导致有三个文件的执行权限丢失. 三:解决方法 为其赋予相应权限即可. 1: [root@MyPc ~ ...