目录
输出语句(printf)
5用于输出字符串(如"hello" )。
格式为printf(格式控制字符串, 输出列表)
“格式控制字符串”是用双引号括起来的一个字符串。包括:
- 普通字符:普通字符即需要在输出时原样输出的字符。
- 占位符:由“%”和格式字符组成。这个位置可以用其它值代入。
- “输出列表”是程序需要输出的一些数据,可以是常量、变量或表达式。用于替换占位符的位置。
注意:printf() 参数与占位符是一一对应关系。
占位符
占位符的种类
- %c:char型数据
- %d:十进制整数(int)
- %f:浮点数(float)
- %ld:十进制长整数(long)
- %lf:十进制双精度数(double)
- %x:十六进制整数
- %p:指针
- %s:字符串
实例
举例1:%d
int main(){
int num = 10;
printf("coount is %d\n",num)
return 0 ;
}
举例2: %If和 %f
int main (){
float f= 3.1415926525333;
double d=3.1415926525333
//使用 %f 输出单精度浮点数
printf("Float:%f\n",f);//Float:3.141593
// 使用 %f 输出双精度浮点数
printf("Double:%fn",d);//Double:3.141593
return 0;
}
举例3:%c
int main(){
char level ='A';
printf("this score level is:%c\n",1eve1); //输出:this score leyel is:A
return 0 ;
}
格式1:
先补限定占位符的最小宽度
printf("%5d \n",123); ⇒" 123"
格式2:
限定小数位:
printf("%.2f\n", a ) ⇒"1.23" (若未限制,float默认6位)
字符形式
- \n: 换行符
- \t:水平制表符,光标移到下一个tab位置
- \':单引号字符
- \":双引号字符
- \\:反斜杠字符‘\’
数据类型间的运算规则
a. 隐式类型转换
容量小→容量大的类型 [自动转换]
eg. short s = 327; int n = s;
b. 强制类型转换(大→小)
eg. int n = 128; char c = (char)n; //强制类型转换
问题:
1. 会溢出 2. 精度变小
long < float < double
v=(-1)^s M*2^E
小数,第一位符号位,即S;接下来8位为指数域,即E;剩下的23位,即M。
实例
int main(){
/*数类型阿的转換
数据炎型大小问题
窄类壁-->宽类型(容最)
char 1 short 2 int 4 long 8
float 4 double 8
1.隐式类型转换
容量小的 转容量大的类型
*/
short s = 32767;
int n= s;
long m = n ;
double d= m
printf("%d",n)
double g = m+n;//(m+n) --- > double
/*
2.强制制类型转换
容量大的类型 转容量小的的类型
可能会出现溢出问题
精度变小
*/
int n = 128;
char c = (char)n;//强制类型转换
printf("%d\n",c)
double d = 10.5;
long m = d;
printf("%ld\n",m)
return 0 ;
}
常量
(程序运行时,其值不能改变的量,即为常量)
字面常量
如 age = 20; //20为字面常量。
#include <stdio.h>
int mainO){
//字面常量
int a = 3.14;//3.14为字面常量
printf("%d”,1000);//1000为字面常量
}
const修饰的常量
const 数据类型 常量名 = 常量值;
#include <stdio.h>
int main(){
//const 修饰的常变量
const float PI = 3.14f;
//PI =5.14;//是不能修改的!
return 0;
}
#define定义的标识符常量:
这种方式是在文件开头用 #define 来定义常量,也叫作“宏定义”。所谓宏定义,就是用一个标识符来表示一个常量值,如果在后面的代码中出现了该标识符,那么编译时就全部替换成指定的常量值。
eg.
文件之前 #define 常量名 常量值
#include <stdio.h>
#define ZER00 //#define的标识符常量
int main() {
printf("zero=%d\n",ZERO);
return 0;
}
枚举常量:
格式:enum {常量名, 常量名, 常量名};
注意默认是从0开始,依次向下递增的(需要在main外)。
#include <stdio.h>
//使用enum定义枚举类
enum WEEK{
//括号中的SUN,MON,TUE是枚举常量
SUN .
MON
TUE
int mainO{
//枚举常量
printf("%d\n", SUN);
printf("%d\n", MON);
printf("%d\n", TUE);
//注:枚举常量默认是从0开始,依次向下递增1的
return 0:
}
输入函数
a. scanf():让用户向程序中输入内容。
格式:scanf("格式控制字符串", 参数地址列表);
“参数地址列表”:以逗号“,”分隔的。
例如:int a; scanf("%d", &a); 其中&是寻址操作符。
实例
计算圆的面积,其半径由用户指定
#include <stdio.h>
int main(){
float r, area;
printf("请输入半径值: \n");
scanf("%f",&r);
//输入半径
area =3.14 *rfr;
printf("area=%f\n",area);//输出圆的面积
return 0;
b. 清除缓存
setbuf(stdout, NULL);
若想输完整数切换字符时,也会受到缓存影响,要清除缓存。
int age ;
int heignt.
char gender;
printf( format:“请输入年龄\n");
scanf( format:"%d",&age);//鑰入两数(%d,&变最名 取地址符);
printf( format:"请输入身高\n");
scanf( format:"%d",&height);
//当输入完整数后,切换到字符时,也会收到缓存影响,请除缓存
printf( format:“请输入性别\n");
scanf( format: "%c" ,&gender).
printf( format:"我的年龄是%d,身高是%d,性别是%c",age,height,gender);
return 0;
①getchar();
②在scanf(" %c", &gender); 表示空格 。
getchar()与putchar()的区别
- eg. gender = getchar() //等待输入一个字符
- eg. putchar(gender);
常见的进制
二进制
int a2=0b11
占位符 %d 十进制
八进制
int a3=011
占位符 %o 八进制
十进制
int a1=10
十六进制
int a4=0x17
占位符 %x 十六进制
原码、反码、补码
- 正数:三码合一
- 负数→负数的补码是其反码加1
- 反码:在原码的基础上,最高位不变,其余位取反
二进制 ⇋ 十进制示例:
eg. 1011 ,
计算方式为 2^0×1 + 2^1×1+2^2×0 + 2^3×1 ,
除二取余的逆过程:13%2=1,6%2=0,3%2=1,1%2=1