C语言程序设计笔记—005

  • 初识C语言三大结构语句+函数+数组+操作符
    • 1、初识C语言三个结构
    • 2、初识函数
    • 3、初识一维数组
    • 4、初识C语言操作符
      • 4.1、算数操作符例程
      • 4.2、赋值操作符例程
      • 4.3、关系操作符例程
      • 4.4、复合操作符例程
      • 4.5、单目操作符例程
      • 4.6、条件操作符例程
      • 4.7、逻辑操作符例程
      • 4.8、位操作符例程
      • 4.9、逗号运算符例程

初识C语言三大结构语句+函数+数组+操作符

/知识点汇总/

1、初识C语言三个结构

(1)自上而下顺序执行语句序列(顺序结构);
(2)通过测试,选择执行哪一个语句序列(分支/选择结构);
(3)如果满足某些条件就重复执行语句序列(循环结构);
生活中的场景或事件,都可以由三大结构抽象描述
1.1、初识选择结构
选择结构常用关键字:if、else、switch、case、continue、break、default、goto
1.1选择结构代码例程:

/*例程1.1*/#include <stdio.h>int main(){int num;printf("今天有努力学习吗?\n");printf("输入1表示YES,输入其他表示NO\n");scanf("%d", &num);if (num == 1) printf("有努力学习\n");else printf("没有努力学习\n");return 0;}

1.2、初识循环结构:
循环结构常用关键字:while循环、do while循环、for循环
1.2 循环结构代码例程:

/*例程1.1*/#include <stdio.h>int main(){printf("今天代码写了多少行:\n");int line = 0;while (line < 1000){printf("今天代码写了的行数:%d\n",line);line++;}//此时最后依次执行line = 1000 比较条件line < 1000 不满足所以跳出循环语句if (line == 1000)printf("完成今日学习!!!\n");return 0;}

2、初识函数

(1)前言:数学中有,f(x) = ax + b f(x,y) = x+y
当然在C语言中:同样可以实现
(2)概念:语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等,即:函数理解为描述的是一种关系

2.1、函数代码例程

/*例程2.1*/#include <stdio.h>//封装一个含参的加法函数add()其中add为用户自定义函数名add(int x,int y){int sum3 = x + y;return sum3;}int main(){int a = 0;int b = 0;printf("请输入两个整数:\n");scanf("%d%d",&a,&b);int sum = a + b;printf("a=%d\nb=%d\nsum=%d\n", a, b,sum);//以函数的形式实现int sum2 = add(a, b);//调用add()函数printf("a=%d\nb=%d\nsum2=%d\n", a, b, sum2);return 0;}

小结
一个工程中,可以有多个.c文件,但是多个.c文件中只能有一个main函数,函数的功能就是简化程序,方便调用。

3、初识一维数组

规范:
(1)一维数组—一组相同类型的元素集合
(2)数组名字符合标识符的书写规定(数字、英文字母、下划线) 。数字不可开头
(3)数组名不能与其它变量名相同 。
(4)方括号[]中常量表达式表示数组元素的个数 。
(5)数组是由下标进行访问,且下标从0开始,依次递增
如:a[3] 包含 a[0], a[1], a[2] 三个元素 //0, 1, 2分别表示其元素下标
(6)一维字符数组初始化三种情况
a、当字符个数少于数组空间大小时:
char ch[5] = {‘a’,‘b’,‘c’};//下标的数>元素的个数时,称为不完全初始化,其余元素默认为0
b、当字符个数等于数组空间大小时:
char ch[] = {‘a’,‘b’,‘c’,‘d’,‘e’};//下标可以不写,可直接写全元素,称为数组初始化
c、当字符个数多于空间大小时:
我们在初始化的时候,当字符个数多于空间大小时,编译时报错。
(7)一维字符数组赋值方式:
a、1)逐个字符赋值:char a[8] = {‘h’,‘e’,‘l’,‘l’,‘o’} ; //始值个数5小于数组a空间个数8
b、字符串初始化赋值:char a[15] = {“Hello World”}; //注意该数组的大小<小标个数

3.1、一维数组代码例程

/*例程3.1*/#include <stdio.h>int main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int i = 0;while (i < 10){printf("%d\n",arr[i]);i++;}return 0;}

4、初识C语言操作符

(1)概念:操作符就是说明特定操作的符号,它是构造C语言表达式的工具
(2)常见的三大类:算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符等。

4.1、算数操作符例程

算术操作符:+,-,*,/,%
注意
a、% 操作符不能用于浮点数,只能作用于整数,如果作用于浮点数将会报错。
b、当/ 两边的操作都是整数,执行的就是整数除法
c、 当/ 两边的操作数有一个数为浮点数的话,执行的是浮点数除法

/*例程4.1*/#include <stdio.h>int main(){int a = 9 / 2;int b = 10 % 3; //求10 % 3的余数/模,得出的余数是1//% 操作符不能用于浮点数,只能作用于整数,如果作用于浮点数将会报错。printf("%d\n", a);printf("%d\n", b);return 0;}

4.2、赋值操作符例程

赋值操作符:=
注意:区分赋值运算符 = 与关系运算符 ==

/*例程4.2*/#include <stdio.h>int main(){int a = 10;printf("%d\n", a);return 0;}

4.3、关系操作符例程

关系操作符:>,>=,<,<=,!= ,==

/*例程4.3*/#include <stdio.h>int main(){int num;printf("今天有努力学习吗?\n");printf("输入1表示YES,输入其他表示NO\n");scanf("%d", &num);if (num == 1) printf("有努力学习\n");else printf("没有努力学习\n");return 0;}

4.4、复合操作符例程

复合操作符:+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=

/*例程4.4*/#include <stdio.h>int main(){int x= 10;x+=10;// 可以写成这样,等价于x= x + 10;//其他的运算符同理的操作printf("%d",x);//20return 0;}

4.5、单目操作符例程

单目操作符表:

单目操作符类型说明
逻辑反操作符
负值
+正值
&取地址
sizeof查询对象或类型的大小
~对一个数的二进制位 按位取反
前置、后置减减
++前置、后置加加
*间接访问操作符(解引用操作符)
(数据类型)强制类型转换

注意:(1)sizeof 是一个关键字,可以用来求一个变量或类型所占内存空间的大小(单位:字节)。
(2)++在前先加后用,++在后先用后加;–同理
注意
强制类型转换:()是括数据类型
int a= (int)3.14; 把3.14强制转换成int型
printf(“%d\n”,a); //a的结果为3。
a、double(大)—>int(小) 可能会丢失数据,报错
b、int(小)–>double(大) 满足条件

/*例程4.5*/#include <stdio.h>int main(){int a = 10;printf("%d\n", sizeof(a)); //计算a所占内存空间的大小为4个字节printf("%d\n", sizeof(int)); //计算int类型为4个字节 int arr[5] = { 1,2,3,4,5};printf("%d\n", sizeof(arr));// 数组名 arr 单独放在sizeof代表的是整个数组,//因为arr数组是int型且里面有5个元素,//int型大小是4个字节,所以总大小为20个字节return 0;}

4.6、条件操作符例程

条件操作符(唯一的三目运算符):表达式1 ? 表达式2:表达式3

/*例程4.6*/#include <stdio.h>int main(){int a = 5;int b = 8;int max = (a > b ? a : b);//a如果大于b的话会把a赋值给max,如果a不大于b 的话则会把b赋值给maxprintf("%d\n", max);return 0;}

4.7、逻辑操作符例程

逻辑操作符:&& 逻辑与(可以理解成:并且、与的意思)
|| 逻辑或(可以理解成:或 的意思)

/*例程4.7*/#include <stdio.h>int main(){int age = 0;scanf("%d", &age);if (age> 0&& age <18)//可以这样理解:age > 0 并且 age <18 两个条件同时为真才会打印未成{//年,其中只要有一个条件不为真就不会执行该语句printf("未成年\n");}return 0;}

4.8、位操作符例程

位操作符表:

位操作符类型运算规则
& 按位与有0为0,全1为1
按位或有1为1,全0为0
^按位异或相同为0,不同为1
~ 按位取反1变为0,0变为1
& 按位与有0为0,全1为1
<<按位左移扩大2的多少倍
>> 按位右移缩小2的多少倍

注意
(1)左移操作符规则:左边抛弃,右边补0
(2)右移操作符可以分为:
a、算术右移 (右边丢弃,左边补原来的符号位数)
b、逻辑右移 (右边丢弃,左边不用考虑符号位数,直接用0补充)具体算术右移还是 逻辑右移,取决于编译器,我们常见的编译器大多都是算术右移
注意
(1)移位操作符的操作数只能是整数,不能是浮点数。
(2)<< 左移操作符技巧:左移n位扩大2的多少(n)倍,向右补0,左移n位就*2^n
(3)>> 右移操作符技巧:有移n位缩小2的多少(n)倍,当为正整数或无符号整数时,向左(高位)补0,;当为负整数时,高位补1;右移n位就/2^n
(4)知识点:正码,反码,补码

/*例程4.8*/#include <stdio.h>int main(){int a = 9 / 2;//a=4int c = a << 1;printf("%d\n", c);//c=8return 0;}

4.9、逗号运算符例程

(1)逗号操作符:表达式1 , 表达式2,表达式3
(2)逗号操作符两种执行形式:
a、int a = (1,2,3);
//逗号操作符遇带括号时,结果为最右边的数值3
b、int a = 1,2,3;
//逗号操作符遇不带括号时,结果为最左边的数值1

/*例程4.9*/#include <stdio.h>int main(){int a =(1,2,3);int b = 1,2,3;printf("%d\n", a);//3printf("%d\n", b);//1return 0;}