C语言学习笔记

  • 格式:pdf
  • 大小:417.29 KB
  • 文档页数:23

***********************************************/

day 01 20130916

***********************************************/

c语言的结构

必须包含入

int main()

return 0;

printf(“hello”);实质上是包含在标

准头文件stdio.h

#include将文件插入到当前位置

\n 换行

# 预处理文件

#include "xxx" 插入到程序内容打“”且没有;系统提供的内容使用<>,使用自己定义的文件使

用“”

int printf(const char *format,//格式占位符号...)//可变长参数

c语言结束标志是;

支持一行多条指令,建议每行一条指令

加注释 // /* */

多行连接符号 \ 反斜杠 为续行符号,代码长了换行使用

C程序编译步驟

1编译 gcc -c hello.c 生成. o的目标文件

2连接 gcc hello.o 生成一个可执行文件

自定义可执行文件名称 gcc hello.c -o hello(新名字)

数据表现形式

二进制 10 八位

1G=1024M

1M=1024kb

1k=1024byte

字节byte

位 8

0000 0001 权重位

表示负数 最高位表符号位

0000 0001 原码 (1的二进制表示)

1111 1110 反码

1111 1111 补码 (反码加1)

float 4

3.14

0 0000000 000000000 000000000 00000000

最左边第一位是符号位

八 位阶码

剩下是尾数

double 8

C语言变量类型

1 char 字符类型 %c

4 float 浮点型 %f (%.nf)n为指定输出位数 或 %g(按需分配)

8 double 双精度 %g 尾数后面的0会去掉的

4 int 整型 %d

4 long

8 long long

2 short (int)

%x 16进制

%o 8进制

%p 地址

%e 科学计数法

*************************************************

day02

*************************************************

变量所什么/

变量的定义

变量名不能重复

赋值运算; 没有初始化的变量都是脏数据

常量 (不可改变的变量)

使用const修饰变量 该变量只读

宏定义方式定义常量 #define PI 3.14

宏定义不会作类型检查,是直接替换,在预处理期间处理

const修饰变量是只读变量,在编译是会做类型安全检查

sizeof 计算变量所占内存大小

sizeof(int ) 返回值为整型

地址类型变量 指针变量

&取地址符号

指针常量 指针的常量

常量指针 常量的指针

const int b=13;

const int c=13;

int* a=&b;//a 是指向int类型b的指针

const int a=10;

const int* a=NULL;//a是指向整型常量的指针

int* const a=NULL;//必须定义初始化同时,以后不可修改

scanf()输入函数

scanf()后面的变量必须是指针/地址

注意格式,最好中间不要加其他字符符号如scanf("%d%d%d",&a,&b,&c);

运算符号

要开阔思路,灵活运用,如交换a b值:

a=b-a 或 a=a^b

b=b-a b=a^b

a=a+b a=a^b

计算结果以 精度最高者为准

long double >double>float>long int>unsigned int>int

数据溢出时会默认换成其优先级高的类型;如:int a=-1,b=10;但是a>b!,这里a溢出里;

++ -- 对整型数据操作,注意

^ 相同为0,不同为1

<< 左移 >>右移 空位0补齐

逻辑运算符号

&& || !

三目运算符号

? : 判断为真则选第一个,否则第二个

即: (a>b)?a:b 如果a>b为真则a,否则b

溢出现象

1 #include

2 int main()

3 {

4 int a=6;

5 unsigned int b=-2;

6 printf("%u\n",b);

7 printf("%s\n",((a>b)?"a>b":"a

8 }

打印结果:

4294967294

a

***********

无符号的整型变量回绕到0,重新开始

有符号的整型变量则会回绕到最小的负值

浮点类型没有回绕,超出则会表示为inf (表示无穷大)

1。首选使用三目运算比较三个整数大小找出最大的

**********************************************

1 #include

2 int main()

3 {

4 int a,b,c;

5 printf("Please input three Num:\n");

6 scanf("%d%d%d",&a,&b,&c);

7 printf("The max Num is:%d\n",(a>b?((a>c)?a:c):((b>c)?b:c)));

8 }

~

2。

*************************************************

day03

*************************************************

if(条件) 条件判断语句(非0值即为真)

需要执行的语句

满足条件就执行

if() if()

{ {}

} else if

else {}

{ else if

} {}........

练习题:比大小,经典

************************************************

15 max=a;

16 if(max

17 max=b;

18 if(max

19 max=c;

20 printf("The max Num is :%d \n",max);

21 return 0;

if语句 不提倡深层嵌套,若有很多嵌套就要改变一下思路啦!!!

润年条件,能被4整除不能被100整除 或 能被400整除

***********************************************

if((year%4==0)&&(year%100!=0)||(year%400==0))

for(语句1;语句2;语句3)

语句1:初始化语句

语句2:判断语句,即循环条件

语句3:

循环中断: break;只能跳出一个循环体,继续执行循环体外的语句;只能是在循环体和switch

case中使用,在其他地方无效非法

continue 用来略过循环体中剩余的语句,直接进入到下一次循环调整语句继续下一次循环

*************************************************

练习 100--1000的素数

1 #include

2 int main()

3 {

4 int i,j;

5 int n=0;

6 for(i=100;i<=1000;i++)

7 {

8 for(j=2;j

9 {

10 if(i%j==0)

11 break;

12 }

13 if(i==j)

14 {

15 printf("%d\n",i);

16 n++;

17 }

18 }

19 printf("共有%d个素数",n);

20 return 0;

21 }

**************************************************

while(条件表达式)

循环体

条件表达式为真,则执行循环体,否则不执行

do

循环体

while(条件表达式) 先执行再判断,至少执行一次!!!

for(;;); for 的死循环

*************************************************

开关语句

switch()

{

case 1: break;

case 2:

。。。。。

default:break;

}

表达式必须有整型结果或者直接转换成整型,一般为整型或字符类型

在写法上,根据具体情况可以不用break;

练习:

写一个简单的计算器,实现加减乘除