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;
练习:
写一个简单的计算器,实现加减乘除