#import <Foundation/Foundation.h>
// 宏定义 把工程中所有的DJ 全部替换成 10
//是替换的过程 千万结束时不要加分号
#define DJ 10
#define YES 1;
int main(int argc, const char * argv[]) {
//限时练习
//创建整型变量
int a = 0;
//创建浮点型变量
float b = 0.0;
float sum = 0.0;
printf("输入一个整数和一个浮点数,以逗号隔开:\n");
scanf("%d,%f",&a,&b);
sum = a + b;
printf("sum = %f",sum);
// BOOL是一种数据类型
// 它只有0和1两个值
// 系统通过预编译, 把0编译成NO,把1编译成YES
// 所以咱们在工程中一般只能看见yes和no
printf("%d\n",DJ);
// 声明一个BOOL变量,初值为NO
// bool是C语言中使用的
// BOOL是OC中使用的
BOOL b1 = YES;
printf("%d\n",b1);
// 定义两个整型变量 比较大小 打印比较结果
int number1 = 5;
int number2 = 10;
// 关系运算符 > >= < <= == !=
// 如果成立 返回YES也就是1 反之NO也就是0
// 关系运算符优先级
// (> >= < <= 同级关系 ) 大于 ( == != )
BOOL result = number1 < number2;
printf("%d\n",result);
// 注意 == 是判断两边是否相等 是双等号
// 练习 1 == 3 > 1 相当于 1 == (3 > 1)
//声明BOOL变量 接收返回结果
BOOL result1 = 1 == 3 > 1;
printf("%d\n",result1);
// 逻辑运算符 && || !
// && 一假则假 (必须两边 全是真的 整个逻辑表达式才是真的)
// || 一真则真 (必须两边 全是假的 整个逻辑表达式才是假的)
// ! 对结果进行取反 非真即假
// 终极口诀: 非零即真
// 逻辑与短路现象
// 逻辑与 如果前面的为假 那么后面的就不执行了 这就是 短路现象
int aa = 5;
int bb = 10;
BOOL result2 = aa > bb && aa++; //aa=5,如果是aa < bb ,则aa=6
// 逻辑或短路现象
// 逻辑或 如果前面为真 整个表达式为真 那么后面的就不去执行了 这就是短路现象
BOOL result3 = aa > bb || aa++; //aa=6,如果aa < bb ,则aa=5
// 程序的三种结构:顺序结构,分支结构,循环结构
// 分支结构 通过一个判断 来选择执行哪个语句
// if语句的写法
/*
if(判断语句){
要执行的语句
}
如果判断语句为真,就执行大括号中的语句.
如果判断语句为假,就跳过大括号中的语句(不执行).
*/
// 需求: 定义两个整型变量 如果a > b的话,打印 a比b大
int a1 = 5;
int b2 = 4;
if(a1 > b2){
printf("a比b大\n");
}
// 声明一个字符型变量
char c = 0;
printf("请输入字符:\n");
scanf("%c",&c);
//进行判断
if (c == 'm') {
printf("男性\n");
}
if (c != 'm') {
printf("女性\n");
}
//if语句的第二种形式
/*
if(判断条件){
语句1;
}else{
语句2;
}
不管if语句是哪种形式, 首先要看的 就是判断条件
条件成立 执行语句1
条件不成立 执行else后面大括号的部分 语句2
*/
if (c == 'm') {
printf("男性\n");
}else{
printf("女性\n");
}
//如果条件成立 就执行条件后紧跟着的大括号
//如果条件不成立 就执行else后面的大括号
//终极口诀:分支结构中 只执行一个分支中的语句
printf("请输入年份:\n");
int year = 0;
scanf("%d",&year);
BOOL result5 = (year % 4 == 0 && year % 100 != 0);
BOOL result4 = (year % 400 == 0);
if (result5 || result4) {
printf("该年是闰年\n");
}else{
printf("该年不是闰年\n");
}
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
printf("该年是闰年\n");
}else{
printf("该年不是闰年\n");
}
//if语句的第三种形式 (级联式)
/*
if(判断条件1){
语句1;
}else if(判断条件2){
语句2;
}else if(判断条件3){
语句3;
}else{
语句4;
}
首先判断条件1 ,不成立 不执行语句1
继续判断条件2,不成立 不执行语句2....
如果前面全不成立 else后面又没有判断条件,那么执行 else后面大括号中的语句
*/
// 实际上 输入一个字符 就相当于 输入一个0-255的数
char d1 = 0;
printf("请输入一个字符:\n");
scanf("%c",&d1);
if (d1 >= '0' && d1 <= '9') {
printf("this is digital");
} else if(d1 >= 'A' && d1 <= 'Z'){
printf("this is capital letter");
}else if(d1 >= 'a' && d1 <= 'z'){
printf("this is letter");
}else {
printf("other");
}
//条件表达式 (三目运算符)
//判断条件 ? 返回值1 : 返回值2 ;
//如果判断条件成立 就返回返回值1 反之返回返回值2
//需求:定义两个整型变量 打印比较大的一个 (利用条件表达式)
int a3 = 10;
int a4 = 12;
int max = a3 > a4 ? a3 : a4;
printf("max=%d",max);
//枚举类型
/*
定义枚举类型
enum 枚举类型的名字 {
枚举值的列表
};
需求:创建一个枚举的值分别为 春 夏 秋 冬
枚举的值 默认从0开始 依次递增
也可以指定枚举的值
*/
// enum Season{
// spring = 333, // 注意 枚举值要用逗号隔开
// summer = 339,
// autumn, // 340
// winter // 341
// };
//
// printf("%d\n",spring);
// switch语句
/*
switch (整型表达式(数字或者字符)) {
case 值1(数字或字符):
执行的语句1;
break; //跳出整个switch语句
case 值2(数字或字符):
执行的语句2;
break; //跳出整个switch语句
case 值3(数字或字符):
执行的语句3;
break; //跳出整个switch语句
......
default:
如果前面的case都没有匹配上,就执行default后面的语句
break;
}
*/
//定义一个枚举,提高代码的阅读性
enum Season{
spring = 1, // 注意 枚举值要用逗号隔开
summer,
autumn,
winter
};
printf("输入1-4:\n");
int a5 = 0;
scanf("%d",&a5);
switch (a5) {
case spring:
printf("spring");
break;
case summer:
printf("summer");
break;
case autumn:
printf("autumn");
break;
case winter:
printf("winter");
break;
default:
printf("输入1-4");
break;
//default可以省去
// default位置可以变 只要所有case没有匹配成功,就会去执行default后面的语句
}
return 0;
}