C++嵌入式 C语言

本文详细介绍了C语言的基本概念,包括程序的生成过程、计算机语言、C语言开发环境的搭建以及变量、数据类型的使用。接着,讲解了流程控制结构如if-else、switch-case、循环,并涉及数组、函数、指针等核心概念。此外,还讨论了字符串处理和文件操作,为读者提供了全面的C语言学习指导。
摘要由CSDN通过智能技术生成

目录

1. 前言

1.1 什么是程序

1.2 认知延伸之程序和数据算法的关系

1.3 产生一个程序的过程

1.4 计算机语言

2. 初始

2.1 C语言开发环境

2.2 开发环境安装

2.3 C程序的基础框架

2.4 变量

2.5 变量名 / 标识符

 2.6 计算机的数据类型

 2.7 printf打印

3. 流程控制 

4. 数组

5. 函数 

6. 指针

7. 字符串

8. 结构体

9. 文件

10. 疑难杂症


1. 前言

1.1 什么是程序

1.2 认知延伸之程序和数据算法的关系

算法 + 数据结构 = 程序

进程/任务: 跑起来的程序叫做进程,动态概念

1.3 产生一个程序的过程

编程 -> 编译 -> 执行

编译: 预处理 -> 编译 -> 汇编 -> 链接

1.4 计算机语言

2. 初始

2.1 C语言开发环境

2.2 开发环境安装

2.3 C程序的基础框架

#include <stdio.h>          // 编译预处理指令
#include <stdlib.h>
int main()                  // 程序的入口主函数main
{

    // 你要写的代码

    return 0;               // 程序推出遣前返回给调用者(操作系统)的值
}                           // 程序(函数、功能)结束标志

2.4 变量

2.5 变量名 / 标识符

 2.6 计算机的数据类型

 2.7 printf打印

#include <stdio.h>
/*
    注释
*/

int main()
{
    int a = 3;    
    printf("你好,世界");
    
    printf("%d", a);        //占位符
    
}

 

#include <stdio.h>
int main()
{
    int a = 3;
    float f = 2.3;
    char c = '#';

    int data = 10;
    int chushu = 3;
    float result;

    result = (float)data/chushu;    //强制转换

    a = 88;
    printf("你好\n");
    printf("16进制输出a=0x%x\n",a);
    printf("float = %f\n",f);
    printf("char:%c\n",c);
    printf("a的地址:%p\n",&a);
    printf("result:%f\n",result);
    return 0;
} 

//你好
//16进制输出a=0x58       
//float = 2.300000 
//char:#
//a的地址:000000000061FE14
//result:3.333333   

2.8 printf exc

2.9 scanf输入

 

#include <stdio.h>

int main()
{
    int data, data2, data3;
    printf("请输入一个整数:\n");
    scanf("%d", &data);
    printf("输入完毕\n"); 
    printf("你输入的数据是:%d\n", data);

    printf("请输入3个数:\n");
    /*
        scanf中不要添加,
    */
    scanf("%d%d%d",&data,&data2,&data3);
    printf("你输入的数据是: data=%d,data2=%d,data3=%d\n",data,data2,data3);
    
    return 0;
}

 getchar:

#include <stdio.h>

/*
    跟printf的区别:
    1.自动加入换行符
    2.printf支持多种输出,而puts只是输出字符串
*/
int main()
{
    char c;

    puts("请输入一个字符");
    c = getchar();
    puts("你输入的字符是");
    putchar(c);

    return 0;
}

 ASIC码值

#include <stdio.h>

int main()
{
    char a = 'a';
    char b = 'b';

    char A = 'A';
    char B = 'B';

    printf("%c, %c, %c, %c\n", a, b, A, B);
    printf("a=%d, b=%d, A=%d, B=%d\n", a, b, A, B);

    // Asic码值
    puts("请输入一个大写字母\n");
    scanf("%c", &a);
    b = a + 32;
    printf("你输入的字母对应的小写字母是 %c \n", a + 32);
    printf("你输入的字母对应的小写字母是 %c \n", b);

    getchar();  //吸收回车符 
    //当分多次连续scanf获得字符的时候,要注意回车符
    putchar(getchar() + 32);

    return 0;
}

3. 流程控制 

3.1 if else

#include <stdio.h>

int main()
{
    int money;
    printf("输入收入:\n");
    scanf("%d", &money);

    if (money >= 100)
    //==判断;=赋值
    // 判断会转换为0/1(True/False)
    {
        printf("高收入!\n");
    }
    puts("谈话结束。");
    printf("测试结果:%d\n", money >= 100); 
    
    return 0;
}
#include <stdio.h>

int main()
{
    char cdata;

    printf("请输入一个字符\n");
    scanf("%c", &cdata);

    if (cdata >= 97 && cdata <= 122)
    {
        printf("%c\n", cdata);
    }
    else if (cdata >= 65 && cdata <= 122)
    {
        printf("%c\n", cdata + 32);
    }
    else
    {
        printf("请输入正确的字符\n");
    }

    printf("done!\n");

    return 0;
}

交换数值

#include <stdio.h>

int main()
{
    int data1;
    int data2;
    int datatmp;

    printf("请输入两个数:\n");
    scanf("%d%d", &data1, &data2);
    if (data1 > data2)
    {
        // 交换
        datatmp = data1;
        data1 = data2;
        data2 = datatmp;
    }

    printf("%d,%d\n", data1, data2);
}

3.2 逻辑运算与或非

#include <stdio.h>

int main()
{
    int a;
    int b;

    printf("请输入a,b两个数:\n");
    scanf("%d%d", &a, &b);

    if (a == 1 && b == 0)
    {
        printf("逻辑与");
    }
    if (a == 1 || b == 0)
    {
        printf("逻辑或");
    }
    if (!a)
    {
        printf("逻辑非");
    }

    return 0;
}

3.3 SwitchCase

#include<stdio.h>
int main()
{
    int data;
    printf("请输入一个数:\n");
    scanf("%d",&data);
    
    switch (data)
    {
        case 1:
            puts("满足条件1的情况");
            break;
        case 2:
            puts("满足条件2的情况");
            break;
        case 3:
            puts("满足条件3的情况");
            break;
    
        default:
            puts("满足其他情况");
            break;
    }

    return 0;
}

3.4 While循环

#include <stdio.h>

int main()
{
    int times = 10;
    while (times)   //当条件为真时执行
    {
        puts("times");
        times--;
        printf("times = %d\n",times);
    }

    return 0;
}
#include <stdio.h>

int main()
{
    int sum = 0;
    int data = 1;
    while (data <= 100) // 当条件为真时执行
    {
        printf("data = %d\n", data);
        sum = sum + data;
        data++;
        }
    printf("sum = %d\n", sum);

    return 0;
}

 doWhile

#include <stdio.h>

int main()
{
    int data = 0;

    do{
        printf("data test");
    } while (data != 0);

    return 0;
}

3.5 for循环

#include <stdio.h>

int main()
{   
    //  条件赋初值  判断临界值  条件改变
    for (int i = 0; i < 100; i++)
    {
        //设置初始条件,只执行一次
        //判断,执行循环体,条件改变
        printf("%d\n", i);
    }
}
#include <stdio.h>

int main()
{
    int i = 0;
    //  条件赋初值  判断临界值  条件改变
    for (; i < 100;)
    {
        // 设置初始条件,只执行一次
        // 判断,执行循环体,条件改变
        printf("%d\n", i);
        i++;
    }
}

 break

#include <stdio.h>

int main()
{
    // int numOfPerson;
    int totalMoney = 0;
    int money;

    for (int numOfPerson = 1; numOfPerson <= 1000; numOfPerson++)
    {
        printf("请输入捐款的数目:\n");
        scanf("%d", &money);
        totalMoney += money;
        if (totalMoney >= 100000)
        {
            puts("募捐金额以达到。");
            printf("总捐款人数是%d\n", numOfPerson);
            printf("人均募捐:%f\n", (float)(totalMoney / numOfPerson));
            break;  //提前结束循环
        }
    }

    return 0;
}

continue 

#include <stdio.h>

int main()
{
    for (int i = 100; i <= 200; i++)
    {
        if (i % 3 != 0)
        {
            continue; // 结束当前循环
        }
        printf("%d\n", i);
    }
    return 0;
}

 嵌套循环

#include <stdio.h>

int main()
{
    for (int i = 1; i <= 4; i++)
    {
        for (int j = 1; j <= 5; j++)
        {
            printf("%d ", i*j);
        }
        printf("\n");
    }
    return 0;
}

4. 数组

#include <stdio.h>
int main()
{
    int a[10];
    puts("初始化数组");
    for (int i = 0; i < 10; i++)
    {
        a[i] = i + 100;
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d\n", a[i]);
    }
    puts("done");
}
#include <stdio.h>
int main()
{
    int a[10];
    puts("初始化数组");
    for (int i = 0; i < 10; i++)
    {
        a[i] = i + 100;
    }
    for (int i = 0; i < 10; i++)
    {
        printf("address: %p, data: %d\n", &a[i], a[i]);
    }
    puts("done");

    int b[5] = {1, 2, 3, 4, 5}; // 初始化
    int c[5] = {1, 2, 3};       // 后面自动赋0
    int d[10] = {0};            // 全部赋值为0
    int e[] = {1, 2, 3, 4, 5};  // 根据赋值个数,确定数组长度

    int size = sizeof(e) / sizeof(e[0]);    //size关键字,计算数据的内存空间大小
    printf("e的个数有:%d\n", size);
    return 0;
}

逆序输出

#include <stdio.h>

int main(int argc, const char **argv)
{
    int arr[10];
    for (int i = 0; i < 10; i++)
    {
        arr[i] = i;
    }
    puts("当前数组是:");
    for (int i = 0; i < 10; i++)
    {
        printf("%d\n", arr[i]);
    }

    puts("逆序输出:");
    for (int i = 9; i >= 0; i--)
    {
        printf("%d\n", arr[i]);
    }

    return 0;
}

 数列

#include <stdio.h>

int main(int argc, const char **argv)
{
    int arr[30];
    arr[0] = 0;
    arr[1] = 1;
    for (int i = 2; i < 30; i++)
    {
        arr[i] = arr[i - 1] + arr[i - 2];
        printf("%d ", arr[i]);
    }

    printf("done");
    return 0;
}

 冒泡排序  

#include <stdio.h>

int main(int argc, const char **argv)
{
    int arr[] = {12, 5, 8, 16, 0, 1};
    int temp;
    int len = sizeof(arr) / sizeof(arr[0]);
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            if (arr[j] < arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("done");
    return 0;
}

 简单选择排序

#include <stdio.h>

int main(int argc, const char **argv)
{
    int arr[] = {12, 5, 8, 16, 0, 1};
    int temp;
    int len = sizeof(arr) / sizeof(arr[0]);
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = i + 1; j < len; j++)
        {
            if (arr[i] < arr[j])
            {
                temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }

    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("done");
    return 0;
}

二维数组 

#include <stdio.h>

int main(int argc, const char **argv)
{
    int a[2] = {1, 2};
    int a1[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int a2[2][3] = {9, 8, 7, 6, 5, 4};

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d,%d,%d \n", i, j, a1[i][j]);
        }
    }
    printf("%d \n", a2[1][2]);
    printf("done");
    return 0;
}

 

5. 函数 

6. 指针

7. 字符串

8. 结构体

9. 文件

10. 疑难杂症

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值