c语言基础
.一个函数包括两个部分
&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输出双精度实数
3. 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(‘\'’) 输出单撇号
- 点赞
- 收藏
- 关注作者
评论(0)