C语言预课
字节讲解
-
大端存储法:在高位存储低字节
小端存储法:在低位存储高字节
-
ASC码表——共255个字符
- ‘\0’ 0
- ‘a’ 65
- ‘A’ 97
- ‘0’ 48
- ' ' 32
- 运算符
-
计算机在运算的时候只会计算相同类型数据的运算
-
计算机中的数据以补码形式运算,以原码形式输出。
-
char--->short int--->int--->float--->double
-
int a=3;
float b=5.0;
float c=a/b;
此时a=0.60000;
-
-
后缀++
-int a=3;
int b=a++;//b=a,a=a+1;
此时a=4,b=3
-
前缀++
-int a=3;
int b=++a;//a=a+1,b=a;
此时a=4,b=4
-
后缀--
-int a=3;
int b=a--;//b=a,a=a-1;
此时a=2,b=3
-
前缀--
-int a=3;
int b=--a;//a=a-1,b=a;
此时a=2,b=2
- 位运算符
-
数据在计算机中是以补码的形式存储
-
int a=3;//0011
int b=5;//0101
-
int c=a|b; (|有1为1)
c=7;//0111
-
int c=a&b;(有0为0)
c=1;//0001
- int c=a^b; (不同为1)
c=6;//0110
-
-
原码:
-
反码:正数反码与源码相同,负数的反码在原码的基础上,符号位不变,后面的数依次取反。
-
补码:正数的补码与原码,反码相同;负数的补码在负数反码的基础上+1
-
1=0001
-
1(反)=0001
-
1 (补)=0001
-
-1=1001
-
-1(反)=1110
-
-1(补)=1111
-
-
取反:~
-
int a=3;
int b=~a;//
此时b=-4;
a=0011 取反
以补码形式存储=1100
反码为=1011
原码为=1100=-4;
- int a=7;
a=0000 0111 取反
以补码形式存储=1111 1000
反码为=1111 0111
原码为=1000 1000
-
- <<左移
-
右移(以最高位符号位补全)
-
7=0000 0111
补码=0000 0111
左移后=0000 1110
右移后=0000 0011
-
-7原码=1000 0111
反码=1111 1000
补码=1111 1001
<<1左移后=1111 0010
反码=1111 0001
原码=1000 1110
1右移后=1111 1100
反码=1111 1011
原码=1000 0100
- 赋值运算符
-
+=,-=,/=,%=,&=.....
b+=a;//b=b+a;
-12 1000 1100
1111 0011
1111 0100
1110 1000
1110 0111
1001 1000
- 关系运算符
- 在C语言中,a>b看做一个事件,如果这个事件成立,运算结果是1,若不成立,结果是0.
-
< = == !=
- 逻辑运算符
- ||:或 ((事件1)||(事件2)),只要有一个事件运算结果为1,整个结果就为1(有1为1)。
- &&:与 ((事件1)||(事件2)),只要有一个事件运算结果为0,整个结果就为0(有0为0)。
- !:非 !(事件),将事件的结果取反。
- 逻辑运算时的注意点
- 事件1||事件2:如果事件1的运算结果为1,则事件2不会再被执行(1||a++,a++不运算)
int a=5; int b=6; int d=a>b||b++; printf("d=%d\n",d); printf("b=%d\n",b);//d=1,b=7 int d=a<b||b++; printf("d=%d\n",d); printf("b=%d\n",b);//d=1,b=6
- 事件1&&事件2:如果事件1的运算结果为0,则事件2不会再被执行(0&&a++,a++不运算)
int a=5; int b=6; int d=a>b&&b++; printf("d=%d\n",d); printf("b=%d\n",b);d=0,b=6 int d=a<b||b++; printf("d=%d\n",d); printf("b=%d\n",b);d=1,b=7
- 计算机在进行关系运算遵循原则:非0即1((-1)&&1,结果为1)
- 地址运算符
- &
- printf(“%p\n,&a”)
- %p是一个占位符,用来打印地址。
-
运算优先级
()-->!-->算数运算符-->关系运算符-->逻辑运算符(除了[!)](http://jingyan.baidu.com/article/9113f81b2ef68c2b3214c7e5.html)
运算规律,单目运算符-->双目运算符-->三目运算符
三目运算符:条件,事件1,事件2;
运算规则:如果条件成立,就计算事件1的结果,作为整式的结果。否则计算事件2的结果。
- int a=2,b=3 - int max=a>b?a:b;
-
scanf : scan formatter
int a;
scanf(“%d”,&a);(%d表示输入的是整数型,&a表示输入的这个数到&a所对应的存储单元)
printf(“a=%d\n”,a);
scanf的注意点:
-
严禁在scanf后面加\n
-
用scanf时老实点不耍花样
-
scanf一次输入多个值:scanf(“%d%d”,&a,&b)
-
输入缓存流:\n,将输入缓存残留清空
4.1. getchar():吸收缓存流里的一个字符。
4.2. scanf(“%c”,&ch);
4.3. getc(stdin):吸收缓存流里的一个字符。
-
getchar:是专门对字符进行输入操作
- char ch=getchar()
- 是将输入缓存流里面的第一个字符取出来赋给ch
- putchar 是专门对字符进行输出操作(可以是输出字符变量也可以是字符常量)
-
-
三大流程控制
12.1. 顺序流程控制:代码是顺序执行
12.2. 条件流控制:-
if事件(单分支)
{
语句体
}
如果事件成立就执行{}里的事件。
-
if事件(双分支)
{
语句体
}
else
{
语句体
}
-
if事件(多分支){
}
else if
{}
else if
{}
else
{}
-
分支结构注意点:
- 只能执行一个分支
- if中的语句中的else要么不放,要么放在if语句的最后面
- if 语句下语句体如果只有一行代码,{}可以省略,多行代码时要加{}
-
-
switch分支结构
-
switch (变量/变量表达式)
-
{
case常量;
语句体;
break;
default;
语句体;
break;
} -
switch只能匹配一个条件
-
case后面必须是常量;
-
每一个case后面语句体执行以后必须要有break,break必须是跳出switch右边的
-
default可以省略,位置可以随便放。
-
case后面的语句可以不加{}就顺序执行
-
//习题1:输入一个成绩score;
0<=score<60;显示不及格;
60<=score<70;显示及格;
80<=score<85;显示良好;
85<=score<100;显示优秀;
//习题2:输入两个数,求最大值并输出。
//习题3:输入工资,如果少于等于1000,最后工资等于拿到的工资。如果大于1000,扣5%税。
//冒泡排序法:
int main()
{
int a[5]={10,30,50,20,40};
int i,j,temp;
//小泡泡往前移
/* for (i=0;i<4;i++)
{
for (j=i+1;j<5;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for (i=0;i<5;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}*/
//大泡泡往后冒
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for (i=0;i<5;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
}```
//习题4:求四个数的最大值,用三目
```max=((a>b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d;
max=a>b?(a>c?(a>d?a:d): (c>d?c:d)): (b>c?(b>d?b:d): (c>d?c:d))```
//输入一个字母判断是否为大写字母或小写字母,输出提示。
include "stdio.h"
int main()
{
char ch;
int i;
scanf("%c",&ch);
if(ch>=97&&ch<=123)//(ch>'a'&&ch<'z')
printf("是小写字母");
if(ch>=65&&ch<=81)
printf("是大写字母");
}
//输入一个字符串,判断字符串个数,遇空格跳过。
```#include "stdio.h"
int main()
{
char character ;
int i=0;
while((character=getchar())!='\n')
{
if(character==' ')
{
continue;
}
i++;
}
printf("%d",i);
return 0;
}```
网友评论