一.数据类型和基本知识:
(1)基本数据类型:
1.整数
整型---int 4个字节
短整型----short int 2个字节
长整型----long int 8个字节
2.浮点数(实数)
单精度浮点数---float 4个字节
双精度浮点数---double 8个字节
3.字符
单个字符---char 1个字节
字符串(一系列字符的组合)
4.符合数据类型
结构体
枚举
共用体
(字节与内存有关)
(2)变量
1.变量:变量的本质就是内存中一段存储空间。
例如
int    i//字母就是变量//
i = 3//3最终是存放在内存(内存条 把i与空闲的存储单元 产生关联)中,程序终止之后3所占的空间被释放//(每个单元有一个编号)
2.变量初始化
定义:初始化就是赋值的意思 。
如果没有赋值.系统就会把一个填充字放进去(-8....460)                                 
3.定义变量
数据类型  变量名 = 要赋的值
等价于
数据类型  变量名
变量名 = 值
例子
int i=3->int i;i=  3
int i,int j ->int i, j;
int i=j=5;
(3)进制(计数的一种方式)
进制:几进制就是逢几进一(计算机只识别二进制)
c语言规定八进制钱要加0(数字零),十六进制要加0x或0X,十进制什么都不加
例子:int i=5;
int i=05;
表示方法:汇编语言中,在数字后面加B表示二进制,加字母O表示八进制,加字母D表示十进制,加字母H表示十六进制。1011B;1357O;2049D;3FB9H.还可以(1011)2....
例子:#include<stdio.h>
main()
{
int i= 88                                                                     
printf("i = %d/*o.x.d*/\n",i0;//%d表示十进制输出,%x或%X表示十六进制输出,%o表示用八进制输出。//
}                                                                       
十进制(1234=1*10^3+2*10^2+3*10^1+4*10^1)其他进制把10换成相应的进制即可转换成10进制.                                                                                                                                 
(4)常量在c语言中的表示                                             
表示:整数                                                                     
十进制:  传统的写法                                                 
十六进制前面加0x或0X ,八进制加0                                   
浮点数                                                                   
传统的写法:float x = 3.2;                                           
科学计数法:float x = 3.2e3//x的值事3200                                           
float x = 123.45e-2;//x的值事1.234500                 
字符                                                                     
单个字
符用单引号括起来  'A'                                           
字符串用双引号括起来    "ab" "A"也正确                       
常量在计算机中的二进制存在形式:
整数是以补码的形式转化为为禁止存储在计算机中                           
实数是以IEEE754的形式转化为二进制存储爱计算机中                       
字符是以ASCII码为标准转化为二进制存储在计算机中,与整数的方式相同                                                                           
(5)代码的规范化                                                     
林锐:《高质量c/c++编程》)                                         
法则:代码成对敲写,如{},“”,()等                                 
特点:清晰,易懂,缩进(内部与外部执行关系) ,换行(功能的不同),空格(字符即优先相关用空格)                                                                                                                       
(6)字节                                                             
字节:字节就是存储数据的单位,并且是硬件所能访问的最小单位。             
一个字节是8位.8个单位元.1k=1024字节。1M=1024k。...                                                                                         
(7)不同数据之间的相互赋值问题                                       
可以相互赋值  ,但错误的精度与字节有关.(补码的学习)
(8)char常见问题                                                     
char ch = "ab" //是错误的         
char ch = "A"//是正确的                                               
char ch = 'A' //地正确的                     
char ch = 'ab' //是错误的                                             
例子:char ch ='A'                             
char ch ='B'  是错误的 ,重复定义                                     
char ch ='A'
ch ='b'  是正确的 ,只是重新赋值
(9)ASCII码                                                           
ASCII码不是一个值,而是一个规定。规定了不同的字符用哪个整数值去表示。
如:A--65  B--66  a--97  有127个:10个数字,52个英文字母32个标点符号与运算符号,34个控制字符.                                                                                                           
二.基本输入输出函数
(1)printf的用法                                                     
将变量的内容输出到显示器上,有四种方法:
1.printf("字符串\n")                                                 
2.printf("输出控制字符",输出参数)               
3.printf("输出控制字符1 输出控制字符2",输出参数1,输出参数2)(一个控制字符只能输出一个参数.且一一对应)                                     
4.printf ("输出控制符  非输出控制符",输出参数)(常见的一半控制字符都有%,如:%d,%c....)(非输出控制字符照原样输出在显示器上)(%x与%X.通常用%X,输出的如2F,还有%#X,输出的0X2F)(输出控制字符在于把代码的解读。不同的格式输出的结果不一样就是输出控制字符的意义)                           
(2)scanf的用法
通过键盘将数据输入到变量中,有两种用法:
1.scanf("输入控制符",输入参数)(从键盘输入控制字符所规定的的数据,然后存入以输入参数的地址的变量中)(* &变量名  表示变量名的地址.&是一个地址取址符)
例子:scanf("%d\n",&i)
2.scanf("输入控制字符 非输入控制字符",输入参数)(*非输入控制字符照原样输入)
例子:scanf("m%d\n",&i)  输入的时候应该在前面加一个m。                (注:可以通过键盘给多个变量赋值格式为:scanf("%d %d\n",&i,&j)(*输入的时候应该加空格,如果不是空格是其他也应该输入其他))                 
使用scanf前应该使用printf提示用户以什么样的方式来输入 ,scanf最好不用\n  ,                                                                                                                                         
三.运算符                                                             
(1)算术运算符                                                        +    -    *      /        %(取余)                                 
(2)关系运算符                                                          >  <        <=    >=  !=(不等于)  == (等于)                   
(3)逻辑运算符                                                          !(非)  &&(并且)    ||(或)                                     
(4)赋值运算符                                                        =        +=            *=    /=          -=                         
优先级别:算数 >  关系  >  逻辑  >  赋值                                                                                                     
除法的运算结果与运算对象有关    两个数都是int    则商是int ;子要分子分母有一个是浮点数则运算结果也是浮点型                            取余的运算对象必须是整数 ,结果是整除后的余数,余数的符号与被除数有关.即分子有关.
c语言为非零为真,零为假,真用1表示,假用0表示.
逻辑运算符运算结果为逻辑值0和1.
例子:int i = 10;
int k = 20;
int m ;
m=(3>2)&&(k=8);
printf("m=%d,k = %d",m ,k);
输出结果
为m=1,k=8  如果把第一个3>2变为一个假的表达式或值,则k=8不执行.输出的k为20.
&&左边表达式为假的时候,右边的不执行
||左边的表达式为真的时候,右边的不执行
四.流程控制
(1)什么是流程控制
执行代码执行的顺序
(2)流程控制的分类
顺序执行
选择执行
循环执行
五.选择执行
(1)定义
某些代码可能执行,有选择的执行某些代码
(2)分类
【1】if(96页)
1.if最简单的用法
格式:   
if(表达式)
语句;
功能:如果表达式为真,执行语句.否则不执行
2.if的范围问题
if(表达式)
语句A;
语句B;
if默认的只能控制一个语句的执行.即只能控制A的执行.无法控制B,B一定会执行。如果把AB用{}括起来则if可以控制AB。如果想控制多个语句的执行或不、不执行则要{}括起来。如:
if(表达式)
{   
语句A;
语句B;
}
lse..的用法
if (表达式)
语句1
else
语句2
lse..的用法
有多个选择
if (表达式1)
语句1
else if (表达式2)
语句2
......
else
语句m;
即便表达式1和2或者更多成立都只能执行语句1.即所有的if都是一个语句.
注意:最后的else也可以去掉.无影响  但是一般都要用else。
注意else不要加表达式.程序会错.只有if后面才能有表达式(在if的所有相关语句中)如:
if ("表达式1")
语句1;
else("biaodashi2")
语句2;
(这是错误的)
但是在else("biaodashi2")加一个;变成else("biaodashi2");    这是对的但无实际意义。且下面的语句与之无关.语法无错  逻辑错误。
5.c语言对真假的处理
非0为真,0为假;真用1表示,假用0表示
6.if举例
[1].把分数分级
#include"stdio.h"
#include"math.h"
void main()
{
float grade;
printf("输入成绩:");/*提示信息*/
scanf("%f",&grade);
if(grade<=100&&grade>=90)/*重要.两个分开,与逻辑值有关*/
printf("A\n");
else if(grade<=89&&grade>=80)
printf("B\n");
else if(grade<=79&&grade>=70)
printf("C\n");
else if(grade<=69&&grade>=60)
printf("D\n");
else if(grade<60)
printf("F\n");
else
printf("输入错误!\n");
}
[2].互换
# include<stdio.h>
main()
{
int i = 3;
int j = 4;
int t ;
t = i;
i = j;
j  = t;
printf("i = %d  j = %d",i ,
j);
}
[3]求三个数的最大值(见书)
7.if的常见问题解析
if语句后面加分号 代表if为一个语句,后面的与之无关(一个分号一个语句)如:
if(3>2);
等价于:if(3>2)
;是一个空语句
【2】swich(104页)(视频90)
看懂程序:流程。功能。试数。
i+=2 等价于  i=i+2                                                     
六.循环执行
(1)定义:某些代码会被重复执行
(2)分类:for 、  while 、 do....while         
(3)for循环。
先例子:
int i;
int sum = 0;
for (i = 0; i <= 100; i++)
sum = sum + i;
printf("sum = %d\n",sum);
//此程序的作用是求0到100的和//
for(表达式1;表达式2;表达式3)
执行过程:先求解表达式1,在求解表达式,2若值为真,则执行for语句中的指定内嵌语句,然后执行第三步即求解表达式,再循环执行第二步:判断真假。直到值为假,则结束循环.执行下一个语句.
for(循环变量赋初值;循环条件;循环变量改变)
(4)for与if的嵌套
先例子:
int i;
int sum = 0;
for (i = 3; i <= 100; i++)
{
if (i%3==0)
sum = sum + i;
}
printf("sum = %d\n",sum);
//此程序的作用是求能被3整除100以内的数 的和//
注意:for循环一般默认执行后面的一个语句,如果要控制多个语句 要加{}...for语句后面无;号  不然无效.  int i ;
*强制类型转换:
格式:(数据类型)(表达式)
功能:把表达式的值强制转化为前面所执行的数据类型
例子:(int)(4.5+2.2)最终值为6
(float)(5)最终值为5.000000
*浮点数的存错带来的问题:
float和double都不能保证可以准确的存储一个小数
举例:有一个浮点型变量x,如何让判断x的值是否为0.
if(0 == x)
shi;
else
bushi;  从计算机来说是不对的,因为计算机问题并不能真正判断
最好的方法:if(x和一个非常小的值的差的绝对值小于这个非常小的值)(|x-0.000001|<0.000001)
for循环的更新部分不能赋值为浮点数 ,而都是整数。也因为这个原因。
(5)多层for循环的嵌套与执行顺序
for(1;2;3)
c语言如何去学for(4;5;6)
A;
B;
执行顺序:65...32
(自己看书)
(6)三目运算符
格式:a?b:c  a?是判断真假,a可以是表达式和值
等价于:  if(a)
b;
else
c;
(7)逗号运算符
格式:(A,B,C,)
功能:从左到右的执行,值是最右边的值
例子:int i=(1,2,3,4)  值为4
int j=2; i=(j++//要运算//,
++j//要运算//,j+2/*运算但不赋值,与前面不同*/,j-4/*运算并输出*/)
(8)while循环
1.执行流程:
格式:while(表达式) 语句;  当表达式成立的时候执行  再来判断表达式
2.与for的相互比较:
例子:求1到100的值
for(i = 1; i < 101; i++)
while(i<101)  {sum=sum+i;i=i+1;}
for和while可以相互转换.但for逻辑性比较好,更不容易出错。
(9)do...while
主要是用于人机交互
格式:do{...}  while(表达式);
和while不能相互互换.因为while和for有可能一次都不执行,而do..while则必须执行一次。执行do的语句。(117页)
*视频89
*(斐波拉契数列125页)《c p p》
(10)break与continue语句(122页)(视频92.93)
七.数组
(1)为什么叫做数组
为了解决大量同种类型数据的存储和使用问题
为了模拟现实世界
格式int a[5]={1,2,3,4,5}
//a是数组的名字.5表示数组元素的个数,并且这5个元素分别用a[0],a[1],a[2],a[3],a[4],表示,a[i]表示a[i+1]个元素,
数组长度不能是变量
(2)数组的分类
【1】一维数组
定义:为n个变量连续分配内存
所有的变量的数据类型必须相同
所有变量所占的字节大小必须相同
操作:赋值,初始化,排序.......
初始化:
完全初始化;int a[3]={1,2,3}
不完全初始化:int a[3]={1}
清零:int a[3]={0}
不初始化:int a[3]={}
错误写法:int a[3];
a[3]={1,2,3};//错误,只有在定义的同时才可以整体赋值,其他情况都是错误的,定时的时候才表示个数,其他情况表示下标(下标表示位置)//*/记着没有a[3]={4}这个元素/*
int a[3]={1,2,3};
int b[3];
b=a;//这是错误的正确的是:for(i=0;i<3;i++)b[i]=a[i];//
int a[3];
scanf("%d",&a[0])//要加取址符
例子:把一个数组倒过来
int a[3]={1,2,3,}
int i,j;
int t;
i=0;j=2
while(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
i++;
--j;}
for(i=0;<2;i++)
printf("%d",a[i]);
一维数组名不代表数组中所有的元素
一维数组名代表数组的第一个元素的地址 ,所以不能直接赋值如:b=a//错误
【2】二维数组
int a[3][4]总共有12 个元素,可以当做3行4列对待,这12个元素的名称依次是:a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],a[1][1]......a[2][3],注意没有a[3][4]之类,a[i][j]表示i+1行j+1列的元素,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。