- 变量是做什么的?如何定义一个变量?
![](https://i-blog.csdnimg.cn/blog_migrate/7d7872644ae57e11df1851394e581059.png)
例:
#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)
![](https://i-blog.csdnimg.cn/blog_migrate/c770b0971b3cc19dc51072beafce50cc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7b2d44d23f93b41c1b164b268c42047.png)
以下是从菜鸟教程获取的一些关键字
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.变量的初始化与赋值:以及如何读到输入的数字
![](https://i-blog.csdnimg.cn/blog_migrate/8e59f2ac3fb3945c6c44b77ecb7108a9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/861637fa62dd406804732307e89f7068.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c2e12f768395b5338ef5b605e28c7a20.png)
如果没有进行初始化就开始使用
![](https://i-blog.csdnimg.cn/blog_migrate/ee8ea6ac22e51e00f70822ed430205fb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7720ce9e86e821f991c08499e210229e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec1cc658b783305e89ee40bd27b82f5d.png)
scanf("")引号中的字符串是你要输入的东西,并不是他会给你看的东西。
3.常量VS变量:不变的量是常量
![](https://i-blog.csdnimg.cn/blog_migrate/d16db7cb9ec86b7636fe2164b38b3fbc.png)
#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;
}
![](https://i-blog.csdnimg.cn/blog_migrate/318b266f6537465d8f2b6b589438bdf3.png)
4.浮点数:整数运算的结果只有整数部分,不然就要用浮点数
![](https://i-blog.csdnimg.cn/blog_migrate/c46b30d87c52c576dbbec8a2525285a6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f6eee890c749d10e7f57ba27051bd7c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f240c8614b641e67b5ce80742fb38ae0.png)
例一:都是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;
}
![](https://i-blog.csdnimg.cn/blog_migrate/7bf96b6fa58421482eaa3013273c974c.png)
计算时间差:
#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.运算符的优先级
![](https://i-blog.csdnimg.cn/blog_migrate/a1cbb6a3e6b25a8ca1b4193bd303d2d4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/42744ac0c83e7178f368acca7a9f3753.png)
看看如何分析这个表达式:
a=5;
c = (b=a+2) - (a=2);
答:a=2,b=7,c=5。
6.交换变量
![](https://i-blog.csdnimg.cn/blog_migrate/ebfc9702c42ff788ef87dc9c9ff960ea.png)
7.复合赋值和递增递减
![](https://i-blog.csdnimg.cn/blog_migrate/8fd9f1a32d4ac182af9a284727b73ae9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbdba40cefbc3836cf0ad7060819e2bb.png)
上课提到的那个复杂表达式该怎么理解?
a = b+=c++-d+--e/-f
答:可以化简为a=(b=b+c)-d+(e=e-1)/-f