• 初识C语言 -- 结构体,分支和循环语句


    指针

    1. #include
    2. int main()
    3. {
    4. int a = 10; //向内存申请了4个字节的空间
    5. // &a取地址操作符
    6. // printf("%p\n",&a);
    7. int *p = &a; // *p指针变量,
    8. // printf("%p\n",p);
    9. *p = 15; // * --间接访问操作符
    10. printf("a = %d\n",a);
    11. return 0;
    12. }

    1.结构体(重要)

    结构体是我们创建出来的一种类型

    1. #include
    2. // 创建一个结构体
    3. struct Book
    4. {
    5. char name[20]; // 书名
    6. short price; // 价格
    7. }; // ;必不可少
    8. int main()
    9. {
    10. // 利用结构体类型创建一个该类型的结构体变量
    11. struct Book b1 = {"C语言", 20};
    12. printf("书名:%s\n",b1.name);
    13. printf("价格:%d\n",b1.price);
    14. b1.price = 15;
    15. printf("修改后的价格:%d\n",b1.price);
    16. return 0;
    17. }

    1.1 结构体+指针应用(重要)

    操作符:

    .   结构体变量.成员

    ->   结构体指针->  成员

    使用这种方法就可以定义一个结构体用来存放传感器的数据

    1. #include
    2. // 创建一个结构体
    3. struct Book
    4. {
    5. char name[20]; // 书名
    6. short price; // 价格
    7. }; // ;必不可少
    8. int main()
    9. {
    10. // 利用结构体类型创建一个该类型的结构体变量
    11. struct Book b1 = {"C语言", 20};
    12. struct Book *p = &b1;
    13. printf("%s\n", p->name); // ->是指针指向对象的操作符
    14. printf("%d\n", p->price);
    15. return 0;
    16. }
    1. #include
    2. #include
    3. // 创建一个结构体
    4. struct Book
    5. {
    6. char name[20]; // 书名
    7. short price; // 价格
    8. }; // ;必不可少
    9. int main()
    10. {
    11. // 利用结构体类型创建一个该类型的结构体变量
    12. struct Book b1 = {"C语言", 20};
    13. strcpy(b1.name, "C++"); // strcpy --字符串拷贝,库函数--string.h
    14. // 凡是结构体成员是字符串类型的,都需要采用strcpy才能修改其内容
    15. struct Book *p = &b1;
    16. printf("%s\n", p->name); // ->是指针指向对象的操作符
    17. printf("%d\n", p->price);
    18. return 0;
    19. }

    2.分支和循环

    C语言是一门结构化的程序设计语言,顺序结构、选择结构、循环结构

    2.1 分支语句(选择结构)

    C语言中由一个分号;隔开的就是一条语句。

    else匹配最近的一个if语句,除非加{}进行分割

    代码风格优化,常量与变量的值进行比较判断时,常量放在左边,变量放在右边

    1. int num = 1;
    2. if(5 == num){
    3. printf("%d\n",num);
    4. }

    练习:

    输出1--100之间的奇数

    1. /*
    2. *输出1~100之间的奇数
    3. *思路1:奇数为除以2之后有余数的整数
    4. *思路2:奇数就是2的倍数加1
    5. */
    6. #include
    7. // int main()
    8. // {
    9. // int i;
    10. // for(i = 1; i <= 100; i++)
    11. // {
    12. // if (i % 2 != 0)
    13. // printf("%d\t", i);
    14. // }
    15. // return 0;
    16. // }
    17. // 方法2
    18. int main()
    19. {
    20. int i;
    21. for (i = 1; i < 100; i += 2)
    22. {
    23. if (i % 2 != 0)
    24. printf("%d\t", i);
    25. }
    26. return 0;
    27. }

    输出结果:

     2.2 switch语句

    switch内允许嵌套

    2.3 循环语句

    while   for     do--while

    continue在while循环中的作用

    continue是用于终止本次循环,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。

    for循环:

    1.for循环的初始化、调整、判断都可以省略,但是for循环的判断部分被省略,则判断条件恒为真

    2.如果不是非常熟练,不要顺便省略for循环的各个部分

     练习1:计算n的阶乘

    1. #include
    2. int main()
    3. {
    4. int i = 0;
    5. int n = 0;
    6. int ret = 1;
    7. scanf("%d", &n);
    8. for (i = 1; i <= n; i++)
    9. {
    10. ret = ret * i;
    11. }
    12. printf("ret = %d\n", ret);
    13. return 0;
    14. }

    练习2:计算1!+2!+....+10!

    1. #include
    2. int main()
    3. {
    4. int i = 0;
    5. int n = 0;
    6. int ret = 1;
    7. int sum = 0;
    8. for (n = 1; n <= 10; n++)
    9. {
    10. ret = ret * n;
    11. sum = sum + ret;
    12. }
    13. printf("sum = %d\n", sum);
    14. return 0;
    15. }

    练习3:在一个有序数组中查找具体的某个数字n,编写intbinsearch(int x, int v[],int n);功能:在v[0]<=v[1]<=v[2]<=.....<=v[n-1]的数组中查找x.

    1. #include
    2. int main()
    3. {
    4. int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    5. int k = 7;
    6. // 写一个代码,在arr有序数组中找到7
    7. int i = 0;
    8. int sz = sizeof(arr) / sizeof(int);
    9. for (i = 0; i < sz; i++)
    10. {
    11. if (k == arr[i])
    12. {
    13. printf("已找到,下表是:%d\n", i);
    14. break;
    15. }
    16. }
    17. if (i == sz)
    18. printf("未找到\n");
    19. return 0;
    20. }

    二分法查找

    1. /*
    2. 采用二分法查找,有序数组
    3. */
    4. #include
    5. int main()
    6. {
    7. int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    8. int sz = sizeof(arr) / sizeof(int); // 计算数组中元素的个数
    9. int left = 0; // 左下标
    10. int right = sz - 1; // 右下标
    11. int mid = (left + right) / 2; // 中间元素的下标
    12. int k = 7;
    13. while (left <= right)
    14. {
    15. if (arr[mid] > k)
    16. right = mid - 1;
    17. else if (arr[mid] < k)
    18. left = mid + 1;
    19. else
    20. {
    21. printf("已找到,下表是:%d\n", mid);
    22. break;
    23. }
    24. }
    25. if (left > right)
    26. printf("找不到\n");
    27. return 0;
    28. }
  • 相关阅读:
    SpringBoot面试题4:Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
    我们与元宇宙的距离
    yarn CLI 命令
    Kafka (二) ---------- Kafka 快速入门
    你最少用几行代码实现深拷贝?
    Linux文本三剑客之首——awk
    三、考研C语言笔记——C语言的组成,数据,数据类型的区别,常量与变量区别,表达式中考点
    2023/10/1 -- ARM
    关于Python中install edge_tts记录
    【秋招基础】【2】笔试笔记
  • 原文地址:https://blog.csdn.net/qq_45355603/article/details/126008024