C语言-002

一、变量定义与命名规则

(一)变量定义

  1. 一般形式:<类型名称> <变量名称>;
    • 示例:int price; int amount;
  2. 多个变量同时定义:<类型名称> <变量1>, <变量2>;
    • 示例:int price, amount;
  3. 变量初始化:定义变量时直接赋予初始值
    • 单个变量初始化:<类型名称> <变量名称> = <初始值>;
    • 示例:int price = 0; int amount = 100;
    • 多个变量组合初始化:可单独为每个变量赋值
    • 示例:int price = 0, amount = 100;

(二)变量命名规则(标识符规则)

  1. 标识符由字母、数字和下划线组成
  2. 数字不能出现在标识符的第一个位置
  3. 不能使用 C 语言的关键字(保留字)作为标识符

(三)C 语言保留字

auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while、inline、restrict

二、变量类型与数据类型

(一)变量类型核心规则

  1. C 语言是强类型语言,所有变量使用前必须定义或声明
  2. 变量必须具有确定的数据类型,只能存放对应类型的数据
  3. 程序运行过程中不能改变变量的类型

(二)基本数据类型

数据类型描述输入格式符输出格式符示例
int整数类型,用于存储整数,运算速度快、占用空间小%d%dint age = 20;
double双精度浮点数,用于存储带小数点的数值(推荐使用)%f%fdouble weight = 62.5;
float单精度浮点数,用于存储带小数点的数值%f%ffloat height = 1.75f;

(三)整数类型特性

  1. 不能表达小数部分,整数与整数运算结果仍为整数(如 10 / 3 = 3
  2. 日常大量计算场景适用,实用性强

(四)浮点数类型特性

  1. 浮点数(浮点型):指带小数点的数值,小数点可 "浮动",是计算机表达非整数的主要方式
  2. 与整数混合运算时,C 语言会先将整数转换为浮点数,再进行浮点运算
  3. 注意:10(整数)和 10.0(浮点数)在 C 语言中是完全不同的数据类型

三、常量

(一)直接量(字面常量)

程序中直接书写的固定不变的数,如 1003.14 等,示例:int change = 100 - price; 中的 100

(二)const 修饰的常量

  1. 定义格式:const <类型名称> <常量名称> = <初始值>;
    • 示例:const int AMOUNT = 100;
  2. 特性:
    • const 是修饰符,给变量添加 "不可修改" 属性
    • 常量初始化后不能再修改,若试图修改会被编译器报错
    • 推荐使用:增强程序可读性和可维护性

四、输入与输出

(一)输入函数 scanf

  1. 读取整数:scanf("%d", &变量名);
    • 注意:变量名前必须加取地址符 &,示例:scanf("%d", &price);
  2. 读取浮点数:scanf("%f", &变量名);
    • 示例:scanf("%f", &weight);

(二)输出函数 printf

  1. 输出整数:printf("%d", 变量名/表达式);
    • 示例:printf("找您%d元。\n", change);
  2. 输出浮点数:printf("%f", 变量名/表达式);
    • 示例:printf("体重为%fkg\n", weight);

(三)变量定义位置差异(ANSI C 与 C99)

标准变量定义位置示例
ANSI C只能在代码开头定义int price = 0; int change = 0; scanf("%d", &price); change = 100 - price;
C99可在代码中间按需定义int price = 0; scanf("%d", &price); int change = 100 - price;

五、表达式与运算符

(一)表达式

  1. 定义:由一系列运算符和算子组合而成,用于计算一个值
  2. 示例:
    • amount = X * (1 + 0.033) * (1 + 0.033) * (1 + 0.033);
    • total = 57;
    • count = count + 1;
    • value = (min / 2) * lastValue;

(二)基本概念

  1. 运算符:进行运算的动作,如 +(加)、-(减)、*(乘)等
  2. 算子:参与运算的值,可为常数、变量或方法返回值

(三)运算符优先级与结合关系

优先级运算符运算结合关系示例
1+单目不变自右向左a * +b
1-单目取负自右向左a * -b
2*自左向右a * b
2/自左向右a / b
2%取余自左向右a % b
3+自左向右a + b
3-自左向右a - b
4=赋值自右向左a = b

(四)特殊运算符

  1. 赋值运算符
    • 赋值是运算,有返回值(返回被赋予的值)
    • 链式赋值:a = b = 6 等价于 a = (b = 6),结果 ab 均为 6
  2. 复合赋值运算符
    • 由算术运算符(+-*/%)与赋值运算符 = 组合而成
    • 包括:+=-=*=/=%=
    • 示例:total += 5; 等价于 total = total + 5;
    • 注意:两个运算符中间不能有空格
  3. 递增 / 递减运算符(++--
    • 单目运算符,算子必须是变量
    • 作用:给变量加 1(++)或减 1(--
    • 等价关系:
      • count++; 等价于 count += 1;count = count + 1;
      • count--; 等价于 count -= 1;count = count - 1;
    • 前缀与后缀区别:
运算表达式表达式的值
给 count 加 1count++(后缀)count 原来的值
给 count 加 1++count(前缀)count+1 以后的值
给 count 减 1count--(后缀)count 原来的值
给 count 减 1--count(前缀)count-1 以后的值

#include <stdio.h>

int main()
{
    int price = 0;
    
    printf("请输入金额(元)");
    scanf("%d",&price);
    
    int change = 100 - price;
    
    printf("找您%d元\n",change);
    
    return 0;
    
 } 

#include <stdio.h>

int main()
{
    int a;
    int b;
    
    printf("请输入两个整数:"); 
    scanf("%d %d",&a,&b);
    printf("%d + %d = %d\n",a,b,a+b); 
    return 0;
    
 } 

#include <stdio.h>

int main()
{
    printf("请分别输入身高的英尺和英寸,"
    "请输入\"5 7\"表示五英寸七英尺");
    
    double foot;
    double inch;
    
    scanf("%lf %lf",&foot,&inch);
    
    printf("身高是%f米。\n",
        ((foot + inch /12)*0.3048));
    
    return 0;
 } 

#include <stdio.h>

int main()
{
    int hour1, minute1;
    int hour2, minute2;
    
    scanf("%d %d", &hour1, &minute1);
    scanf("%d %d", &hour2, &minute2);
    
    int t1 = hour1 * 60 + minute1;
    int t2 = hour2 * 60 + minute2;
    
    int t = t2-t1;
    
    printf("时间差是%d小时%d分。",t/60,t%60);
    
    return 0;
 } 

#include <stdio.h>

int main()
{
    int a=5;
    int b=6;
    int t;
    t=a;
    a=b;
    b=t;
    printf("a=%d,b=%d\n",a,b);
     
    return 0;
 } 

内容概要:本文系统研究了电力系统短期负荷预测问题,提出并实现了基于极限学习机(ELM)及其智能优化改进模型的预测方法。研究涵盖标准ELM、白鲸优化算法(BWO)优化ELM和鹭鹰优化算法(IBOA)优化ELM三种模型,重点通过智能优化算法对ELM的输入权重与偏置参数进行全局寻优,有效克服了传统ELM因参数随机初始化导致的不稳定性和泛化能力不足的问题。文章完整呈现了从数据预处理、特征选择、模型构建、参数优化到预测结果对比分析的全流程,利用Matlab编程实现各模型的仿真验证,显著提升了预测精度与模型鲁棒性,为电力系统调度决策提供了可靠的技术支撑。; 适合人群:具备电力系统基础知识、时间序列预测理论及Matlab编程能力的高校研究生、科研机构研究人员以及电力公司从事负荷预测、电网调度与规划工作的技术人员。; 使用场景及目标:①应用于实际电力系统短期负荷预测业务中,提升电网运行调度的精细化与智能化水平;②作为智能优化算法与神经网络融合的经典案例,服务于学术论文撰写、科研项目申报及算法性能对比研究;③应对新能源大规模接入背景下负荷波动加剧的挑战,为构建高精度、强鲁棒性的现代负荷预测体系提供解决方案。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解ELM网络结构与优化算法的集成机制,重点对比分析不同优化策略在收敛速度、预测误差(如MAE、RMSE、MAPE)等方面的性能差异,进而掌握智能优化技术在提升预测模型性能方面的关键作用。
内容概要:本文研究了基于Benders分解与输电网运营商(TSO)和配电网运营商(DSO)协调机制的不确定环境下输配电网双层优化模型,旨在提升高比例可再生能源接入背景下电网系统的协调性与鲁棒性。模型上层以系统整体经济性为目标进行优化调度,下层采用Benders分解实现TSO与DSO之间的信息交互与协同决策,通过引入割平面迭代机制保障求解的收敛性与全局最优性。研究充分考虑新能源出力与负荷需求的不确定性,构建了具有强适应性的双层优化框架,并基于Matlab完成了模型的编程实现与仿真验证,有效解决了多主体、多层级、多不确定性因素耦合下的电力系统优化调度难题。; 适合人群:具备电力系统分析、运筹学与优化理论基础,熟悉Matlab编程环境,从事智能电网、能源互联网、分布式能源集成、电力市场等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究高渗透率可再生能源条件下输配电网协同优化调度策略;②掌握Benders分解在电力系统双层优化建模中的应用方法与实现技巧;③构建TSO-DSO多主体协调机制,实现跨层级电网资源的高效互动与决策解耦;④提升对不确定性建模、分解算法设计及大规模优化问题求解能力。; 阅读建议:建议读者结合Matlab代码逐模块剖析模型构建流程,重点理解Benders割的生成逻辑、主从问题的信息传递机制及收敛判据设定,推荐在标准IEEE测试系统上复现实验以深入掌握模型特性与算法性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值