1.数据类型、常量变量.
变量定义: 数据类型 变量名 = 初始值; int x = 10; = 赋值符号,即将等号右边的值赋值给左边,赋值过程相当于拷贝,而不是剪切.
变量名的命名规范:
1. 只能是数字,字母,下划线组成.数字不能开头.
2.不能和系统关键字重名
3.变量名要具有解释性
4.变量名不能重名.
<span style="font-size:14px;"> //例题:将两个变量a,b的值进行互换,方法如下: int a = 5;int b = 10;
//1.方法:再定义个变量
int c = 0;
c = a ;
a = b;
b = c ;
//方法2 :这种方法不借助第三方,但是存在溢出现象,例如:a 取int范围最大值.
a = a + b;
b = a - b;
a = a - b;
//方法3 :异或运算 //相同为0,不同为真. 0 ^ 0 = 0 1 ^ 1 = 0 1^0 = 1
a = a ^ b;
b = b ^ a;
a = b ^ a;</span>
2.运算符、表达式、格式化输入输出
运算符:
1.算数运算符: + - % / ++ --
<span style="font-size:14px;">//整数除以整数得到的还是整数.如果两个整数相除获取小数部分,则需要参与计算的双方至少有一个是小数.
float div = 0;
div = (float)n / m;//强制类型转换.
div = n * 1.0 / m ;//强制类型转换.
div = n / m * 1.0;//优先级问题,输出的结果为:1.000000
div = n / (m * 1.0);//需要加一个符号 .
printf("%f\n", div);</span>
<span style="font-size:14px;">
</span>
<span style="font-size:14px;"> // b = a++ ; 相当于 b = a; a = a +1;
// b = ++a ; 相当于 a = a +1; b = a ;</span>
2.复合运算符 += -= /= *=
<span style="font-size:14px;"> int num1 = 10, num2 = 2;
num1 += num2; num1 /= num2;
num1 *= num2; num1 -= num2;</span>
表达式:
判断是否是表达式,只要看式子有无结果,有结果就为表达式,无结果,则不是表达式,最简单的表达式就是一个常量或者一个变量:
<span style="font-size:14px;"> 3 //是表达式
3 + 4 //是表达式
a + b //是表达式
a += 5 //是表达式
int a = 5 //不是表达式</span>
格式化输入输出:
<span style="font-size:14px;"> //输入scanf ,输入时不要加换行符\n.
int data = 0, data1 = 0;
//取地址符
printf("plase input two number:\n");
scanf("%d%d", &data, &data1);
printf("two number are : data1 = %d, data = %d\n", data1, data);
printf("\\\n"); // 结果\
printf("%%%%\n"); //%%
printf("\""); //"
// %d --整型 %4d , %-4d
// %f --浮点型 %.2f , %3.f
// %c --字符型
// %ld -- 长整形
// %lu -- unsigned long ,无符号长整型,>=0
// %s -- 字符串</span>
例题:
<span style="font-size:14px;"> /*
先输入字符和先输入数字的区别:
先输入字符 ,在输入数字,能输出结果.
但先输入数字后,需要enter键即\n.而\n相当于一个字符,所以结果m是你输入的数字,但是字符则为空,即为\n;
结果:m = 8 , n = ; 如果想先输入数字,再字符,并能打印正常的结果,需要加一个清楚缓冲区内容操作.即为:
rewind(stdin);即当输入数字结束后,执行,清楚里面缓冲的\n.即可再输入想要输入的字符.
*/
int m = 0;
char n = 0;
scanf("%d", &m);
<pre name="code" class="plain"> scanf("%c", &n);//交换顺序,需要加入清除缓冲区的操作.\n相当于一个字符.
printf("m = %d , n = %c", m , n);</span>
用scanf输入,输入与对应需要出入不一样是的情况:
<span style="font-size:14px;"> /*
输入abc,如果不加rewind(stdin),结果为 n = a ,m = 0;而加上清楚缓存内容语句,控制台将会再有一次输入机会.
输入abc,对应n能找到对应的值.而m找不到对应的值,结果为0.
*/
int m = 0;
char n = 0;
scanf("%c", &n);//交换顺序,需要加入清除缓冲区的操作.\n相当于一个字符.
//清除缓冲区的内容,能输入下一个数字.
// rewind(stdin); //
scanf("%d", &m);
//scanf("%d%c", &m, &n);//不行,接受到得时回车键.
printf("m = %d , n = %c", m , n);</span>
<span style="font-size:14px;"> /*
连续输入和单独输入的区别:
连续输入:如果前面的数没能取到对应的,后面就不回取到对应的值,即相当于优先级.如果前面取不到值,后面就更不会取到.
即当输入m是.连续输入当开始是数字,但是没有,所以i = 0,因为连续,对应 j的值也取不到,所以为刚开始定义的初始值.
单独输入:相互之间不影响.当输入m.对应 i = 0 , m = m;
*/
int i = 0;
char j = 'a';//初始值为a
//连续 输入
scanf("%d%c", &i, &j); //输入m然后 回车,i = 0 , j = a
//单独输入
scanf("%d", &i);
scanf("%c", &j); // 输入 m 然后回车,i = 0 , j = m
printf("i = %d , j = %c", i , j);</span>