1.做点计算
printf("%d", 23+46);
printf("23+46=%d", 23+46);
printf("100-23=%d", 100-23);
2.如何在程序运行的时候输入那个数字,然后计算, 输出结果?
有地方放输入的数字;
有办法输入数字;
输入的数字能参与计算;
上一份笔记中有个change.c
非C99必须把变量的定义放在前面
#include
int main()
{
int price = 0;
printf("请输入金额(元):");
scanf("%d", &price);
int change = 100 - price;
//非C99必须把change放在前面定义
printf("找您%d元。\n", change);
return 0;
}
3.如何输入
输入也是在终端窗口(黑乎乎的console)中
输入是一行为单位进行的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序部会读到任何东西
读整数
scanf(“%d”, &price);
这是一个系统库函数
要求scanf这个函数读入下一个整数,读到的结果赋值给变量price
注意price前面的&(取地址符)
4.变量
int price = 0;这一行,定义了一个变量,变量名是price,;类型是int,初始值是0。
变量代表计算机内存的一个存储单元。
变量具有以下特性:
变量名 —>“标识符(indentifier)”
变量值(value)
变量的数据类型
变量存储的地址
变量的存储属性
变量定义的一般形式
例子:
int price;
int amount;
int price,amount;
标识符可以由字母、数据和下划线构成,且必须由字符或下划线开头,其中字母为26个字母,可以是大写或者小写。
C语言还规定,关键字(保留字)不能作为变量名
5.赋值
和数学上不同,a=b在数学中表示关系,即a等于b,而在程序设计语言中,a=b表示要求计算机做一个动作,把b的值赋值给a。关系是静态的,动作是动态的。
变量初始化
当赋值发生在定义变量的时候,就像int price = 0;这样,就是变量的初始化。虽然C语言没有强制要求所有的变量都在定义的地做初始化,但是所有的变量都必须在第一次被使用(出现在赋值运算符的右边或者输出)之前被初始化。
例如:=;
int price = 0;
int amount = 100;
//组合变量定义的时候,可以定义的时候,单独给单个变量赋初值
int price = 0, amount = 100;
如果变量没有初始化,变量的值是随机。会造成你的程序出现莫名其妙的数据或者出错
6.变量类型
C语言是强类型的语言,所有的变量在使用之前必须先定义或声明后使用,变量定义类型后不可改变其数据类型。
注:
ANSI C 变量只能在代码开头的地方定义变量
C99 可以在代码中定义变量
turbo c 的基本类型以及存储类型和数值范围
类型
类型标识符
长度(字节)
数值范围
整型
有符号整型[signed] int
2
-32768~32767
有符号短整型 [signed] short [int]
2
-32768~32767
无符号短整型unsigned short [int]
2
0~65535
有符号整型[signed] int/signed [int]
2
-32768~32767
无符号整型 unsigned [int]
2
0~65535
有符号整型 unsigned long [int]
4
-2147483648~2147483647
字符型
有符号字符型[signed] char
1
-127~128
无符号字符型unsigned char
1
0~255
浮点型
单精度浮点型 float
4
绝对值3.4e-38~3.4e+38
双精度浮点型double
8
1.7e-308~1.7e+308
长双精度浮点型long double
10
3.4e-4932~3.4e+4932
具体的字节数和编译器有关,不同的编译器,字节数不一样,不过可以用sizeof()函数去获取
6.常量
代码中 int change = 100 - price;
- 固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)
- 我们把这种出现在程序中莫名其妙的数字叫做神秘数。
- 更好的方式,是定义一个常量:
- const int AMOUNT = 100;(这是C99的做法)
- #define AMOUNT 100 (这是标准C的写法,微软喜欢这么干,宏定义)
例子:
#include
int main()
{
const int AMOUNT = 100;//这是C99的做法
int price = 0;
printf("请输入金额(元):");
scanf("%d", &price);
int change = AMOUNT - price;
printf("找您%d元。\n", change);
return 0;
}
//标准C定义常量的方法。
#include
#define AMOUNT 100
int main()
{
int price = 0;
printf("请输入金额(元):");
scanf("%d", &price);
int change = AMOUNT - price;
printf("找您%d元。\n", change);
return 0;
}
const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)属性。这个const属性表示这个变量的值一旦被初始化(必须被初始化),就不能被修改了。
#include
int main()
{
int amount = 100;
int price = 0;
printf("请输入金额(元):");
scanf("%d", &price);
printf("请输入票面(元):");
scanf("%d", &amount);
int change = AMOUNT - price;
printf("找您%d元。\n", change);
return 0;
}
使用符号常量是一种良好的编程风格
1、一般用小写字母表示变量名,大写字母表示符号常量名,这样有利于增加程序的可读性。
2、程序便于维护,能够做到一改全改。
2、提高可读性
8.常量的类型
整型常量
十进制整数,由0~9的数字组成,前面带+或-表示正数或者负数,如123、-345、+123
八进制整数,以0(零)开头,由0~7的数字组成,前面带+或-表示正数或者负数,如0123(等于十进制的83)
十六进制整数,以0x或者0X开头(0为零),由0-9和A~F(a~f)组成,A~F(a~f)表示10~15,前面带+或-表示正数或者负数。
后缀,加上l或L表示长整型常量,加上U或者u表示无符号整型常量
LU可以同时使用,顺序可以任意,表示无符号长整型
整数在机内的存储形式
在大多数的机器中,整数是以补码的形式存储。补码的表示法中,最高位为符号位,0代表正数,1代表负数。
一个负数的补码可以使用按位取反加1的方法来计算
浮点型常量
1)十进制小数,由0~9、小数点和+、-号组成
2)指数形式 由0~9、字母e或E和+、-号组成。它的形式为aEn(aen),意为a*10n.a为十进制整数或者小数,n是十进制整数
注意:1.以指数形式表示实数的时,an都不能省略,n必须为整数
2.以十进制小数表示实数的时,整数部分和小数部分可以省略其中一个。例如:.35(0.35),26. 。
3.浮点型常量默认是double,如果在后面加了F(f)则类型是float
字符常量
使用单引号括起来的字符。
使用转义字符表示方法表示的字符。如’\n’,’\0’,’\012’,’\x42’
字符串常量
字符串常量是有一对双引号括起来的字符序列,字符串可以包含任何字符。双引号不属于字符串,起界定作用。C语言中没有字符串类型,而是用字符数组来存储字符串。字符串在计算机内存储,所占的字节数等于字符串字符个数加1。增加1个‘\0’作为字符串结束标志
9.练习
1.plus.c
#include
int main()
{
int a;
int b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("%d + %d = %d\n", a, b, a + b);
return 0;
}
2.height2.c
#include
int main()
{
printf("请分别输入身高的英尺和英寸,"
"如输入\"5 7\"表示5英尺7英寸:");
double foot;
double inch;
scanf("%lf %lf", &foot, &inch);
printf("身高是%f米。\n",
((foot + inch / 12) * 0.3048));
return 0;
}
注:C语言中整数除法,如果两个数相处是浮点数,其结果是取整数部分。例如1/2=0,而浮点数除法1.0/2=0.5