C语言程序设计第二讲:顺序程序设计

一、数据类型
1. 基本数据类型

C语言中提供了一些基本数据类型,用于表示各种不同类型的数据:

  • 整数类型
    • int:表示整数,通常占用4个字节。
    • short int:表示短整数,通常占用2个字节。
    • long int:表示长整数,通常占用4或8个字节。
    • long long int:表示更长的整数,通常占用8个字节。
    • unsigned int:表示无符号整数,只能表示非负整数。
    • unsigned short intunsigned long intunsigned long long int:分别表示无符号的短整数、长整数和更长的整数。
  • 浮点类型
    • float:单精度浮点数,通常占用4个字节。
    • double:双精度浮点数,通常占用8个字节。
    • long double:扩展精度浮点数,通常占用10个字节或更多。
  • 字符类型
    • char:表示单个字符,通常占用1个字节。可以存储字符或小整数(0到255)。
  • 字符串类型:在C语言中,字符串是一维字符数组,并以空字符\0结尾。
    char str[] = "Hello, World!";
    
2. 枚举类型
  • enum:用于定义枚举类型,其值是一些整型常量的集合。例如:
    enum Day {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
    
3. 复合数据类型
  • 数组:用于存储一组相同类型的数据。
    int arr[10];
    
  • 结构体:用于将不同类型的数据组合在一起。
    struct Point {int x;int y;
    };
    
  • 指针:用于存储变量的地址。
    int *p;
    
4. 类型定义
  • typedef:用于给已有的数据类型定义一个新的名字。
    typedef unsigned long ulong;
    
二、顺序程序设计
1. 变量和常量
  • 变量声明
    int a;// 整数类型
    float b;// 浮点型
    char c;// 字符型
    
  • 变量初始化
    int a = 10;
    float b = 3.14;
    char c = 'A';
    
  • 常量定义
    • 使用#define宏定义常量:
      #define PI 3.14
      
    • 使用const关键字定义常量:
      const int MAX = 100;
      
2. 运算符和表达式
  • 算术运算符+, -, *, /, %
  • 关系运算符==, !=, >, <, >=, <=
  • 逻辑运算符&&, ||, !
  • 位运算符&, |, ^, ~, <<, >>
  • 赋值运算符=, +=, -=, *=, /=, %=
  • 增量和减量运算符++, --
3. 运算符优先级和结合性

运算符优先级决定了表达式中各部分的计算顺序,结合性决定了运算符的计算方向。

  • 优先级:从高到低(部分运算符)
    • () [] -> .
    • ! ~ ++ -- + - * & sizeof
    • * / %
    • + -
    • << >>
    • < <= > >=
    • == !=
    • &
    • ^
    • |
    • &&
    • ||
    • ?:
    • = += -= *= /= %= <<= >>= &= ^= |=
  • 结合性:从左到右(部分运算符)
    • 左结合:* / % + - << >> < <= > >= == != & ^ | && ||
    • 右结合:= += -= *= /= %= <<= >>= &= ^= |= ?:
4. 输入和输出
  • 标准输入输出函数:C标准库提供了一些基本的输入输出函数,需要包含<stdio.h>头文件。
    • printf:格式化输出
      int x = 10;
      printf("x = %d\n", x);
      
    • scanf:格式化输入
      int y;
      scanf("%d", &y);
      
    • getsputs:用于字符串输入输出
      char str[50];
      gets(str);
      puts(str);
      
5. 控制语句
  • 顺序结构:代码按照顺序逐行执行。
  • 选择结构:根据条件选择执行不同的代码。
    • if语句:
      if (condition) {// 如果满足条件,那么执行....
      } else {// 否则执行....
      }
      
    • switch语句:
      switch (expression) {case value1:// 如果expression这个变量等于value1,那么执行...break;case value2:// 如果expression这个变量等于value2,那么执行...break;default:// 否则执行...
      }
      
  • 循环结构:重复执行某段代码。
    • for循环:
      for (initialization; condition; increment) {// for循环:初始条件;循环进行的条件;每次循环完执行的任务
      }
      
    • while循环:
      while (condition) {// 如果满足条件,那么执行...
      }
      
    • do...while循环:
      do {// 与while循环类似,满足条件则执行...
      } while (condition);
      
6. 作用域和生存期
  • 局部变量:在函数或代码块内部声明,作用域为该函数或代码块。
  • 全局变量:在所有函数外部声明,作用域为整个程序。
  • 静态变量:使用static关键字声明,作用域为声明它的函数或代码块,但其生存期为整个程序运行期间。
#include <stdio.h>
int g = 10;
void foo() {int a = 5;// Static定义后面会细讲static int s = 0;s++;printf("s = %d\n", s);
}
int main() {foo(); // s = 1foo(); // s = 2return 0;
}
三、综合示例

下面是一个综合示例,展示了C语言中数据类型和顺序程序设计的应用:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体
struct Student {int id;char name[50];float gpa;
};
// 函数声明
void printStudent(struct Student s);
void updateGPA(struct Student *s, float newGPA);
int main() {// 动态分配结构体数组struct Student *students = (struct Student *)malloc(3 * sizeof(struct Student));// 初始化学生数据students[0].id = 1;strcpy(students[0].name, "Alice");students[0].gpa = 3.5;students[1].id = 2;strcpy(students[1].name, "Bob");students[1].gpa = 3.8;students[2].id = 3;strcpy(students[2].name, "Charlie");students[2].gpa = 3.2;// 打印学生信息for (int i = 0; i < 3; i++) {printStudent(students[i]);}// 更新GPAupdateGPA(&students[0], 3.9);printf("Updated GPA for %s: %.2f\n", students[0].name, students[0].gpa);// 释放内存free(students);return 0;
}
// 打印学生信息
void printStudent(struct Student s) {printf("ID: %d, Name: %s, GPA: %.2f\n", s.id, s.name, s.gpa);
}
// 更新学生GPA
void updateGPA(struct Student *s, float newGPA) {s->gpa = newGPA;
}
四、总结

以上内容涵盖了C语言中的各种数据类型以及顺序程序设计的相关知识,包括变量、常量、运算符、控制结构、输入输出和内存分配。这些知识点是C语言编程的基础,理解和掌握这些内容将帮助你在C语言编程中应对各种复杂的任务和挑战。

创作不易,如果您觉得博主的文章对您有帮助,请考虑打赏一下博主。您的鼓励是我前进的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm 的使用

使用文档&#xff1a; Getting started | PyCharm DocumentationPyCharm 中文指南 — PyCharm 中文指南(Win版) 2.0 documentation 在Ubuntu中安装并配置Pycharm教程&#xff08;安装 Pycharm&#xff09;Ubuntu安装pycharm及快速创建pycharm的快捷方式&#xff0c;便于使用&am…

数据结构复习指导之交换排序(冒泡排序,快速排序)

目录 交换排序 复习提示 1.冒泡排序 1.1基本思想 1.2算法代码 1.3性能分析 2.快速排序 2.1基本思想 2.2算法代码 2.3性能分析 交换排序 复习提示 所谓交换&#xff0c;是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。 基于交换的排序算法很…

链表逆序用哨兵位头节点

在C语言中实现链表的逆序&#xff0c;使用哨兵头节点是一种常见的做法。哨兵头节点可以简化代码逻辑&#xff0c;特别是当链表为空时&#xff0c;可以避免空指针异常。下面是一个使用哨兵头节点逆序单链表的C语言实现 示例&#xff1a; #include <stdio.h> #include &l…

富格林:应用正规技巧阻挠被骗

富格林悉知&#xff0c;随着如今入市现货黄金的朋友愈来愈多&#xff0c;不少投资者也慢慢开始重视起提高自身的正规投资技巧&#xff0c;希望能阻挠被骗更高效地在市场上获利。虽然目前黄金市场存在一定的受害风险&#xff0c;但只要投资者严格按照正规的交易规则来做单&#…

python解决flask启动的同时启动定时任务

业务场景描述&#xff1a;在常规的开发中&#xff0c;我们开发接口服务&#xff0c;一般会将数据放在数据库、文件等第三方文件&#xff0c;启动服务后&#xff0c;服务到后台数据库中加载数据&#xff0c;这样做的好处当然是开发会更加便利以及数据的可复用性较高&#xff0c;…

深度学习-03-函数的连续调用

深度学习-03-函数的连续调用 本文是《深度学习入门2-自製框架》 的学习笔记&#xff0c;记录自己学习心得&#xff0c;以及对重点知识的理解。如果内容对你有帮助&#xff0c;请支持正版&#xff0c;去购买正版书籍&#xff0c;支持正版书籍不仅是尊重作者的辛勤劳动&#xff0…

LLaMA-Factory推理实践

运行成功的记录 平台&#xff1a;带有GPU的服务器 运行的命令 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310由于服务器不能直接从huggingface上下载Qwen1.5-0.5B&#xff0c;但本地可…

51仿真器 PZ-51Tracker 未知设备

插上仿真器&#xff0c;右击我的电脑 等待一下&#xff0c;选择winUSB 此时在keil中选择仿真器会报错&#xff0c;需要安装如下我是win10) 安装好后退出再试&#xff0c;没有报错即可 这项也要选择 另外配置晶振

MYSQL之存储篇

MYSQL之存储篇 存储过程简介存储过程优点&#xff1a; MySQL的存储过程MySQL存储过程的创建1.格式2.声明分割符3.参数4.变量5.注释6.MySQL存储过程的调用7. MySQL存储过程的查询8.MySQL存储过程的修改9.MySQL存储过程的删除10. MySQL存储过程的控制语句11.MySQL存储过程的基本函…

mybatis配置环境流程

mybatis配置环境流程 为啥要用mybatis&#xff1a;通过Mybatis实现快速访问后端pgsql、mysql等数据库。 1.修改pom.xml&#xff0c;添加mybatis相关依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-s…

React + SpringBoot开发用户中心管理系统

用户中心项目搭建笔记 技术栈 前端技术栈 “react”: “^18.2.0”,ant-design-pro 后端技术栈 SpringBoot 2.6.x 项目源码地址 https://gitee.com/szxio/user-center 前端项目搭建 快速搭建一个后端管理系统项目框架 初始化 antDesignPro 官网&#xff1a; https://…

Spel表达式使用案例

package com.example.demo.api;import com.example.demo.model.User; import lombok.extern.slf4j.Slf4j;<

CSS Web前端框架:深入剖析与应用实践

CSS Web前端框架&#xff1a;深入剖析与应用实践 在快速发展的Web技术领域&#xff0c;CSS Web前端框架已成为构建现代化、高效且响应式网页的关键工具。它们不仅简化了开发过程&#xff0c;还提高了代码的可维护性和复用性。然而&#xff0c;面对众多纷繁复杂的框架选择&…

ByteBuddy字节码增强器

Byte Buddy是java的字节码增强器&#xff0c;一个优雅的运行时java代码生成库&#xff0c;使用时需要慎重 文档地址&#xff1a;http://bytebuddy.net/#/tutorial-cn 1. 引入ByteBuddy <!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy --><depend…

LeetCode---哈希表

242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 代码示例&#xff1a; //时间复杂度: O(n) //空间复杂度: O(1) c…

Java生成PDF笔记整理

引入依赖, groupId:com.itextpdf, version:8.0.4, artifactId如下kernel,io,layout,forms创建pdf对象try(ByteArrayOutputStream outputStream new ByteArrayOutputStream()){PdfWriter writer new PdfWriter(outputStream, new WriterProperties().setFullCompressionMode(t…

离线安装python库

1. 下载安装包 在联网机器上安装 # 选择符合目标架构的版本&#xff0c;主要是libc版本和python版本 pip download --platformmanylinux2010_x86_64 --only-binary:all: --python-version3.7.4 tabulate # 或者 pip download --platformmanylinux_2_5_x86_64 --only-binary:a…

do...while循环

基本语法 while循环&#xff0c;是先判断条件再执行。 do...while循环&#xff0c;是先斩后奏&#xff0c;先至少执行一次循环语句块中的逻辑&#xff0c;再判断是否继续。 do {//do while 循环语句块; } while (bool类型的值);注意&#xff1a;do...while语句&#xff0c;存…

Common Lisp笔记

在计划学习函数式编程的时候&#xff0c;我一开始打算学习的是 F#。因为我朋友就是在 DTU 上的学&#xff0c;F# 就是 DTU&#xff08;丹麦理工&#xff09;开发的。但是由于 F# 和微软的 .NET 绑定&#xff0c;而在 macOS 上&#xff0c;目前版本的 .NET 的是有些问题的&#…

2020编程语言排序:探索编程界的热门与趋势

2020编程语言排序&#xff1a;探索编程界的热门与趋势 在数字时代的浪潮中&#xff0c;编程语言作为构建数字世界的基石&#xff0c;其流行度和影响力不容忽视。2020年&#xff0c;各大编程语言在各自的领域里展现出独特的魅力和实力。本文将从四个方面、五个方面、六个方面和…