【学习笔记】【C语言】选择结构-if

1.if的第1种结构
if(条件)
{
    语句1;
    语句2;
    ......
}
如果if右边小括号()中的条件成立,也就是为“真”时,就会执行大括号{}中的语句;

如果条件为假,就不执行大括号{}中的语句。这里的if是关键字。

C语言规定所有非0值都为“真”

2.if的第2种结构
if(条件1)
{
     语句1;
     语句2;
     ......
}
else
{
   
}
如果if右边小括号()中的条件成立,也就是为“真”时,就会执行大括号{}中的语句,

如果条件为假,就执行else中{}里面的语句。

3.if的第3种结构
if(条件1)
{
     语句1;
     语句2;
     ......
}
else if(条件2)
{
 
}
else if(条件3)
{
 
}
else if(条件4)
{
 
}
else
{
 
}

如果if右边小括号()中的条件1成立,也就是为“真”时,就会执行大括号{}中的语句,

如果条件1不成立就判断条件2成不成立,成立就执行不成立就继续往下走判断条件3,以此类推

如果如果所有的条件为假,就执行else中{}里面的语句。

注意:这么多大括号中,只有1个大括号内的代码会被执行。
 
 4.if的第4种结构

如果if后面大括号{}中只有一行代码时,可以省略大括号。
if (条件)
   语句1;

为了保证代码的可读性,不建议省略大括号!!!

5.语句嵌套

if语句内部是可以嵌套其他if语句的,如下面的例子

int a = 7;

if ( a > 0 )
{
    printf("a的值大于0\n");
   
       if ( a<9 )
       {
           printf("a的值小于9");
       }
}

6.注意

1》

千万不要在if的小括号后面添加分号

if ( a>8 );

2》

假设本来是想判断a是否为0,那么本应该写if (a == 0),若误写成了if (a = 0),那将是一件非常可怕的事情,因为编译器又不报错,这样的BUG就难找了。因此,像a==0这样的表达式,最好写成0==a,若误写成0=a,编译器会直接报错。

// 不推荐
if (a == 0) {
}

// 推荐
if (0 == a) {
}

3》
在C语言中,可以不保存关系运算的结果。

int a = 10;
a > 10;
a == 0;

这里又是一个陷阱,假设你的本意是想给a赋值为0,那么本应该写a = 0; ,若误写成a == 0; ,那将又是一个非常难找的BUG,因为编译器根本不会报错。

7.练习

 1 /*
 2  输入一个整数score代表分数,根据分数输出等级(A-E)(用两种方式)
 3  A:90~100
 4  B:80~89
 5  C:70~79
 6  D:60~69
 7  E:0~60
 8 */
 9
10 #include <stdio.h>
11
12 int main()
13 {
14     // 1.提示输入
15     printf("请输入分数值:\n");
16
17     // 2.接收输入
18     int score;
19     scanf("%d", &score);
20
21     // 3.判断等级 (性能最高)
22     if (score>=90 && score<=100) { // [90, 100]
23         printf("A\n");
24     } else if (score>=80) { // [80, 89]
25         printf("B\n");
26     } else if (score>=70) { // [70, 79]
27         printf("C\n");
28     } else if (score>=60) { // [60, 69]
29         printf("D\n");
30     } else { // (-∞, 59]
31         printf("E\n");
32     }
33
34     /* 性能中等
35     if (score>=90 && score<=100) { // [90, 100]
36         printf("A\n");
37     } else if (score>=80 && score<=89) { // [80, 89]
38         printf("B\n");
39     } else if (score>=70 && score<=79) { // [70, 79]
40         printf("C\n");
41     } else if (score>=60 && score<=69) { // [60, 69]
42         printf("D\n");
43     } else { // (-∞, 59]
44         printf("E\n");
45     }*/
46
47     /* 性能最差
48     if (score>=90 && score<=100) { // [90, 100]
49         printf("A\n");
50     }
51
52     if (score>=80 && score<=89) { // [80, 89]
53         printf("B\n");
54     }
55
56     if (score>=70 && score<=79) { // [70, 79]
57         printf("C\n");
58     }
59
60     if (score>=60 && score<=69) { // [60, 69]
61         printf("D\n");
62     }
63
64     if (score<=59) { // (-∞, 59]
65         printf("E\n");
66     }*/
67     return 0;
68 }
时间: 2024-08-06 07:57:30

【学习笔记】【C语言】选择结构-if的相关文章

Swift学习笔记:类和结构

一.类和结构的异同 类和结构有一些相似的地方,它们都可以: 1. 定义一些可以赋值的属性: 2. 定义具有功能性的方法 3. 定义下标,使用下标语法 4. 定义初始化方法来设置初始状态 5. 在原实现方法上的可扩展性 根据协议提供某一特定类别的基本功能 1. 类还有一些结构不具备的特性: 2. 类的继承性 3. 对类实例实时的类型转换 4. 析构一个类的实例使之释放空间 5. 引用计数,一个类实例可以有多个引用 1. 定义语法 struct Name{ let firstName = "&quo

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以

iOS学习笔记---c语言第九天

高级指针 指向结构体变量的指针,称为结构体指针 可以使用->指向内容. %p打印地址 void pLenth(cPoint *p1,cPoint *p2) //求两点间的距离  用的开方函数sqrt()和平方函数pow(,) { float a = sqrt(pow((p1->x-p2->x), 2)+pow((p1->y-p2->y), 2)); printf("两点距离为%.2f\n",a); } //main.m中代码 #import <Fou

ios学习笔记---c语言第二天

一.bool布尔类型    c语言没有bool类型,oc里有bool类型 是一种非真即假的数据类型,布尔类型的变量只有yes和no两个值.yes表示表达式是真,no表示表达式是假. 在c语言中认为非0即为真. 分支语句中常用bool值做判断,判断执行if语句还是else语句. 循环结构中,也常使用bool值做判断,判断是否要执行循环. 注意事项: #define yes 1 #define no 0 计算机在识别时,yes就替换成1,no就替换成0. 二.关系运算符 >   >=   <

iOS学习笔记---c语言学习第七天

结构体 结构体是一种自定义的数据类型 struct 结构体名 { 类型说明符  成员名: … 类型说明符  成员名: }: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { struct teacher{ char name[30]; char sex; int age; char course[30]; }; typedef struct teacher Teacher; Teacher c

iOS学习笔记---c语言第十天

动态内存分配 一.存储区划分 从低到高(内存地址小----内存地址大)  :  代码区---常量区---静态区---堆区---栈区 栈内存 //凡是在函数体内定义的变量 都存储在栈区(包括形参). int a = 10;//a也是在栈区域里面 float b = 1.5;//b也是在栈区域里面 char c = 'b'; double d = 3.14; printf("%p %p %p %p\n",&a,&b,&c,&d); //栈的特点先进后出,先定

iOS学习笔记---c语言第十一天

函数指针 一.函数指针定义 //函数声明:声明我是一个什么函数 //求两个数的和 //函数的类型:int (int x,int y) //即:我是一个返回值为整型,有两个整型参数的函数. //函数名是 sum int sum(int x,int y); 函数指针定义p是变量,其他是类型(通常没有形参a,b) //函数指针类型 int (*)(int x,int y) //描述:指向 返回值为 int 两个int参数 的 指针类型 //函数指针变量: p //初始值 : sum printf("%

iOS学习笔记---oc语言第三天

继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量也继承过来了,只是不能访问) 面向对象提供了继承语法.能大大简化代码,把公共的方法和实例对象写在父类里.子类只需要写自己独有的实例变量和方法即可 继承既能保证类的完整,又能简化代码 继承特点 oc中只允许单继承 没有父类的类称为根类,oc中得根类是NSObject(祖宗) 继承的内容:所有的实例变量

IOS学习笔记---C语言第四天

1 //?生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相 加,放到另外?一个数组中 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 7 int num1[10]={0},num2[10]={0},num3[10]={0}; 8 for (int i = 0; i<10; i++) { 9 num1[i]=arc4random()%2

java之jvm学习笔记十三(jvm基本结构)

java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成图形,所以只要你有耐心,仔细,认真,并发挥你的想象力,这一章之后你会充满自信.当然,不是说看完本章,就对jvm了解了,jvm要学习的知识实在是非常的多.在你看完本节之后,后续我们还会来学jvm的细节,但是如果你在学习完本节的前提下去学习,再学习其他jvm的细节会事半功倍. 为了让你每一个知识点都有迹