复习
do-while
do
{
循环体
}while(表达式);
第一次循环体是无条件执行
三种循环写法是可以互相替代的!
while 不以循环次数作为循环条件
for 以循环次数作为循环条件
do-while 校验循环体执行的结果,不符合预期就循环
定义一维数组
int a[10]; 定义数组时,必须指定长度,长度必须是常量。 //[] {} () <>
元素赋值
a[0];//数组里的第一个元素 0叫做这个元素的角标
a[9];//数组的最后一个元素,数组的最后一个元素的角标一定是数组的长度-1。千万不要越界。
元素的角标还可以是变量
for(i = 0;i < 10;i++)
{
printf("%d ", a[i]);//数组元素的角标经常被写成变量
}
初始化
定义变量的时候赋值,叫初始化。
完全初始化:
int a[3] = {1,2,3}; 注意,不能使用{}给数组赋值,只有初始化的时候才可以使用{}
初始化的数据的数量和数组的长度是一样的。
部分初始化:
int a[3] = {1}; 初始化的数据的数量小于数组的长度。a[0] = 1 剩下的元素补0。
int a[3] = {0}; a[0] = 0 剩下的元素补0。
默认初始化:
int a[] = {1,2,3}; 根据初始化数据的数量来确定数组的长度。
遍历
作业1
求 100 - 200 的素数(质数:只能被1和他自己整除的整数)。
#include <stdio.h>
int main()
{
int num;
for(num = 100;num < 201;num++)
{
int i;
//i在循环中的取值范围2~num-1
//只要有一个i值把num整除,它就不是质数
//使用否定的逻辑更容易得到结果
for(i = 2;i < num;i++)
{
//只要找到一个i的值把num整除,就不必再判断
if(num%i == 0)
{
break;
}
}
if(i == num)//是质数
{
printf("%d 是质数\n", num);
}
}
return 0;
}
作业2
请输出斐波那契数列的前 20 项。
已知前两项:1 1 。 从第三项开始,每一项都是前两项之和。 1 1 2 3 5 8 13 21 34 。。。6765
#include <stdio.h>
int main()
{
int fs[20] = {1, 1};
int i;
for(i = 2;i < 20;i++)
{
fs[i] = fs[i-1]+fs[i-2];
}
for(i = 0;i < 20;i++)
{
printf("%d ", fs[i]);
}
printf("\n");
return 0;
}
1、一维数组(字符类型)
字符型的一维数组和非字符型的一维数组特性都是一样的!
字符数组常用来存放字符串!!!
1. 字符串(常量):
以 ‘\0’ 作为结束标志的一组字符。
打印’\0’什么都看不到,它的作用就一个,作为字符串的结尾。
“hello world” 有多少个字符? 字符串常量会自动在所有字符的结尾加字符’\0’ ascii码值是0
“w” 也是字符串常量,因为 ” ” ‘w’ ‘\0’
“” 也是字符串常量 只有’\0’
2. 字符串注意要点:
-
‘\0’ 是由c编译系统自动加上的。 ascii 0
-
字符串是由双引号引起来的。 “a” --> ‘a’ ‘\0’
-
“hello” 字符串的长度:字符串里非’\0’的字符数量,所以"hello"长度是5;
字符串占内存大小,“hello” 占6字节
3. 字符数组的初始化
char s[] = “hello”; //字符串常量可以直接初始化字符数组,默认初始化 字符数组里 ‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’,所以数组s的长度是6。
char a[] = {‘h’,‘e’,‘l’,‘l’,‘o’,’\0’};//数组a和数组s是等价的,因为数组里的内容是一样的。所以数组a里面存放的也是字符串。
char b[] = {‘h’,‘e’,‘l’,‘l’,‘o’}; //数组b和数组a不等价,因为没有字符’\0’,所以数组b中存放的不是字符串,存放的只是一些字符。
char c[10] = {‘h’,‘e’,‘l’,‘l’,‘o’}; //因为部分初始化,剩余的元素会自动补数字0,而数字0就是字符’\0’,所以数组c里面存放的是字符串。
任何基本类型的数组,部分初始化,都是补数字0。
0 整数零
‘\0’ 字符杠零
整数零和字符杠零等价。都可以作为字符串的结尾。
在数组的部分初始化时,补的是整数零(等价于字符杠零)
‘0’ 字符零 和上面两个毫无关系,它是整数48
“1232909” 字符串里出现了0 是 字符零
‘0’
4. 输入输出
1)字符输入输出函数:
输入: getchar(); 只能输入一个字符 如果想使用getchar()获得多个字符,需要循环调用getchar()。
输出: putchar(); 只能输出一个字符,如果想输出多个字符,需要循环调用putchar()
在控制台输入时,在按回车键之前,所有的输入都不会被放进输入的缓存中。
都不在输入的缓存中
直到按下回车键 enter,才会将以上的字符,连同’\n’一起放到缓存中
缓存中的内容 ‘q’ ‘r’ ‘w’…‘t’ ‘\n’
此时,每执行一次getchar(),会从输入缓存中拿走一个字符。
#include <stdio.h>
int main()
{
char c;
c = getchar();
putchar(c);
return 0;
}
2)字符串输出输入函数:
get string
输入: gets(); 得不到最后的’\n