学习嵌入式 Day04

while

int i=1;

while(i<5)

{

printf("%d\n",i);

i++;

}

死循环:while(1);

do ... while

 int i=12;
    do
    {
       printf("%d ",i);
       i++;
    } while (i<=6);  //do while 无论条件是否成立,都会先执行一次。
    
    /* while (i<=6)
    {
        printf("%d ",i);  //先进行判断,后执行程序
        i++;
    } */

while 先判断,后执行

do ... while 先执行(一次),后判断

循环控制语句

for (int i = 1; i < 6; i++)

{

if (i==3)

{

// break; //1 2

// continue; //1 2 3 4 5

return 0; //1 2

}

printf("%d\n",i);

}

数组

一个或多个相同类型的数据组成的集合。

特点:1. 数据类型必须相同;

2. 内存连续。

一维数组:

格式:

存储类型 数据类型 数组名[元素个数]

int a[5]

注:只有在定义数组时,[ ] 中元素表示元素个数,其他情况下[ ]表示的是索引/下标。

strcpy(s, "world");若初始化时未赋值,只能通过这个函数来赋值

例:

int a[5] = {1,2,5,6,8};

printf("%d %d %d\n",a[0],a[2],a[4]); //1 5 8

访问元素:数组名[索引] // 索引从 0 开始

数据类型保持一致

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

char b[5]={'q','w','e'};

数组名:

!数组名也是数组首地址,是一个地址常量,不能被修改(不能为左值)。

%p:地址

int a[5] = {1,2,5,6,8};

printf("%d %d %d\n",a[0],a[2],a[4]); //1 5 8

printf("%p\n",a); //0x7ffe804e70d0

printf("%p\n",&a[0]); //0x7ffe804e70d0

a[5] 5 :数组大小

a[5] 5 :数组大小

sizeof(a)-->元素个数 * 数据类型大小 5*4=20

int a[5] = {1,2,5,6,8};

int a1[5] = {3,4};

int a2[5] = {9};

int b[] = {1,2,5,6,8};

int b1[] = {3,4};

int b2[] = {9};

printf("%ld\n",sizeof(b)); //20

printf("%ld\n",sizeof(b1)); //8

printf("%ld\n",sizeof(b2)); //4

printf("%ld\n",sizeof(a)); //20

printf("%ld\n",sizeof(a1)); //20

printf("%ld\n",sizeof(a2)); //20

初始化

  • 完全初始化

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

  • 部分初始化

int a[5]={2,3};

未初始化部分,默认值为0;

int a[5] = { }; // 0 0 0 0 0

int a[5] = { 0 }; // 0 0 0 0 0

—————————————————————————————————

int a[5]={4,5}; //部分初始化

printf("%d %d\n",a[2],a[3]); //0 0

  • 未初始化

int a[5];

值为随机值;

可单独赋值 a[0] = 2;

遍历数组

int a[5]={};
for (int i = 0; i < 5; i++)
{
    scanf("%d",&a[i]);
}
for (int i = 0; i < 5; i++)
{
    printf("%d\n",a[i]);
}

int a[5]={9,8,7,6,5};

for(int i=0;i<5;i++)

{

printf("%p\n",&a[i]);

}

练习:数组随机赋五个值,求其中最大值和最小值。

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a[5]={};
    for (int i = 0; i < 5; i++)
    {
        scanf("%d",&a[i]);
    }
    int max=a[0],min=a[0];
    for (int i = 0; i < 4; i++)
    {
        if (max<a[i+1])
        {
            max = a[i+1];
        }
        if (min>a[i+1])
        {
            min = a[i+1]; 
        }
    }printf("最大值为:%d\n最小值为:%d\n",max,min);
    return 0;
}

清零函数

bzero

#include <strings.h>

void bzero (void *s, size_t n);

功能:数组清零(将其中值变为0)

参数:s:数组首地址 n:字节大小 size _t==int

返回值:无

bzero(a,sizeof(a)); //数组清零

for(int i=0;i<5;i++)

printf("%d\n",a[i]); //0 0 0 0 0

return 0;

memset

#include <string.h>

void *memset(void *s, int c, size_t n);

功能:数组清零

参数:s:数组首地址 n:字节大小 c:要设置的值

返回值:数组首地址

memset(a,0,sizeof(a)); //数组清零

for(int i=0;i<5;i++)

printf("%d\n",a[i]); //0 0 0 0 0

return 0;

按字节赋值 int 4字节

1字节=8位 00000001 00000001 00000001 00000001

字符数组

存放字符串

char a[5]= {'n','i','c','e'};

char b[5]={"nice"};

char c[33]="nice";

char d[]="nice";

printf("%ld\n",sizeof(a)); //5

printf("%ld\n",sizeof(b)); //5

printf("%ld\n",sizeof(c)); //33

printf("%ld\n",sizeof(d)); //5

字符数组输入输出

  1. for

for(int i=0;i<5;i++)

scanf("%c",&ch[i]);

for(int i=0;i<5;i++)

printf("%c",ch[i]);

  1. %s

char [33] = {0};

scanf("%s",ch);

printf("%s\n",ch);

—————————————————————————

char ch[33]={0};

scanf("%[^\n]",ch);//scanf默认遇到空格或回车赋值结束,如果想保留空格, 可以加 scanf("%[^\n]",ch)

printf("%s\n",ch);

3. gets puts字符串专用)

gets

char *gets(char *s);

功能:终端输入字符串

参数:字符数组首地址

返回值:字符数组首地址

puts

int puts(const char *s);

功能:终端输出字符串

参数:字符数组首地址

返回值:字符个数

char s[33]={};

gets(s);

puts(s);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值