1.数组是一种构造类型. 一维数组的定义: 类型说明符 数组名[数据个数//只能是常量] = {值1,值2.....}
2.数组下标从 0 开始,到 总个数-1 .
3.数组元素是变量, 区别 定义数组 和 数组元素 (有没有类型)
4.下标注意不要越界 系统不会检测 . 数组是一个整体 不能直接参加运算 只能对对单个元素进行处理 通常用到数组的地方都会用到循环
课上练习(1):有一个10个元素的数组,输出 每个数组元素的值=原值/数组首元素
float a[10] = {0};
for (int i = 0; i
< 10; i++) {
a[i] =
arc4random() % (100 - 1 + 1) + 1;
printf("a[%d] = %.2f\n",i,a[i]);
}//正序
for (int i = 9; i >= 0; i--)
{
a[i] /=
a[0];
printf("a[%d] =
%.2f\n",i,a[i]);
}//逆序
(2).一个数组复制给另一个
int a[20] = {0},b[20] = {0};
for
(int i = 0; i < 20; i++) {
a[i]
= arc4random() % (50 - 20 + 1) +
20;
b[i] =
a[i];
printf("a[%d] =
%d\n",i,a[i]);
printf("b[%d] =
%d\n",i,b[i]);
}
(3).两个数组下标相同的元素相加赋给第三个数组
int a[10] = {0},b[10] = {0},c[10] = {0};
for (int i = 0; i < 10; i++)
{
a[i] = arc4random() % (40 - 20 +
1) + 20;
b[i] = arc4random() % (40
- 20 + 1) + 20;
c[i] = a[i] +
b[i];
printf("a[%d]=%d\n",i,a[i]);
printf("b[%d]=%d\n",i,b[i]);
printf("a[%d]+b[%d]=%d\n",i,i,c[i]);
}
5.冒泡排序
双层循环 外层是冒泡趟数,内层是比较次数;
练习:随机输出10个数,并从小到大输出
int a[10] = {0};
int temp = 0;
for (int i = 0; i < 10; i++)
{
a[i] = arc4random() % (100 - 1 +
1) + 1;
}
for
(int i = 0; i < 10 - 1; i++) {
for (int j = 0; j < 10 - i - 1; j++)
{
if (a[j]
> a[j+1])
{
temp =
a[j];
a[j] =
a[j+1];
a[j+1] =
temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
6.字符数组
(1)strlen
字符 char c[7]={‘i‘,‘p‘,‘h‘,‘o‘,‘n‘,‘e‘,‘\0‘}; // \0结束符 不算字符
字符串 char c[7] = "iphone";
字符串所占的空间 至少比 字符串长度 大1课上练习:
char a[] = {‘H‘,‘e‘,‘l‘,‘l‘,‘o‘,‘
‘,‘L‘,‘a‘,‘n‘,‘o‘,‘u‘,‘\0‘};
char b[] = "Hello
lanou";
long alength =
strlen(a);//字符串长度
long blength =
strlen(b);
printf("alength =
%ld\n",alength);
printf("blength =
%ld\n",blength);
long asize =
sizeof(a);//所占空间长度
long bsize =
sizeof(b);
printf("asize =
%ld\n",asize);
printf("bsize = %ld\n",bsize);
输出:alength = 11
blength =
11
asize =
12
bsize = 12
(2)strcpy(b,a);//把a复制给b 注意 b的空间要比a大
练习char a[] = "hello";
char b[6] = "";//char b[6]
= {‘\0‘};
strcpy(b, a);
printf("b = %s\n",b);
(3)strcat(a,b);//b拼接在a后面 赋给a 注意 a 要足够大
char a[12] = "Hello";
char b[] =
"Lanou!";
strcat(a,
b);
printf("%s\n",a);
(4)int value = strcmp(a,b);//a - b赋给value a,b不能是单个字符
char a[] = "hi";
char b[] =
"hello";
int value = strcmp(a,
b);
printf("value = %d\n",value);
练习
(1)char a[] = "i love ios,i want an iphone5s";
int i =
0,count = 0;
while (a[i] != ‘\0‘)
{
if (a[i] == ‘ ‘)
{
count++;
}
i++;
}
printf("有%d个空格\n",count);
作业:
1、随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和。
2.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。
3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。
4.有1000000个数,每个数取值范围是0-999999,找出其中重复的数。(面试题)
原文:http://www.cnblogs.com/lxllanou/p/3582265.html