C语言基础day5

复习

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. 字符串注意要点:

  1. ‘\0’ 是由c编译系统自动加上的。 ascii 0

  2. 字符串是由双引号引起来的。 “a” --> ‘a’ ‘\0’

  3. “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()

在控制台输入时,在按回车键之前,所有的输入都不会被放进输入的缓存中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fgm3uQGd-1645615093887)(C:\Users\mudonghai\Desktop\C基础\day5\image-20220110112050592.png)]

都不在输入的缓存中

直到按下回车键 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

encounter♌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值