C Language:基本概念

来源:互联网 发布:域名纠纷 管辖 编辑:程序博客网 时间:2024/06/15 00:10
一、C语言的基本概念
1、C语言的基本概念:数据类型、变量与常亮、运算符、表达式、程序基本结构。
2、定义与声明:
a.C语言中对象必须只有一个定义,但是可以有多个声明(用关键字extend声明)。
b.定义与声明区别:
特征:定义只能出现在一个地方,而声明可以多次出现在不同的地方。
编译器处理:定义确定对象的类型并分配内存,用于创建新的对象。声明描述对象的类型,用于指代其它地方的定义的对象。
二、数据类型
1、数据类型用于确定存储空间—>确定取值范围。

PS:
a.构造类型:指的是利用基本类型所构成的数据类型。
b.指针类型:可以指向所有的数据类型(指针的定义:int *p;p=1000;)。指针本身内容地址为地址,但是其指向的是地址内的数据类型。
c.空类型:void、void* 。 void *m; 可以指向任何的有效的地址。 (int*)m=p;、(int*)m=q;
#define NULL (boid*)0;   NULL的地址为0(不可访问)。
d.为什么要定义数据类型:因为我们要定义 变量—>为什么定义变量—>因为变量适用于存储程序运行过程中的中间值。
2、数据类型的转换:
int a;char b;c=a+(int b);  //尽量在程序中显示转换,不要让电脑自己转换c=a+b;
a.隐式转换:常见于不同的数据类型的数据运算。
b.显示转换:void类型转换:常用于
3、数据类型的意义:
数据类型表示数值大小占用字节数char0~255一个字节int 四个字节float  构造类型无数据类型 
三、常量与变量
1、定义、声明、引用:
变量的定义:a.源文件中变量应该定义在所有代码语句之前。
b.在函数中,变量应该定义在函数语句体之前。
变量命名:a.在同一个源文件中:函数外和函数内可以使用相同的变量名定义变量。
    b.在不同的源文件中,可以使用相同的变量名定义变量。
ps:引用变量之前必须先定义或者声明变量。
2、自动变量:是编译系统自动默认使用的变量,是最常用的变量定义形式。
<pre name="code" class="plain">int a; char b; floar c; //RAM中BSS中分配空间,不初始化int a=0; char b="A"; //RAM中DATA分配空间并且初始化
静态变量(static):static int a; //a存在静态区中,其值保持不变。若不赋值会自动赋值为0。
<span style="font-family: Arial, Helvetica, sans-serif;">static对函数来说是私有的。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">3、局部变量:在空间和时间上都受到限制的自动变量。</span>
<span style="font-family:Arial, Helvetica, sans-serif;">全局变量:也是自动变量。在程序运行周期内都是可以出现的。(<span style="color:#ff0000;">在函数内部优先使用局部变量</span>)</span>
静态变量:是一种特殊的自动变量。可以初始化,也可以不初始化(不初始化则自动设置为0)。分为:静态局部变量、静态全局变量。
4、变量的分类:按作用域、按存储方式。
5、常量:程序运行中数值和占用空间都不会发生改变的数据量。
特性:只读。向常量赋值会产生错误。存储在ROM中,使用关键字const定义常量:const int a=100;
常量必须进行初始化。
6、程序的空间分布:ROMcode(代码常量)RAMData初始化数据区 BSS未初始化数据区 stack(栈)中断或函数调用的数据存储 heap(堆)程序数据临时分配
四、运算符与表达式
sizeof(int) = 4; sizeof(char) = 1;
~取反
剩下内容等ppt发下来补充

五、程序结构基本结构
1、顺序:
2、分支:
a.二分支:if 、if-else
b.多分支:switch-case
3、循环:
a.for()循环:循环次数确定使用。
b.while()循环:循环次数不受限制,但受条件限制。 while(0!=i)—>小技巧:常量不可以被赋值,这样可以避免打错。
c.do-while()循环:循环次数不确定,但是循环至少执行一次。

每一次轻易的放弃,都是人生的一次败笔。

六、函数
1、函数的原型:
a.return_type function_name(type age1,type 
        原型:int swap(int a,intb)
        具体实现:int swap(int a,int b)
                            {
                             ..................
                             return result;
                            } 
b.一般在头文件中声明函数原型。
2、函数原型的意义:
a.参数传递是要求实参具有和形参的一致的数据类型。
b.函数返回值和原型的返回值数据类型一致。

3、头文件包括:#include
int main(int argc,char *argv)
{
...............
return 0;
}
在函数用加return可以结束函数,不是循环(结束循环有break和continue两个语句)。

七、课后作业
1、猜数游戏:由计算机”想“一个数字,请人猜:如果猜对了,则计算机给出提示:“Right”,否则提示:“wrong”,并且告诉猜数人是大了还是小了。
#include<stdio.h>#include<stdlib.h>#include<time.h>int randomNum;int inputNum;int inputTotal=0;int main(){<span style="white-space:pre"></span>random();<span style="white-space:pre"></span>compare();}int random(){<span style="white-space:pre"></span>srand((unsigned)time(NULL));<span style="white-space:pre"></span>randomNum=rand()%100;<span style="white-space:pre"></span>return randomNum;}int compare(){<span style="white-space:pre"></span>printf("请输入你的猜想数字:\n");<span style="white-space:pre"></span>scanf("%d",&inputNum);//避免当inputNum设置的初值为0是进不去while所以设置在外面<span style="white-space:pre"></span>while(randomNum!=inputNum)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>inputTotal++;<span style="white-space:pre"></span>//输入0-99之间的数字<span style="white-space:pre"></span>printf("系统提示:\n");<span style="white-space:pre"></span>if(inputNum>randomNum)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printf("Hight\n");<span style="white-space:pre"></span>scanf("%d",&inputNum);//加在外面没有循环控制会一直循环固定的值<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if(inputNum<randomNum)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printf("Low\n");<span style="white-space:pre"></span>scanf("%d",&inputNum);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printf("恭喜你答对了!\n你一共输入了%d次\n",inputTotal);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return 0;}
2、求最大公约数还有最小公倍数。
#include<stdio.h>int numOne;int numTwo;int numThree;int i;void main(){divisor();}int divisor(){printf("请输入两个数,并且以空格隔开\n");scanf("%u %u",&numOne,&numTwo);if(numOne>numTwo){for(i=numTwo;i>0;i--){if(numOne%i==0&&numTwo%i==0){printf("最大公约数为:%d\n",i);numThree = (numOne * numTwo)/i;printf("最小公倍数为:%d\n",numThree);}}}else{for(i=numOne;i>0;i--){if(numOne%i==0&&numTwo%i==0){printf("最大公约数为:%d\n",i);numThree = (numOne * numTwo)/i;printf("最小公倍数为:%d\n",numThree);}}}return 0;}
3、史波克拳的程序算法思路图。(还没做好)

1 0
原创粉丝点击