c语言大一基本理解笔记1

简介: 所谓程序,就是一组计算机能识别和执行的指令,计算机的本质是程序的机器;计算机工作基于二进制,从根本上说,计算机只能识别和接受0和1组成的指令,这种计算机能识别和接受的二进制代码称为机器指令;

笔记//



/*所谓程序,就是一组计算机能识别和执行的指令,计算机的本质是程序的机器;计算机工作基于二进制,从根本上说,计算机只能识别和接受0和1组成的指令,这种计算机能识别和接受的二进制代码称为机器指令;机器指令的集合就是该计算机的机器语言; / /#include <stdio.h> //这是编译预处理指令int main() //定义主函数 { //主函数开始的标志 printf(“this is a Cprogram.\n”); //输入所指定的一行信息 return 0; //函数执行完毕的时返回函数值0 } / //函数结束的标志 // /**/表注释; /#include <stdio.h> //这是编译预处理指令int main() //这是编译预处理指令{ //函数开始 int a,b,sum; //程序声明部分,定义a,b,sum为整形变量 a=123; //对变量a进行赋值 b=456; //进行a加b的运算,并将结果存放在变量sum sum=a+b; //进行a+b的运算,并把结果存放在变量sum printf(“sum is %d\n”,sum) //输出结果 ,d表示用“十进制输出”, //在执行printf函数时,将sum变量的值取代双撇号中的%d return 0; //使函数返回值为 0 } */ //函数结束 /*c语言的程序结构


1.一个程序由一个或多个源程序文件组成;


&1.预处理指令 #include<stdio.h>,#define; 对于#include <stdio.h>来说;就是将stdio.h文件内容读取进来; 由预处理得到的结果与程序其他部分一起,组成一个完整的,可以用来编译的最后的源程序;最后由编译器正式编译,才得到目标程序


&2.全局声明 int a,b,sum; 放到main函数前面,这就是全局声明;在函数外面的声明变量叫全局变量。 如果在程序开头(定义函数之前)声明的变量,在整个源程序文件范围内有效, 在函数中声明的变量叫局部变量;只在函数范围内有效


&3.函数定义 max函数,要指定每个函数的功能。在调用这些函数时,会完成函数定义中指定的功能


2.函数是c程序的主要的组成部分。


&1一个c语言程序由一个或多个函数组成,必须包含一个main函数(且只能有一个main函数)


&2一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中有一个main函数); 当函数规模大的时候,包含函数的数量多,放在一个文件中显的太大,不便于调试和编译, 为了方便 可以将一个源程序分为若干个源程序,若干源个程序又包含若干个函数


&3在进行编译的时是以源程序文件为对象进行的,在分别对各源程序文件进行编译并得到相应的目标程序后, 再将这些目标程序连接为一个统一的二进制的可执行编程


&4 c语言的这种特点使得容易实现程序模块化 ,在程序中调用函数可以是系统提供的函数库(printf.scanf)也可以自己设计,(max。min)


3.一个函数包括两个部分


&1函数首部。即函数的第一行,包括函数名(max),函数类型(int),函数属性(int),函数参数(形式参数)名(x.y) .参数类型(int)


&2函数体。即函数首部下面的花括号内的部分。如果一个函数中包括有多层话括号,则最外层的一对花括号是函数体的范围


函数体一般包括以下部分

*1声明部分,包括定义在本函数中用到的变量,在上面例子的main函数中的定义变量“int a,b,sum”,在本函数所调用函数进行声明

*2执行部分。由若干个语句组成,指定在函数中进行的操作。


在某些情况下也可以没有声明部分;甚至可以既无声明部分也无执行部分,如。void dump(){}是一个空函数,什么也不做,但这是合法的


4.程序总是从main函数开始执行的,而不论main函数在程序的位置如何;(main函数可以放在程序的开头,中间,末尾)


5.程序中要求计算机完成的操作是由函数中的c语句完成的,


如赋值,输入输出数据,c程序书写格式比较自由的,一行内可以输入多个语句


6.在每个数据的声明和语句的最后必须有一个分号。


分号是c语句中的必要组成成分。如c=a+b;


7.c语言本身不提供输入输出语句,输入输出的操作是由库函数scanf和printf等函数完成的。


c语言对输出输入实行函数化。输入输出设备涉及具体的计算机


8.程序应包含注释*/

//算法+数据结构==程序

//算发的特性1.有穷性 2.确定性 3.有零个或多个输入 4.一个或多个输出 5.有效性

/*
#include <stdio.h>
int main()
{
float f,c; //定义f和c为单精度浮动点型变量
f=64.0; //指定f的值
c=(5.0/9.0)(f-32); //利用公式计算c的值
printf(“f=%f\nc=%f\n”,f,c); //输出c的值
return 0;
}/


/*常量和变量;


在计算机的高级语言中,数据有俩种表现形式:常量和变量;

任何一个C语言程序中处理的数据,无论是什么类型,都是以常量或变量的形式出现的,在程序设计中,常量可以作说明而直接引用,但是变量应遵循“先定义,后使用;先赋值,后引用”的原则。


1.常量是指在程序运行中其值不能改变的量.常量可以直接写在程序中,按其表现形式分为直接常量和符号常量。


&1 整型常量:整型常量即数学中的整数,

在C语言中的整型常量有3种表示法:十进制数,如100;八进制数,如0123;十六进制数,如0x123。


&2实型常量:实型常量又称浮点常量,即数学中含有小数点的实数。在C语言中的实型常量有2种表示方法:

十进制小数形2.25;指数形式,如 1.25E22。(e或E之前必须有数字,且e或E后面必须有数字);


&3字符常量:字符常量是指用单撇号括起来的单个字符。在C语言中的字符常量有2类,


*1一类是可以显示的字符常量,如’x’、‘1’;字符常量只能是一个字符,不包括单撇号,‘a’和‘A’是不同字符常量

字符常量储存在计算机储存单元中时,并不是存储字符(如a,z,#)本身,而是以其代码(ASCII代码存储);如’a’的ASCII代码是97;

*2另一类是以反斜杠开头的转义字符,如’\n’(换行)。’\t’(将光标下移到下一个Tab位置);


&4字符串常量:字符串常量是指用双撇号括起来的单个或多个字符,如"hello"、“x”。

另外,不管字符串是常量还是变量,它最后都有一个字符串结标志’\0’,所以字符串常量"x"比字符变量’x’的存储空间多一个。


&5符号常量是指用符号表示的常量。用什么符号表示什么常量需要用户自己定义,所以符号常量在使用之前必须先定义。


注意这里的定义和变量的定义是有区别的,符号常量的定义只是方便替换,并不涉及到数据类型。

定义过后就可以直接引用。其定义的一般形式为:#define 标识符 常量,(#define PI 3.1416)

尽量见名知义,如sum, PRICE(价格)

使用符号常量的好处是当需要修改一个数据时,不需要在程序中每个出现这个数据的地方都修改,只需要从定义位置的修改就可以了。


2.变量 为了方便管理、引用和存储程序中的数据,所以使用变量来进行各种数据操作。变量在程序运行期间其值可以改变。


在C语言中变量有三种必要的属性:数据类型、变量名、变量值。


变量定义格式:类型说明符 变量名1,变量名2…其中类型说明符必须是一个有效的数据类型。

例如:

int x,y; //定义了整型变量x,y


3.常变量


C99允许使用常变量,如:

const int a=3;

表示a被定义为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。


可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

define pi 3.1415926
const float PI 3.1415926

符号常量 pi 和常变量 PI 都代表3.1415926,在程序中都能使用,只是二者的性质有所差别,


定义符号常量使用#define 指令,是预编译指令,只是使用一个符号常量代表一个字符串,在预编译是仅仅进行字符替换,在预编译之后符号常量不存在了(全部换成了3.1415926),对符号常量的名字是不分配内存的。常变量要占据内存空间,有变量值,只是这个值不改变。


使用的角度来看,常变量具有符号化常量的优点,而且使用更加方便


4.标识符是C程序的最基本组成部分,例如:变量名称、函数名称、数据类型等等,都是一个标识符。


标识符的要求是:必须由字母(区分大小写)、数字、下划线组成。而且,标识符的第一个字符不可以是数字。例如:


abc — 合法


_abc123 — 合法


abc555 — 合法


123abc — 非法


abc$!! — 非法


在C语言中,大写字母和小写字母被认为是不同的字符,所以,ABC与abc表述的标识符是不一样的。


数据类型



数据类型

(1)基本类型:


基本整型(int)、短整型(short int 简称 short)、长整型(long int 简称 long)——统称整型。


整型又可以按有无符号分为:有符号型和无符号型(unsigned)。


无符号型:无符号整型(unsigned int)、无符号短整型(unsigned short int)、无符号长整型(unsigned long int)。

*字符型(char)。

*实型(浮点型):单精度型(float)和双精度型(double)。

*枚举型(enum)。


(2)构造类型:

*数组类型;

*结构体类型;

*共用体类型;


(3)指针类型


(4)空类型(void)


基本数据类型


C语言的基本数据类型包括:整型、实型和字符型。


整型


C语言的整型数据分为基本整型(int)、短整型(short)、长整型(long)三种。按数据是否有符号又可分为有符号型和无符号型。


**在不同的c编译环境中整型数据所占据的内存空间长度不一样。但遵循一个规则,即int的长度大于或等于short的长度,小于或等于long的长度。


当不知道不同数据类型在不同编译环境所占空间内存数时,可以用sizeof运算符——C语言提供的一种数据类型所占存储空间长度的一种特殊的运算符。


其一般形式位:sizeof (操作数),操作数可以是变量、常量以及数据类型修饰符。

如,m=sizeof(sum) 操作数为变量,k=sizeof(long int) 操作数为数据类型,n=sizeof(678L) 操作数为常量。


实型


C语言的实型数据主要有单精度型(float)和双精度型(double)


c语言中的实型常量都作双精度处理,分配8个字节;


float型的数据a=123456.789e6的有效数是6,故输出的a的数值的精度是十进制数的7位,值为123456790528.000000;


double型的数据b=123456.789e6、 c=1234567.78912345678e3的有效数是16,故可输出b的值的精度是十进制数的17位,值分别为123456789000.000000、1234567789.123457。


/#include <stdio.h>
int main()
{
float a=123456.789e6;
double b=123456.789e6;
double c=1234567.78912345678e3;
printf("%f\n%f\n%f\n",a,b,c);
return 0;
}/

/程序运行结果

123456790528.000000

123456789000.000000

1234567789.123457/


/字符型


标识符是char、占8位(1字节)、表示范围是-128~127 。

字符型是用英文单引号括起来的单字符。


** 注意:“A” 和’A’的区别:*

"A"是字符串,包含字符’A’和字符串结束标志符’\0’,占两个字节。

'A’是字符,占一个字节。


不同的数据类型他可参与的运算类型不一样:



像整型的话是加减乘除和求余。求余只适合于整型数进行求余,两个浮点数可以做求余运算吗?

不可以。(为什么不可以)

实型呢就是加减乘除,没有求余。

字符型做乘法、除法没有意义。只适合做加减法。 字符做加减是什么概念呢?(使用ASCII编码的话相当于对ASCII值做加减运算)


如果要处理数据类型,一定要注意两个方面的东西:


(1)数据的取值范围:这一个类型的数据,在内存中怎么保存;比如说一个整型数在内存中是怎么保存的,一个实型数在内存中是怎么存储的。数据在内存中怎么存储其实也就决定了这个数据的取值范围,我可以处理的数据的范围是多少。


(2)可用的操作:对这种类型的数据可以执行哪些操作;比如对于整型数来讲,它可以执行算术运算、比较运算。对于实型数据也可以执行这些运算,但是对于其他类型的数据可能就不是这些运算了。


/每一个变量都属于一个确定的类型,类型是变量的一个重要的属性。变量是占存储单元的,是具体存在的实体,在其占用的数据单元中可以存放数据。但类型是变量的共性,是抽象的,不占存储单元,不能用来存放数据。/


/*1.putchar()函数向终端输出一个字符。能输出但个字符,也能输出控制字符。例如:

putchar(‘a’);putchar(’\n’);

2.getchar()函数从终端输入一个字符。其一般形式就是getchar();函数的值就是从输入设备得到的字符。getchar()函数只能接收一个字符,得到的字符可以赋值给一个字符变量或整形变量。


格式输入输出 :


1.printf函数作用是向终端输出若干任意类型的数据(putchar只能输出字符,而且只能输出一个字符) 作用是向终端输出若干任意类型的数据(putchar只能输出字符,而且只能输出一个字符)一般形式为:printf(格式控制,输出列表);

例如:

printf(“%d,%c\n”,i,c);


2.格式字符1)d格式符,用来输出十进制整数.有几种用法a)%d,按十进制整形数据的实际长度输出b)%md,m为制定输出字段的宽度.如果数据的位数小于m,则左端补以空格,若大于m则按实际位数输出。c)%ld,输出长整形数据.(%mld,指定输出字段的宽度)2)o格式输出,以八进制整数形式输出。将符号位也一起作为八进制数的一部分输出。


例如:

int a = -1;printf(“%d,%o”);

输出为:-1 ,177777 ,不会输出带负号的八进制整数。


也可以制定字段宽度,例如:

printf(“%8o”,a);

3) x格式输出,以十六进制整数形式输出,不会出现负的十六进制,可以制定宽度.

4) u格式符, 用来输出unsigned型数据,以十进制形式输出。

5)c格式符,用来输出一个字符。

6)s格式符,用来输出一个字符串。有几种用法,

a)%s, 输出字符串

b)%ms,输出字符串占m列,如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若小于m,则左补空格。

c)%-ms, 如果字符串长度小于m,则在m列范围内,字符串向左靠,右补空格。

d)%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

e)%-m.ns,mn含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则m自动取n值,即保证n个字符正输出。

7)f 以小数形式输出 &f不指定输出宽度,整数部分全部输出,小数保留六位,%lf输出双精度实数


scanf()函数

scanf(“格式控制”,地址列表 );


说明:


1)指定域宽输入时,系统自动截取指定宽度所需数据

2)使用禁止赋值符"*",表示跳过他指定的列数

3)输入实数时不要指定精度

4)用“%c”格式声明输入字符时,空格和转义字符中的字符都作为有效字符输入

scanf("%c%c%c",&c1,&c2,&c3);在执行这个函数的时候,中间不要有空格,如abc,若在中间有空格就不对了,如a b c;第2个字符是空格;

5)在输入数据的时候,如遇到空格,回车,TAB键,非法字符的时候,认为该数据结束;

如scanf(“%d%c%f”,&a,&b,&c)如输入1234a123o.26

第一个数据对应1234;第2个数据是a,第三个数据是123;c后面的字符没有输入;


4.getchar()用键盘输入一个标准字符,当多次使用时,必须按回车键才能完成输入操作。既可以赋值给变量,也可以直 接用

c=getchar

5.putchar()向显示器输出字符

putchar(c)c可以是字符常量,整型常量,字符常量,整型变量(它的值在ASCLL代码内就可以);

也可以输出转义字符

putchar(‘\101’) 输出字符A

putchar(‘’’) 输出单撇号


相关文章
|
7月前
|
存储 人工智能 算法
【C语言】自学终极笔记
【C语言】自学终极笔记
110 0
|
4月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
4月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
6月前
|
C语言
|
6月前
|
C语言
|
7月前
|
C语言
C语言(指针详解)重点笔记:指针易错点,都是精华
C语言(指针详解)重点笔记:指针易错点,都是精华
85 0
|
存储 编译器 C语言
C语言笔记第03章:数组(四)
C语言笔记第03章:数组
100 0
|
编译器 C语言 索引
C语言笔记第03章:数组(一)
C语言笔记第03章:数组
109 0
|
7月前
|
NoSQL Redis C语言
|
C语言
C语言初阶 牛客网刷题笔记(将持续更新..)
C语言初阶 牛客网刷题笔记(将持续更新..)
C语言初阶 牛客网刷题笔记(将持续更新..)