1、结构化编程思想
顺序结构
分支结构:有条件地执行语句
循环结构:反复执行某段代码
2、分支结构
单if语句:一件事做与不做的选择
源码示例:
int y = 0;
if (y) {
NSLog(@"%d",y);
}
NSLog(@"+-----------------+");
double money = 3.0;
double price = 2.9;
if(money - price - 0.1)
{
NSLog(@"还有钱!");
}
if(fabs(money - price - 0.1) < 0.01)
{
NSLog(@"没钱了!");
}
int age;
NSLog(@"请输入一个年龄:");
scanf("%d",&age);
if (age >= 18)
{
NSLog(@"成年人");
}
else
NSLog(@"未成年人");
if~else语句:两件事做哪一件的选择
else~if语句:多件是做哪一件的选择
源码示例:
//从键盘输出百分制成绩输出对应的等级成绩,100-90优 89-60一般 59-0不及格
int score;
NSLog(@"输入一个成绩");
scanf("%d",&score);
if (score<=100&&score>=90) {
NSLog(@"优秀");
}
else if (score<90&&score>=60){
NSLog(@"一般");
}
else if (score<60&&score>=0){
NSLog(@"不及格");
}
else
NSLog(@"成绩输入格式错误");
3、语句的三种形式
普通语句:之前编的每一句都是普通语句,普通语句构成程序的主题
复合语句:将两条或两条以上的语句用大括号括起来构成的语句
空语句:一般在比较大型的程序中使用
4、逻辑运算符
&&:与,全真为真,有假即假
||:或,全假为假,有真即真
!:非,颠倒真假
短路运算:是编译器对源程序的一种优化,即将不必要的代码删除的操作
int a=3,b=4,c=5,result;result = (a>b) && (b<(++c))//a>b会将&&后面的代码短路,后面的代码不会运行,c不会自增
5、三目运算符
int x=10,y=20,z=30,result;result = x<y?x:(++y<z)?y:z;//x<y会将第一个冒号后面的代码短路,虽然三目运算符是从右往左结合但是编译器扫描是从左往右
6、赋值运算符
左值:赋值号左边的值,常量不允许做左值,表达式也不允许做左值,只能是变量
赋值号=与逻辑等==的区别
复合赋值运算符,一定要注意其优先级极低,只比逗号优先级高
每日一练
1、从键盘输入一个年月日,输出其昨天的年月日。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解析:
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
int year;
NSLog(@"请输入一个年份值:");
scanf("%d", &year);
int month;
NSLog(@"请输入一个月份值:");
scanf("%d", &month);
;//判断输入的合法性
int day;
NSLog(@"请输入一个日值:");
scanf("%d", &day);
;//判断合法性
day--;
if (day < 1)
{
day = 31;
if (month == 5 || month == 7 || month == 10 || month == 12)
{
day = 30;
}
else if (month == 3)
{
day = 28 + (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
}
if (month == 1)
{
year--;
month = 12;
}
else
{
month--;
}
}
NSLog(@"%d年%d月%d日",year, month, day);
}
return 0;
}