目录
四、选择结构与while结构
4.1 选择结构(if语句)
if语句简单的说就是做选择,“要么。。。要么。。。”,而选择是针对某一件事的不同选择,得到与之选择对应的结果,所以在使用选择结构时应注意其中的选项是否对应该事件,以避免不必要的麻烦和错误。
代码4_1:
#include<stdio.h>
int main()
{
int input=0;
printf(" ");//提问+选项
//例:printf("你会好好学习吗?(1/0)>:");
scanf("%d",&input);//输入你所选择的数值(1/0)
if(input==1){
printf(" ");//结果1
}
else{
printf(" ");//结果2
}
return 0;
}
例4_1:
#include<stdio.h>
int main()
{
int input=0;
printf("你会好好学习吗?(1/0)>:");
scanf("%d",&input);//输入你所选择的数值(1/0)
if(input==1){
printf("找到好工作");//结果1
}
else{
printf("卖红薯");//结果2
}
return 0;
}
说明:
|(1)例4_1采用了代码4_1的格式,其中选择结构的主体是:if......else......;
(2)其次,例4_1中给出了两个选择,1或者0,输入选择的数值,就可以得到预先设置好、与之对应的结果;
(3)当选择选项大于两项时,我们可以把else换为else if ,即:if......else if......else if......。
如,例4_2:输入成绩,判断成绩的等级
#include<stdio.h>
int main()
{
int input=0;
printf("你的分数?(0~100)>:");
scanf("%d",&input);//输入你所选择的数值(0~100)
if(input<60){
printf("不及格\n");//结果1
}
else if(input<80){
printf("及格\n");//结果2
}
else if(input<90){
printf("良好\n");//结果3
}
else if(input<=100){
printf("优秀\n");
}
return 0;
}
4.2 while结构
while的意思就是“当...时”,所以while结构就是当符合while的条件时才会执行的结构。
代码4_2:
#include<stdio.h>
int main()
{
int line=0;
printf(" ");//前提
while(line<100)//循环条件
{
~ ~ ~ ~ ~ ~ ~ ;//循环内容
line++
}
return 0;
}
例4_2:
#include<stdio.h>
int main()
{
int line=60;
printf("当line值为1时开始学习\n");//条件
while(line>0)//循环条件
{//循环内容
printf("line\n");
line--;
}
if(line==0)
print("开始学习");
return 0;
}
五、函数(基础)
代码5_1:
构造函数名(参数类型+参数符号...)//main函数除外
{
函数体(内容);
}
构造函数在main函数内使用:函数名(参数)。
例5_1:判断最大值Max函数
#include<stdio.h>
int Max(int x,int y);//函数声明
int main()
{
int a=0,b=0;
scanf("%d %d",&a,&b);
printf("%d\n",Max(a,b);
return 0;
}
int Max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
说明:
(1)函数调用前需要先对函数声明:函数类型+函数名+参数+;
(2)通常函数需要返回值,即函数类型;如果函数无返回值,则函数类型为void;
(3)调用函数中的参数不需要必须与主函数中参数相同;
六、数组(基础)
6.1 定义
数组为一组相同类型元素的集合,整型、字符型、浮点型均可。
创建数组:数组类型+数组名[ ],其中[ ]中为数组中元素的个数,按实际情况填入数值。
如:int a[10]={0};//定义一个整型数组,其中最多十个元素,并全部初始化为0。
假设a数组中有十个元素:4,5,9,8,6,3,1,4,7,5
则其各数所对应下标为: 0,1,2,3,4,5,6,7,8,9,
元素 4 5 9 8 6 3 1 4 7 5 下标 0 1 2 3 4 5 6 7 8 9 所以,可得数组中元素下标均从0开始。
6.2 数组下标
现已定义了一个整型数组a[4]={ 5, 8, 6 , 1 ,4}
可知其各数对应下标分别为:0,1,2,3。
当我们需要从数组中取出某个位置的数值时,就需要用到数组下标了。
如从数组a中取第一个元素,则表示为a[0],即a[0]=5,可自行验证。
6.3 数组下标的使用
6.3.1 数组的打印
代码6_1:打印第三个元素
#include<stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",a[3]);
return 0;
}
代码6_2:打印数组中所有元素
#include<stdio.h>
int main()
{
int i=0;//设置i为下标表示
int a[10]={1,2,3,4,5,6,7,8,9,10};
while(i<=9)
{
printf("%d\n",a[i]);//打印下标为i的元素
i++;
}
return 0;
}
6.3.2 数组的输入
代码6_3:
#include<stdio.h>
int main()
{
int i=0;//设置i为下标表示
int a[10]={0};//创建整型数组并初始化为0
while(i<=9)
{
scanf("%d ",&a[i]);//输入下标为i的元素
i++;
}
return 0;
}
七、操作符(基础)
7.1 算数操作符
+ | - | * | / | % |
加 | 减 | 乘 | 除(商) | 取余(余数) |
说明:
(1)加减乘法与数学中相同;
(2)除法/,计算整型时得到的值仅为商值,若操作数中有浮点数则得值为浮点数;
(3)取余%,运用时两个操作数必须是整型数,得值为除法余数
例:5/2=2,5%2=1
7.2 移位操作符(二进制位操作)
<< | >> | & | | | ^ |
左移 | 右移 | 按位与 | 按位或 | 按位异或 |
说明:
(1)左移<<、右移>>操作符,即左移或右移二进制位;
例:int a=1(二进制01);int b=a<<1;则b=2(二进制10)。
(2)按位与&,一真一假=0,两真为真(1),两假为假(0);
(3)按位或|,一真两真为真(1)两假为假(0);
(4)按位异或^,对应二进制相同取0,,相异取1;
例:
a=3 二进制011 b=5 二进制101 a&b=1 二进制001 a|b=7 二进制111 a^b=6 二进制110
7.3 赋值操作符(=)
复合赋值符:+=、-=、/=、*=
7.4 单目操作符
! | ± | & | sizeof | ~ | --、++ | * | (类型) |
逻辑反操作 | 正负号 | 取地址 | 计算变量/类型所占空间大小 | 对二进制数按位取反 | 前置、后置 | 间接访问操作符 | 强制类型转换 |
说明:
(1)!:把真(非零数)变为假(0),把假(0)变为真(定值1);
例:i)a=10;!a=0; ii)b=0;!b=1;
(2)±:即正负值;
(3)&:取地址符号(现了解);
(4)sizeof:计算变量空间大小时括号可省略,计算类型时则括号不可省略;
(5)~:0转换为1,1转换为0;
(6)--、++:前置时,先对变量进行减一或加一再进行其他操作,后置先其他操作再减一或加一;
(7)*:解引用操作符(先了解);
(8)强制类型转换:float a=1.5;则(int)a=1;
补:原码、反码、补码(二进制)
正数在内存中存储是即为其本身二进制码;而负数存储为补码,所以反码、补码可以说是对于负数而存在的。(以下所说反码、补码均针对于负数而言;正数的原、反、补相同)
i)原码最高位为符号位,1为负,0为正,并且打印一个数的二进制码时通常打印原码;
ii)反码:符号位不变,原码各个二进制位均按位取反所得;
iii)补码为反码加1所得;
例:
数值:0 | 数值:-1 | ||
原码:000000 | 原码:100001 | ||
反码:000000 | 反码:111110 | ||
补码:000000 | 补码:111111 |
7.5 关系操作符(比较大小、相等)
> | >= | < | <= | != | == |
大于 | 大于等于 | 小于 | 小于等于 | 不等于 | 等于 |
7.6 逻辑操作符
&& | 逻辑与 |
|| | 逻辑或 |
说明:真-非0;假-0
(1)真&&真=>1;假&&真=>0;假&&假=>0;
(2)真||真=>1;假||真=>1;假||假=>0;
(3)逻辑操作符的短路性质:运算从左自由进行时,一旦能够确定逻辑表达式值,立即终止
7.7 条件操作符(三目操作符)
表达式:exp1?exp2:exp3;
说明:
若exp1为真,则执行exp2;若exp2为假,则执行exp3.
例:
int Max=0;
Max=(a>b?a:b);
7.8 逗号表达式
表达式:(exp1,exp2,exp3......expN......)
说明:
逗号表达式,会保持由左到右运算,但最终所得值为最后的exp;
例:
int a=0,b=0,c=0;
a=(b++,c--,5+5);所以最终的值:a=10,b=1,c=-1
7.9 下标引用、函数调用和结构体成员
[ ] | ( ) | ./-> |
下标引用 | 函数调用 | 结构体成员 |
说明:
(1)下标引用:常见于数组下标;
(2)函数调用:即函数名(参数);
(3)结构体成员:(后期见详述);
7.10 常见关键字(了解)
常见关键字有:
auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return 、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while
说明:
(1)auto:自动变量~局部变量=>(auto)int a=0;
(2)break:打破循环;
(3)register:寄存器;
register int a=10;//建议把a定义为寄存器变量、运算速度快,但无法取出a的地址。
(4)static:静态的; ①修饰函数,类似全局变量,②修饰全局变量,减小其作用域,③修饰局部变量,延长其生命周期
(5)struct:结构体关键字;
(6)typedef:类型定义;
typedef unsigned int u_int;用u_int 代替unsigned int(取别名)
(7)void:空、无