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);//20
return 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赋值给max
printf("%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=4
int c = a << 1;
printf("%d\n", c);//c=8
return 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);//3
printf("%d\n", b);//1
return 0;
}