第一节 scanf函数
一、scanf函数的作用和语法
1>作用:可以在程序运行的时候让用户输入数据将用户输入的数据存储在变量起来。
2>语法:scanf("格式控制字符串",变量的地址列表);
二、scanf函数的用法
1、scanf函数是1个阻塞式的函数.当执行到这句代码的时候 CPU的执行会暂停,等着用户输入数据。数据输入完毕之后,才会继续往下执行。
2、格式控制字符串中应该写上占位符(格式控制符),格式控制符的作用要求用户输入的数据的类型。如:
int num = 0;
scanf("%d",&num);
a. 格式控制字符串中的格式控制符决定要求用户输入什么类型的数据.
b. 将用户输入的数据存储到那1个变量之中.给变量的地址. &变量名
执行的简单原理:
当执行到这句代码的时候,程序会暂停,等待用户输入1个整型的数据。用户输入完毕之后按下回车表示输入结束。此时就会将用户输入的数据存储到num变量之中。
3、格式控制符与printf的格式控制符是一样的。
4、scanf的其他用法
1). scanf函数可以一次的接收用户输入多个数据.
intnum1 =0 ,num2 = 0;//定义两个整型的变量,用来存储输入的值
scanf("%d%d",&num1,&num2);
用户输入多个数据的时候,每1个数据用回车或者空格分开。
2). 用户在输入1个数字的时候,在输入数字之前,输入的空格回车 Tab都会被忽略. 直到你输入了1个数为止.
3). 当混合输入数字和字符型的时候.就会有问题.无法正常接收每1个数据了.
5、注意细节:
1). 当我们输入多个数字数据的时候,默认情况下每1个数据使用空白回车分隔。可以在格式控制字符串中自己定义每1个数据的分隔符。
scanf("%d,%d",&num1,&num2);
表示用户在输入数据的时候每1个数据使用逗号分隔。
2).如果用户输入的是非法数据。
如果要求输入1个整数但是输入1个浮点型只会拿到整数部分。
如果输入的不是数字,那么int变量的值就是自己的默认值。
6、scanf的运行原理:
1) scanf函数在内存之中有1个缓冲区.用户输入的数据首先是被放到了这个缓冲区之中。在执行这个函数的时候要数据先去查看缓冲区中是否有数据,如果有数据直接从缓冲区取出来,如果没有才让用户输入。
2). 解决方案:
指定分隔符来混合接收含有字符数据的数据。
3). 分别接收两个char类型的数据。
想法吸收掉回车符。
int num1 = 0,num2 = 0;//定义两个整型的变量num1,num2;
charch = ' ';//定义字符型变量ch
scanf("%d,%c,%d",&num1,&ch,&num2);
printf("num1 = %d, ch = %c, num2 = %d\n",num1,ch,num2);
第二节 交换两个变量的值
交换两个变量的值方法
1、声明1个第三方的临时变量,如:
int a = 10,b=2;//定义两个整型的变量,并赋初始值为10和2;
int temp = a;//定义一个整型的临时变量,并将a的值赋给他;
a= b;
b = temp;
2、将两个数相加再相减。
a= a+b; b = a-b; a =a-b;
#include
int main(int argc, const char * argv[])
{
int a = 10;//定义整型变量a赋初始值为10
int b = 2;//定义整型变量b赋初始值为2
a = a+b; //将a+b的结果12重新赋给a
b = a-b; //将a-b的结果10重新赋给b
a = a-b; //将a-b的结果2重新赋给a,实现交换
// int temp = a;
// a = b;
// b = temp;
printf("a=%d, b=%d\n",a,b);//输出a和b交换后的值
return 0;
}
第三节 算术运算符
一、算术运算符种类
+(加) -(减) *(乘) /(除) %(模)
二、算术表达式
定义:由算术运算符连接起来的式子就叫做算术表达式。
如果单独的写1个算术表达式,是没有意义的。算术表达式都有1个结果,如果不处理这个结果是没有任何意义的。一般情况下,声明1个变量将表达式的结果存储在其中,以用来调用。
变量 =表达式;
先计算表达式的结果,然后再将这个表达式的结果通过赋值符号赋值给变量。
三、算术运算符简介
1、 +号:求左右两边的数据的数学和。
2、 -号:求左右两边的数据的数学差。
3、 *号:求左右两边的数据的数学乘积。
4、 /号. 求商。
inta = 10, b = 4;
doublec = a / b;
c的值并不是2.5。执行顺序:先计算算术表达式的结果。 a/b 因为ab的类型都是整形的,所以算出来的结果就是整型的。如果非要得到带小数点的结果:
->修改参与算术表达式的数据的类型为浮点型.
->通过*1.0
int a = 10, b = 4;
double c = a*1.0 / b;
5、%号:求模运算(求余数运算)
m%n 结果是m除以n的余数.
10%3 1
求模运算只能由整型的数据参与,不能有浮点型参与,因为这样没意义。
作用:可以用来判断1个数是不是另外1个数的倍数。
应用: m%n如果表达式的结果为0,说明m可以被n除尽 m是n的倍数.
四、算术运算符的优先级
先乘除模,再加减。如果同级别就从左到右依次计算。
使用小括弧可以改变运算的优先级,如果有小括弧,就先算小括弧之中的。
使用小括弧改变运算的优先级的时候:
-> 小括弧可以无限制的套用。
-> 小括弧一定要成对出现。
第四节 类型转换
一、类型转换
1> 为1个变量赋值的时候,尽量的保证为变量赋值的数据的类型要和变量的类型一致。
2> 类型转换:将1个类型的数据赋值给另外的1个类型的变量。
int num = 10;
float f1 = num;
3> 将int变量num的值拿出来转换为float类型.然后将这个转换后的值存储到float变量之中。把整型转换为浮点型,这是没有问题的.。但是将1个浮点型的数据赋值给1个整型的数据的时候,就会直接将浮点型的整数部分拿出来赋值给整型变量。
4> C语言是很灵活的1门语言。在为变量赋值的时候,如果数据的类型和变量的类型不一致,这样是允许的,但是这个时候会发生类型转换。
int num = 12;//定义整型变量num
float f1 = num;//定义浮点型变量f1,并将整型变量num的值赋给他
printf("f1=%f\n",f1);
float f2 = 12.92f;//定义浮点型变量f2,并赋初始值12.92
int num = f2;//定义整型变量num,将f2的值赋给num,发生类型转换
printf("num=%d\n",num);
第五节 复合赋值运算符
复合赋值运算符
1. 注意的问题:
在写1个表达式时,在表达式中用到了变量,仅仅是使用到了变量的值,没有改值。
2. 如果要改变某个变量的值的话,要为其赋值才可以。
int num = 10;
num = num + 1;
3. 变量的值在自己的基础之上做改变.其实可以用另外的一种写法。
+= -= *= /= %=
int num = 10;
num += 1; 这句话等价于 num = num + 1;
复合赋值运算符
#include
int main(int argc, const char * argv[])
{
int num = 10;//定义整型变量num,赋值为10
num %= 10; // num = num% 10
printf("num=%d\n",num);
return 0;
}
第六节 逗号运算符
逗号运算符
1、逗号在C语言中是1个运算符,用来连接多个表达式。
2、语法格式:
表达式1,表达式2,表达式3,.......表达式n;
3、逗号表达式的执行顺序:
从左到右的依次的计算每1个表达式,将最后1个表达式的结果作为逗号表达式的结果。
4、使用逗号表达式的注意:
逗号表达式要用小括弧括起来,否则编译器就会认为第1个表达式和赋值语句是1个整体。
5、写1个逗号表达式的意义:
并不是去想要得到前面的表达式的结果.而是想要让前面的表达式去执行,得到最后1个表达式的结果。
int a = 1;//定义整型变量a赋值为1
int b = (a++,a++,a+3);//定义整型变量b,并将表达式的值赋给b
printf("%d\n",b);//打印b的值
第七节 自增自减运算
自增运算
1、无论是前自增还是后自增都是将自身的值增加1。
2、前自增和后自增的区别:
num++ 后自增表达式
++num前自增表达式.
当后自增表达式参与到另外1条语句的时候,先计算出表达式的结果,然后再将变量的值增加1。
后自增表达式的结果的计算方式:
先将变量的值取出来当做表达式的结果,然后再将自身的值加1。
前自增表达式的结果的计算方式:
先将变量的值增加1,然后再将变量的值作为前自增表达式的结果。
自减运算(同自增类似)
#include
int main(int argc,const char * argv[])
{
int a = 3;//定义整型变量a赋值为3
int b = 5;//定义整型变量b赋值为5
int res = ++a + b--;// 定义整型变量res将表达式值赋给res'
printf("res=%d\n",res);//打印res的值
// int num1 = 10;//定义整型变量num1,赋值为10
// int num2 = ++num1;//定义整型变量num2,将表达式值赋给num2
// 将num1++这个后自增表达式的结果赋值给num2
// 后自增表达式计算方式:先将num1的值取出来作为表达式的结果,然后
// 再将num1的值自增。
// printf("num1=%d\n",num1);//打印num1的值
// printf("num2=%d\n",num2);//打印num2的值
return0;
}