C语言学习笔记(2)

三、选择语句、循环语句

C语言是“结构化”的程序设计语言

大致分为顺序、选择、循环结构三种

选择语句

If else

例(1):

#include <stdio.h>  

int main()  

{

      int input = "桃子";

      printf("喜欢苹果还是桃子\n");

      scanf_s("%d", &input);

      if (input == "苹果")       

      {

           printf("哦\n");

      }

      else

      {

           printf("好耶我也喜欢\n");

      }

      return 0;

}

——————————————————————

例(2):

已知一个函数y=f(x),当x<0时,y=1;当x=0时,y=0;当x>0时,y=-1

#include <stdio.h> 

int main()

{

    int x = 0;

    int y = 0;

    scanf_s("%d", &x);

    if (x < 0)

        y = 1;

    else if (x == 0)

        y = 0;

    else

        y = -1;

    printf("y = %d\n", y);

    return 0;

}

循环语句

while

#include <stdio.h>  

int main()

{

    int word = 0;

    printf("学习单词:%d\n", word);

    while (word < 20)

    {

        printf("继续学习:%d\n",word);

        word++;

    }

    if (word >= 20)

    {

        printf("过四级\n");

    }

    else

    {

        printf("继续加油!");

    }

    return 0;

}

for 语句

do…while

四、函数

求两个任意整数的和

使用Add函数

#include <stdio.h> 

int Add(int x, int y)//定义Add函数

   

{

    return x + y//计算结束后,返回一个结果

}

int main()            //主函数

{

    int n1 = 0, n2 = 0;

    scanf_s("%d %d", &n1, &n2);

    int sum = Add(n1, n2);

    printf("%d\n", sum);

    return 0;

}

———————————————————————————————————————

求两数之中较大值

int Max(int x, int y) //定义Max函数

{

    if (x > y)

        return x;

    else

        return y;

}

int main()//定义主函数

{

    int a = 0;

    int b = 0;

    scanf_s("%d %d", &a, &b);

    printf("%d", Max(a, b)); //使用Max函数

    return 0;

}

五、数组

1、数组:一组相同类型元素的集合。

2arr前为元素的类型,[ ]中为能存放元素的数量。

      1)若不填写[ ],则数组默认初始化,数组大小与存放的元素数量相同。

            例1:int arr[] = {2,3}  //数组中有2,3两个元素

      2)若填写[ ],则必须填写常数或常数表达式。

            例2:int m = 2

                            int arr[m] = {1,2}————(错误)

(C99标准之后支持变长数组,此时允许数组大小是变量,但这种指定方式的数组不能初始化,即支持例(2),不支持例(1)——不同编译器所支持语法标准不同)

       3)若填写[ ],且数组大小大于存放的元素数量,则出现不完全初始化,剩余空间默认初始化为0

             例3:char arr[4] = {“m”,”o”,”b”}//数组中存放有m,o,b,0

        4)若填写[ ],且用于存放字符串,则需要数组大小在原有基础上加1,用于存放\0(字符串结束的标志),否则计算机无法确定字符串何时结束,直到找到\0,此时计算字符串的长度是随机数。

 

3、数组会为集合中的元素从0开始从左到右排序,称为数组的下标数组可以通过下标来访问

#include <stdio.h> 

int main()

{

    int arr[6] = {1,1,3,1,7,1};//存放6个有顺序的整型

    printf("%d\n",arr[4]);//输出数组中下标为4的元素

    return 0;

}

#include <stdio.h> 

int main()

{

    int arr[6] = {1,2,3,5,7,9};

    int i = 0;

    while (i <= 4)

    {

        printf("%d\n", arr[i]);

        i = i + 1;

    }

   

    return 0;

}

六、操作符

算数操作符

+  -  *  /  %

例:7÷2=3……1

/:取商,即7/2=3

(除号两端都是整数,执行整数除法,得到整数;若两端出现浮点数,则执行浮点数除法,即:7.0/2=3.5)

%:取模(余数),即7/2=1

(取模操作符两端只能取整数)

移位操作符

位操作符

赋值操作符

       =(赋值)+=  -=  *=  /=  &=   ^=  |=  >>=  <<=

单目操作符

(只有一个操作数的操作符)

逻辑反操作(例:!a为非a)

-

负值(-a)

+

正值(+a=a)

&

取地址

sizeof

操作数的类型长度(以字节为单位)

(例:

#include <stdio.h> 

int main()

{

    int a = 10;

    printf("%d\n", sizeof(a));  //4

    printf("%d\n", sizeof(int)); //4

    printf("%d\n", sizeof a);  //4 (计算名字时可取消括号,计算类型时不可以)

int arr[4] = { 0 };

printf("%d\n", sizeof(arr));  //16(计算的是整个数组的大小)

printf("%d\n", sizeof (arr[0]));  //4(计算数组下标为0的元素的大小)

    return 0;

}

~

对一个数的二进制按位取反

++

前置++

int a = 10;

int c = ++a;//前置++,先++,后使用

//a=a+1;c=a+1

//a=11;c=11

后置++

int b = a++;//后置++,先使用,后++

//int b = a; a = a + 1

//b=10;a=11

--

前置--、后置--

*

间接访问操作符(解引用操作符)

(类型)

强制类型转化

例:

#include <stdio.h> 

int main()

{

int a = (int)13.3;//强制取浮点数的整数部分,将浮点型转变为整型

printf("%d\n", a);//13

return 0;

}

关系操作符

>   >=   <   <=   !=(用于测试“不相等”)   == (用于测试“相等”)

逻辑操作符

&&:逻辑与,并且

||:逻辑或,或者

(例:

#include <stdio.h> 

int main()

{

    int a = 0;

    int b = 14;

    if (a || b)

    {

       printf("haha\n");

    }

    return 0;

}

条件操作符

(三目操作符——有三个操作数)

exp1 ? exp2 : exp3

含义为:若exp1为真,则取exp2的值;反之,则取exp3的值

(例:

#include <stdio.h> 

int main()

{

    int a = 12;

    int b = 14;

    int r = a > b ? a : b;

    printf("%d", r);

    return 0;

}

​​​​​​​逗号表达式

用逗号隔开的一串表达式

特点:从左向右以次计算,整个表达式的结果是最后一个表达式的结果

#include <stdio.h> 

int main()

{

    int a = 12;

    int b = 14;

    int c = (b = a + 3, a = b - 10, a + b);

    printf("%d\n", c);

    return 0;

}

下标引用、​​​​​​​函数调用

下标引用

#include <stdio.h> 

int main()

{

    int arr[3] = { 1,2,3 };

    arr[2] = 12; //[]就是下标引用操作符,arr和3就是[]的操作数

    printf("%d\n", arr[0]);

    printf("%d\n", arr[1]);

    int n = 2;

    printf("%d\n", arr[n]); //可使用变量

       return 0;

}

函数调用

#include <stdio.h> 

int Add(int x, int y)

{

    return x + y;

}

int main()          

{

    int n1 = 0, n2 = 0;

    scanf_s("%d %d", &n1, &n2);

    int sum = Add(n1, n2); //()就是函数调用操作符,Add、n1、n2就是()的操作数

    printf("%d\n", sum);

    return 0;

}

七、常见关键字

(C语言本身内置,无法创建

大体介绍:

auto

自动储存

break

跳出当前循环

const

常属性

extern

声明外部符号

register

寄存器

enum

枚举

struct

结构体

union

联合体(共用体)

signed

有符号的

unsigned

无符号的

static

静态的

typedef

类型重命名

void

无(函数的返回类型、函数参数)

sizeof

计算大小(单位为字节)

数据类型、特殊语句等关键字

具体介绍:

typedef

类型重命名

#include <stdio.h> 

int main()          

{

    typedef unsigned int unit; //将unsigned int类型简化重命名为unit,更方便去声明变量类型

    unit x = 90; //x类型为unsigned int

    printf("%d", x);

    return 0;

}

static

1、修饰局部变量

static 修饰局部变量时,局部变量出了作用域也不销毁;本质上,static修饰局部变量时,改变了变量的存储位置,改变了变量的生命周期,使生命周期变长,和程序的生命周期一样长。

#include <stdio.h> 

void test()//void不需要返回

{

    int a = 2;

    a++;

    printf("%d ", a);

}

int main()          

{

    int i = 1;

    while (i < 10)

    {

        test();

        i++;

    }

    return 0;

}

#include <stdio.h> 

void test()

{

    static int a = 2;//第二次及以后使用上一次a的值

    a++;

    printf("%d ", a);

}

int main()          

{

    int i = 1;

    while (i < 10)

   {

        test();

        i++;

    }

    return 0;

}

2、修饰全局变量

全局变量具有外部链接属性

static修饰全局变量时,将外部链接属性变为内部变量属性,使其他源文件无法使用。

​​​​​​​

3、修饰函数

函数具有外部链接属性

static修饰函数时,将外部链接属性变为内部变量属性,使其他源文件无法使用。

register

寄存器——建议将变量放入寄存器中

register int a = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值