++
++
自增(前):先运算后取值
自增(后):先取值后运算
a=7;b=++a
a=7;b=a++
a=8;b=8
a=8;b=7
--
--
自减(前):先运算后取值
自减(后):先取值后运算
a=7;b=--a
a=7;b=a--
a=6;b=6
a=6;b=7
#includevoid main() { //因为9和7都为整数,所以结果中整数1后面的小数都被截断,只保留1 double a = 9 / 7; printf("a = %fn", a); //若想要保留小数,则在参加运算的数字中,必须加上小数部分 double b = 9.0 / 7; printf("b = %.15fn", b); //9 % 7 指的是9对7取余(取模) int c = 9 % 7; printf("c = %dn", c); //计算机中取模的公式为 a - a / b * b //-9 - (-9) / 7 * 7 int d = -9 % 7; printf("d = %dn", d); //9 - 9 / (-7) * (-7) int e = 9 % -7; printf("e = %dn", e); //(-9) - (-9) / (-7) * (-7) int f = -9 % -7; printf("f = %dn", f); }
计算机中取模的公式为 a - a / b * b
5.1.2 ++#includevoid main() { int a = 7; int b = a++;//等价于b = a; a = a + 1; printf("a = %d b = %dn", a, b); int c = ++a;//等价于a = a + 1; c = a; printf("a = %d c = %dn", a, c); //++a和a++可以独立使用,但两者完全等价,都是a = a + 1; ++a; printf("a = %dn", a); a++; printf("a = %d", a); }
- b = a++;//等价于b = a; a = a + 1;
- c = ++a;//等价于a = a + 1; c = a;
- ++a和a++可以独立使用,但两者完全等价,都是a = a + 1
- 假如还有97天放假,请问还有多少个星期零几天?
#include
void main() { int weeks, days; weeks = 97 / 7; days = 97 % 7; printf("距离放假还有 % d个星期零 % d天", weeks,days); } -
定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。
#include
void main() { //华氏温度转换摄氏温度的公式为:5 / 9 * (华氏温度 - 100), double Fahrenhite = 97; double Centigrade = 5.0 / 9 * (Fahrenhite - 100); printf("%f对应的摄氏温度为%f", Fahrenhite, Centigrade); }
- 关系运算符的结果为真是非0,为假是0
- 关系表达式经常用在if或循环中
#include3.3逻辑运算符 3.3.1介绍void main() { int a = 9; int b = 7; printf("a==b = %dn",a==b); printf("a!=b = %dn", a != b); printf("a>b = %dn", a > b); printf("a=b = %dn", a >= b); printf("a<=b = %dn", a <= b); }
用于连接多个条件(一般来讲就是关系表达式),最终的结果要么是真(非 0 表示),要么是 假(0 表示) 。
3.2.2逻辑运算符表示设变量A为1,变量B为0
#includevoid main() { //double score = 97; //double score = 79; double score = 59; if (score >= 80) { printf("优秀"); } else if (score >= 60 && score < 80) { printf("良"); } else { printf("不合格"); } }
#include3.2.3.2逻辑或运算void main() { int a = 9, b = 7; if (b < 8 && a++ > 9) {// a++ > 9判断中先进行a > 9的判断,再进行a++ printf("ok1n"); } printf("a = %dn", a); int c = 9, d = 7; if (d < 8 && ++c > 9) {// ++c > 9判断中先进行c > 9的判断,再进行++c printf("ok2n"); }printf("c = %dn", c); int e = 9, f = 7; if (f < 6 && ++e > 9) {// 如果在进行&& *** 作时,第一个判断的结果是false,则之后的条件就不再进行判断 printf("ok3n"); }printf("e = %d", e); }
#include3.2.3.3逻辑非运算void main() { int a = 9, b = 7; if (a > 7 || b++ > 7) {//在进行逻辑与时候,第一个判断的结果是true,则之后的条件不再进行判断 printf("okn"); } printf("b = %dn", b); }
#include3.3赋值运算符 3.3.1介绍void main() { //int score = 97; int score = 79; int result = score > 80; if (result) { printf("ok1n"); } if (!result) {//当result取反为真时 printf("ok2"); } }
赋值运算符就是将某个运算后的值,赋给指定的变量
3.3.2赋值运算符表示A = B + C等价于把
B + C的值赋值给A
A += B 等价于 A = A + B
#includevoid main() { //交换a与b的值 int a = 9; int b = 7; int temp = a;//设置一个临时变量保存a的值 a = b;//将b赋值给a b = temp;//将temp赋值给b,即a原来的值复制给b,完成交换 printf("a = %dtb = %d", a, b); //+=示例 int c = 97; c += a; printf("c = %d", c); }
- 运算顺序从右往左
- 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
- 在运算时,如果被赋值的变量精度较小,则有可能会导致精度损失
条件表达式 ? 条件1 :条件2;
- 如果条件表达式为非 0 (真),运算后的结果是表达式 1;
- 如果条件表达式为 0 (假),运算后的结果是表达式 2;
#includevoid main() { int a = 9; int b = 7; int c = a > b ? a++ : --b;//a > b为真,因此a++赋值给c;而a++先进行赋值 *** 作,即c = a,再进行 a = a + 1 printf("a = %dnb = %dnc =%dn", a, b, c); int d = 9; int e = 7; int f = d < e ? d++ : --e;//d < e为假,因此e--赋值给f;而e--先进行e = e - 1,在进行赋值操作 printf("d = %dne = %dnf =%dn", d, e, f); //三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失 int num1 = a > b ? 1.2 : 1.3; printf("num1 = %dn", num1); //三元可以转换为eif else语句 int num2; if (a > b) { num2 = 1.2; } else { num2 = 1.3; } printf("num2 = % dn", num2); }
- 三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失
- 三元可以转换为eif else语句
输出三个数中的最大值
#include3.5运算符优先级void main() { int a = 9; int b = 7; int c = 97; int temp = a > b ? a : b; temp = temp > c ? temp : c; printf(" a,b,c中的最大值为%d", temp); }
- 结合的方向只有三个是从右向左,其余都是从左向右,分别是赋值运算符、单目运算和三目运算
- 逗号的运算符优先级最低
- 优先级的大概顺序为算数运算符>关系运算符>逻辑运算符(逻辑非除外,其优先级较高)>赋值运算符>逗号运算符
- C语言对各种变量、函数等命名时使用的字符序列称为标识符
- 凡是自己可以起名字的地方都叫标识符
- 由 26 个英文字母大小写,0-9 ,_或 $ 组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- C语言中严格区分大小写,长度无限制
- 标识符不能包含空格
- 程序中不得出现仅靠大小写区分的相似的标识符
- 所有宏定义、枚举常数、常量(只读变量)全用大写字母命名,用下划线分隔单词
- 定义变量别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据, 运行程序, 会异常退出
- 变量名、函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
关键字的定义:被C语言赋予了特殊意义,用于专门用途的字符串
3.7键盘输入语句 3.7.1介绍在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
3.7.2步骤- #include
- 使用scanf函数
- 使用恰当的格式参数接收输入
#include3.8练习void main() { char name[20] = ""; int age; double sal = 0.0; char gender ; printf("请输入名字");//提示用户输入信息 scanf_s("%s", name, sizeof(name));//scanf_s("%s", name)表示接收一个字符串,并将其存入name数组中 printf("请输入年龄"); scanf_s("%d", &age);//将用户输入的信息存入name所指向的地址中,因此需要用& printf("请输入薪水"); scanf_s("%lf", &sal);//在使用scanf时,double对应的参数是%lf printf("请输入性别(m/f)"); scanf_s("%c", &gender, sizeof(gender));//第一个scanf接收回车 scanf_s("%c", &gender, sizeof(gender));//第二个scanf接收用户数据 printf("n姓名为%st年龄为%dt薪水为%ft性别为%c", name, age, sal, gender); }
- 定义变量保存 秒数,打印输出 xx 小时 xx 分钟 xx 秒
#include
void main() { int seconds = 0; int hours = 0; int minutes = 0; int leftSeconds = 0; printf("请输入秒数:"); scanf_s("%d", &seconds); hours = seconds / 3600; minutes = seconds % 3600 / 60; leftSeconds = seconds % 3600 % 60; printf("%d小时%d分%d秒", hours, minutes, leftSeconds); } -
实现对三个整数进行排序,输出时按照从小到大的顺序输出
#include
void main() { int a = 0; int b = 0; int c = 0; int temp = 0; printf("请输入三个数字:"); scanf_s("%d%d%d", &a, &b, &c); if (a > b) { temp = a; } else { temp = b; b = a; a = temp; } if (a > c && b > c) { printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", temp, a, b, c); } else if ( a > c && b < c){ printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", temp, a, c, b); } else { printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", c, c, a, b); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)