3.4三元运算符
3.4.1基本语法
条件表达式 ? 条件1 :条件2;
- 如果条件表达式为非 0 (真),运算后的结果是表达式 1;
- 如果条件表达式为 0 (假),运算后的结果是表达式 2;
3.4.2代码
#include<stdio.h> void 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 = %d\nb = %d\nc =%d\n", 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 = %d\ne = %d\nf =%d\n", d, e, f); //三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失 int num1 = a > b ? 1.2 : 1.3; printf("num1 = %d\n", num1); //三元可以转换为eif else语句 int num2; if (a > b) { num2 = 1.2; } else { num2 = 1.3; } printf("num2 = % d\n", num2); }
- 三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失
- 三元可以转换为eif else语句
3.4.3练习
输出三个数中的最大值
#include<stdio.h> 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); }
3.5运算符优先级
- 结合的方向只有三个是从右向左,其余都是从左向右,分别是赋值运算符、单目运算和三目运算
- 逗号的运算符优先级最低
- 优先级的大概顺序为算数运算符>关系运算符>逻辑运算符(逻辑非除外,其优先级较高)>赋值运算符>逗号运算符
3.6.1标识符的概念
- C语言对各种变量、函数等命名时使用的字符序列称为标识符
- 凡是自己可以起名字的地方都叫标识符
3.6.2标识符的命名规则
- 由 26 个英文字母大小写,0-9 ,_或 $ 组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- C语言中严格区分大小写,长度无限制
- 标识符不能包含空格
3.6.3标识符的规范
- 程序中不得出现仅靠大小写区分的相似的标识符
- 所有宏定义、枚举常数、常量(只读变量)全用大写字母命名,用下划线分隔单词
- 定义变量别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据, 运行程序, 会异常退出
- 变量名、函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
3.6.4关键字
关键字的定义:被C语言赋予了特殊意义,用于专门用途的字符串
3.7键盘输入语句
3.7.1介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
3.7.2步骤
- #include<stdio.h>
- 使用scanf函数
- 使用恰当的格式参数接收输入
3.7.3代码
#include<stdio.h> 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姓名为%s\t年龄为%d\t薪水为%f\t性别为%c", name, age, sal, gender); }
3.8练习
- 定义变量保存 秒数,打印输出 xx 小时 xx 分钟 xx 秒
#include<stdio.h> 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); }
2.实现对三个整数进行排序,输出时按照从小到大的顺序输出
#include<stdio.h> 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); } }