- 变量是做什么的?如何定义一个变量?

例:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//scanf是scanf_s的前身,
int price = 0;
int total = 0;
printf("请输入您购买东西的价格:");
scanf("%d", &price);
printf("请输入您的票面:");
scanf("%d", &total);
if (total < price) {
printf("不好意思,您的钱不够。");
}
else {
printf("找回您%d元", total - price);
}
return 0;
}
至于为什么要加上第一行代码,参考:scanf和scanf_s的区别及如何解决scanf_s报错问题 - 知乎 (zhihu.com)


以下是从菜鸟教程获取的一些关键字
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
2.变量的初始化与赋值:以及如何读到输入的数字



如果没有进行初始化就开始使用



scanf("")引号中的字符串是你要输入的东西,并不是他会给你看的东西。
3.常量VS变量:不变的量是常量

#include <stdio.h>
int main()
{
int a;
int b;
scanf_s("%d %d", &a, &b);
printf("%d + %d =%d", a, b, a + b);
return 0;
}

4.浮点数:整数运算的结果只有整数部分,不然就要用浮点数



例一:都是int类型,把12变成12.0,用%f获取。
#include <stdio.h>
int main()
{
int foot = 0;
int inch = 0;
printf("请输入几尺几寸:");
scanf_s("%d %d", &foot, &inch);
printf("身高为%f", (foot + inch / 12.0) * 0.3048);
return 0;
}
例二:用double类型,用%lf读入,%f获取。
#include <stdio.h>
int main()
{
double foot = 0;
double inch = 0;
printf("请输入几尺几寸:");
scanf_s("%lf %lf", &foot, &inch);
printf("身高为%f", (foot + inch / 12) * 0.3048);
return 0;
}

计算时间差:
#include <stdio.h>
int main()
{
int hour1 = 0, minute1 = 0;
int hour2 = 0, minute2 = 0;
int a = 0, b = 0, c = 0;
printf("请输入时间1:");
scanf_s("%d:%d",&hour1,&minute1);
printf("请输入时间2:");
scanf_s("%d:%d",&hour2,&minute2);
a = hour1 * 60 + minute1;
b = hour2 * 60 + minute2;
if (b < a) {
c = a - b;
}
else {
c = b - a;
}
printf("时间差为%d时%d分", c / 60, c % 60);
return 0;
}
5.运算符的优先级


看看如何分析这个表达式:
a=5;
c = (b=a+2) - (a=2);
答:a=2,b=7,c=5。
6.交换变量

7.复合赋值和递增递减


上课提到的那个复杂表达式该怎么理解?
a = b+=c++-d+--e/-f
答:可以化简为a=(b=b+c)-d+(e=e-1)/-f