#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//main 函数是一个独立应用程序的主体结构,被操作系统调用
//变量的特点:每个变量占用一个内存空间,有新的内容被送到这个变量中,旧的内容就被冲刷掉了
//三步交换
/*int main()
{
int a = 1, b = 2, c;
printf("变换前:a=%d,b=%d\n", a, b);
c = a; //先把a的量放在c
a = b; //再把b的值给a
b = c; //把c中a的值给b
printf("交换后:a=%d,b=%d\n", a, b);
}*/
//近距离互换
/*int main()
{
int a = 1, b = 2, c;
printf("变换前:a=%d,b=%d\n", a, b);
a = a + b;
b = a - b; //a+b-b
a = a - b; //a+b-(a+b-b)
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}*/
//%s: 输出一个字符串
/*int main()
{
printf("%s\n","CHINA");
return 0;
}*/
/*
% d 按十进制整型数据的实际长度输出。
% ld 输出长整型数据。
% md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。
int main()
{
int a = 123;
printf("%4d", a); //(空格)123
return 0;
}
% u 输出无符号整型(unsigned)。
% c 用来输出一个字符。
% f 用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
% .mf 输出实数时小数点后保留 m 位,注意 m 前面有个点。
% o 以八进制整数形式输出
% s 用来输出字符串。用 % s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串。
% x(或 % X 或 % #x 或 % #X) 以十六进制形式输出*/
/*int main()
{
int i = 47;
printf("%x\n", i); //2f
printf("%X\n", i); //2F
printf("%#x\n", i); //0x2f
printf("%#X\n", i); //0x2F
return 0;
}*/
//从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的; 如果加一个#,就以标准的十六进制形式输出。
/*int main()
{
int a;
a = 2147483647;
printf("%d\n",a);
}*/
//一个整型数据最大最小能输出的
/*int main()
{
int n = 0;
int i = 0;
while (n <= i) {
n = i;
i++;
}
printf("int最大值为:%d\n", n); //2147483647
printf("int最小值为:%d", n + 1); //-2147483648
return 0;
}*/
//%%连续两个%表示字符%
/*int main()
{
printf("%f%%\n", 1.0 / 3); //0.333333%
}
*/
/*int main()
{
int x;
float y;
double z;
scanf("%d%f%lf", &x, &y, &z);
printf("x=%d\ny=%f\nz=%lf\n", x, y, z);
return 0;
}*/
//*:抑制符,输入的数据不会赋值给相应的变量
/*int main()
{
int a, b;
scanf("%2d%*2d%3d", &a, &b); //%2d就只取2列,该数据输入结束;
printf("a=%d,b=%d\n", a, b);//%*2d 这两位数不会赋值给相应的数据
return 0; //123456789 a=12,b=567
}*/
/*int main()
{
int x;
float y;
double z;
scanf("%3d%5f%5lf", &x, &y, &z);
printf("x=%d\ny=%f\nz=%lf\n", x, y, z);
return 0; //输入123456.789.123 小数点也算1位数 456.7给了y 89.12给了z
}*/
//%c 输入单个字符
/*int main()
{
char ch = 'a';
putchar('A');
putchar(ch);
putchar('\101');//001000001B=65D 对应A
putchar('\n');
return 0; //输出结果AaA(换行)(换行只执行并不在屏幕上显示)
}*/
/*int main()
{
int a = -1;
printf("%d,%x\n", a, a);//1000000 00000000 00000000 00000001 取反1111111 11111111 11111111 11111110 加1
return 0; //转换为16进制 为ffffffff
}*/