资源描述
#Include<stdio.h>
Main()
{}
INCLUDE称为文件包含命令,意义是把指定的文件包含到本程序中。这里包含的文件是由系统提供的,扩展名为.h,也称为头文件或首文件。C语言的头文件中包含了各种标准库函数的函数原型,因此,在程序中调用一个库函数时,必须包含该函数的原型所在的头文件。
用二进制表示的数
计算机的数是用定点数或浮点数表示,定点数是小数点位置固定的数,整数和纯小数都是定点数。浮点数是小数点位置变化的数,既有整数部分又有小数部分的数是浮点数。
注意:
1不论是浮点数还是定点数,小数点都不单独占用一个二进制位;
2一般计算机的存储数据是以8个位(bit)为一个单位的,每8个位构成一个字节。
1整型数的二进制表示
有符号的二进制数
整型数分为有符号和无符号两种。正负号由字节的最高位(符号位)表示,0表示整数,1表示负数。
(1) 一个字节表示的数
例如:10110100十进制数为-52.00110100十进制数是+52
注意:为了节省内存空间,正零:00000000,负零:10000000.代表-128
(2)2个字节表示的数
注意:正零:00000000 00000000,负零:10000000 00000000.代表-32768.
(3)4个字节表示的数
注意:与上面类似。
无符号的二进制数
最高位的0或1不再代表符号,而是具体的数值。
1一个字节表示的数 2 2个字节表示的数 3 4个字节表示的数
字节数
有符号的
无符号的
最小值
最大值
最小值
最大值
1
-128
128
0
256
2
-32768
32768
0
65535
4
-2147483648
2147483648
0
4294967295
注意:整数的负数在计算机中是以其补码的形式存放并参与运算的。
2浮点数据的二进制表示
浮点数根据计算机系统分配的字节数不同可以分为单精度浮点数和双精度浮点数,通常单精度4个字节,双精度8个字节。
计算机存储浮点数时要先将十进制数转换成二进制数,方法:
先将浮点数分为整数和小数部分,再将小数部分和整数部分分别转换成二进制。
整数部分采用除2取余数的方法,小数部分采用小数乘2取整数的方法。
浮点数的存储格式
三个部分次序为:符号位 指数位 尾数
符号位:代表正负;指数位:代表2的次幂;尾数:代表有效小数位数;
(1) 单精度浮点数
一共32位,符号位占1位,指数位占8位,尾数占23位。
(2) 双精度浮点数
一共64为,符号位占1位,指数位占11位,尾数占52位。
基本数据类型及其取值范围
C语言共5种基本数据类型:
1字符型:char;
2整数型:int;
3单精度实数型:float;
4双精度实数型:double;
5空类型:void;
不同数据类型的存储长度:
Char一般1个字节;Int一般2个字节;long int一般4个字节;float一般4个字节;double一般8个字节。
注意:不同的环境不同的长度。
标识符、变量和常量
1标识符
标识符就是一个名字,用于标识某个事物,由字母、数字、下划线组成。
注意:
1第一个字符必须是下划线或字母。
2最长不允许超过32个字符。
3C语言中区分大小写。
2变量
3常量
C语言中,有整型常量、实型常量、字符常量、字符串常量、枚举常量、等
1整型常量
可以采用十进制、八进制、十六进制来表示一个整型常量。
八进制以数字0开头,十六进制以数字0和x组合开头,可以是0x或0X.。
注意:八进制输出%o,十六进制输出%x。
2实型常量
可以用浮点计数法和科学计数法来表示。
12345.6e-2的浮点数表示为123.456000 12345.6e2的浮点数表示为12345.600000
122345.6的科学计数法表示为1.23456e4
注意:
1e-表示10的负多少次幂。
2e和E的作用相同。
3科学计数法输出为%e。
4浮点数的默认为6位小数。
3字符常量
字符常量是由一对单引号括起来的单个字符,如:‘s‘、’9‘、’$‘等。
注意:
1单引号内的字符不可以是单引号(‘)或反斜杠(\),要通过转义字符(\)或(\\)来实现。
2字符是按照所对应的ASC||的值来存储的,一个字符占一个字节。
字符
0
9
A
Z
a
z
NULL
ASC||的值(十进制)
48
57
65
90
97
122
0
3字符常量是按照顺序存储在ASC||表中的,他的有效值为0到127.因此他也可以像整数一样运算,但要注意不要超过其有效范围。
4字符串常量
指用一对双括号括起来的一串字符。
注意:
1双引号括起来的字符串不能出现双括号和反斜杠。
2字符串常量在内存中存储时,系统会自动在末尾加一个串结束标志,即\0。所以长度为n的字符串实际占有的内存为n+1个字节。
3‘a’占有一个字节。“a”占有2个字节。
5转义字符
通常用转义字符表示ASC||中不可打印的控制字符和特定功能的字符。
转义字符用一个反斜杠(\)后面跟一个字符或一个八进制或十六进制数表示。例如:\d,\n。
注意:
1在字符常量中使用单引号和反斜杠,及在字符串常量中使用双引号和反斜杠,都必须使用转义字符,方法:在字符前面加反斜杠。
2转义字符中的字母只能是小写字母。
6符号常量
将程序中的常量定义为一个标识符,称为符号常量。习惯上用大写字母表示。
定义形式:#define 符号常量名 常量
例如:#define PI 3.14;
#define TRUE 1;
#define FALSE 0;
这里PI TRUE FALSE 均为符号常量。
基本运算符、表达式及运算优先级
基本运算符:算术运算符、关系运算符、逻辑运算符、赋值运算符。此外还用好多。
1算术运算符
运算符
优先级
作用
++
高
自增1
--
自减1
+
低
-
*
中
/
%
模运算(整数相除,结果取余数)
注意:
1模运算的两个变量只能是整数,不能是浮点数。
2编译程序会按照优先级别来处理,对于优先级别相同的运算符按照从左到右顺序进行。
3不提倡运用很多运算符,多用括号可以提供程序可读性。
4两个整数相除(/),结果只取整数。
5前置++或——的语法规则为:先将变量的值加1,在使用该变量。
6后置++或——的语法规则为:先使用该变量,再将变量值加1。
7输出时从右到左,如:printf(“%d%d”,I,i++);i初值为3,结果为4 3。
8++和——不能用于常数和表示式。如8++,和(a+b)++均是错误的。
2关系运算符
关系运算符
优先级
>
高
<
>=
中
<=
==
低
!=
关系表达式的值只有两个:真(1)和假(0)。
3逻辑运算符
逻辑运算符
优先级
!
高
&&
中
||
低
逻辑表达式的值只有两个:真(1)和假(0)。
注意:
1表达式1||表达式2
当表达式1值为真时,编译器对表达式2不计算,只进行检测语法错误。
2表达式1&&表达式2
当表达式1值为假时,编译器对表达式2不计算,只进行检测语法错误。
4位运算符
主要是对整型和字符型数据类型而言,对浮点型等其他数据类型不适用。
5条件运算符
又称为三目运算符,一般形式:表达式1?表达式2:表达式3;
规则:表达式1值为真时执行表达式2,假时执行表达式3.
6逗号表达式
一般形式:表达式1,表达式2;
规则:先计算表达式1,再计算表达式2,最后结果为表达式2的计算结果。
注意:
1a=3*5,a*4;非逗号表达式,b=(3*5,a*4)为正确的逗号表达式,结果为60。
2逗号表达式可以嵌套,表达式1,(表达式2,表达式3)。
3程序运用逗号表达式的目的主要是分别求逗号表达式内各个表达式的值,而不是求整个逗号表达式的值。
3y=(x=3*5,x*4,x+15);y的结果为30。
7数据类型的转换
一般应尽量保持一个表达式中各个变量的类型保持一致,但是也允许不一致,C语言可以将较短的数据类型转换成较长的数据类型。
强制转换数据类型一般形式:数据类型符 表达式或变量 例如:
Int a; float t; a=15; t=(float)a/30;结果为0.5。
标准输入输出函数简介
常用标准输入输出函数:
格式化输入输出函数:Scanf/printf;
字符输入输出函数:getc/putc; getch/putch; getchar/putchar;
字符串输入输出函数:gets/puts.
1格式化输出函数,ptintf
一般形式:printf(“控制字符串”,输出项列表);
输出项列表 可以是常量、变量、表达式。类型和个数要和控制字符串中的格式字符的类型个数相同。
控制字符串 必须用双引号括起来,可以由格式说明和普通字符组成,当只有普通字符时不用输出项列表。
格式说明,一般格式:% 修饰符 格式字符
输出格式字符
格式字符
意义
格式字符
意义
d
十进制整型输出
e
按科学计数法输出
Hd或hd
十进制短整型输出
o
按八进制整型输出
Ld或ld
十进制长整型输出
x
按十六进制整型输出
u
无符号整型输出
g
按e和f格式较短的一种输出
Hu或hu
无符号短整型输出
c
字符型输出
f
浮点型小数输出
s
字符串输出
Lf或lf
长精度输出浮点数
(1)字段宽度修饰符
修饰符
格式说明
意义
m
%md
以宽度m输出整型数,宽度不足m时,左补空格
0m
%0md
以宽度m输出整型数,宽度不足m时,左补零
m,n
%m.nf
以宽度m输出实型小数,小数位为n位
注意:
1当指定宽度小于数据的实际宽度是,对整数,按该数的实际宽度输出,对浮点数,相应小数位的数四舍五入,小数点也算作一位。
2在实际应用中可以用常量和变量的值作为输出宽度,方法是以一个*作为修饰,插入到%之后。例如:Int i=123; printf(“%*d”,5,i),*对应宽度5.
3另外在程序中可以用一个整型变量k来指示宽度,例如:printf(“%*d”,k,i);可以根据k的值动态的决定I的显示宽度。
(2)对齐方式修饰符
数据的默认对齐方式是右对齐,因此,当数据宽度小指定的输出宽度时,系统会自动在数据前加空格。可以通过在%后加负号“-”使得数据的输出方式为左对齐。相应的为右补空格。
普通字符
普通字符包括可打印字符和转义字符。
格式化输入函数scanf
格式:scanf(“控制字符串”,输入项列表);
注意:
1不可漏掉&,
2可以以空格、表格符(tab)、换行符作为每个变量输入值完毕的标准。以换行符作为数据输入的结束。
格式说明
一般形式:%修饰符 格式字符
格式字符
意义
d
输入一个十进制数
o
输入一个八进制数
x
输入一个十六进制数
f
输入一个小数形式的浮点数
e
输入一个指数形式的浮点数
c
输入一个字符
s
输入一个字符串
修饰符
(1)字段宽度
例如:scanf(“%3d”,&a);表示输入的整数宽度不能超过3个字符,就是-99到999,若超过这个范围系统就会自动截断,只取前三位。
假如:
Int a,b;
Scanf(“%d%3d”,&a,&b);
Printf(“a=%d\tb=%d\n”,a,b);
若这样输入数据:1234(1个空格)12345回车
系统会将1234给a,将12345的前三位给b。
输出为a=1234 b=123
(2)l和h
可以和十进制,八进制,十六进制,一起使用,加l表示输入数据为长整型或双精度浮点数,加h表示输入数据位短整型,例如:
Scanf(“%10ld%hd%lf”,&a,&b,&x);
表示a按照宽度为10的长整型读入,而I按照短整型读入,x按双精度浮点型数读入。
(3)字符*
*表示按照规定格式输入,但是不赋予相应的变量,作用是跳过相应的数据。
例如:
Int x=0,y=0,z=0;
Scanf(“%d%*d%d”,&x,&y,&z);
输入:11 22 33
输出:x=11,y=33 z未赋值保持原来的值不变。22未赋值给任何变量。
普通字符
包括空白字符、转义字符、可见字符。在输入格式的修饰符中,普通字符可有可无,一般不建议在输入格式中使用普通字符。
(1)空白字符
包括空格符、制表符、换行符,但是它们在ASC||中的值不一样,需要输入多个变量时可以通过空白字符来分离输入的值,将其赋值给相应的变量。
注意:
1当输入数据中包括字符型时,要用*做处理,否则发生意外。
例如:
Int a;
Char ch;
Scanf(“%d%d”,&a,&ch);
输入64(1个空格)q
输出时空格被赋值给ch,为避免此情况,可以采用*来跳过一个空格,如:
Scanf(“%d%*c%c”,&a,&ch);可以得到正确结果。
2也可以通过先输入字符的值,后输入数值型变量值的方式避免。
3scanf(“%c%c”,&ch1,&ch2)输入AB后直接回车,得到的也是正确答案。
(3)转义字符:\n,\t
转义字符\n,\t分别代表换行符和制表符,属于空白字符,在scanf语句中使用不会对数据的输入造成影响。例如:
Int a,b,x,y,z;
Scanf(“%d%d”,&a,&b);
Scanf(“%d%d%d”,&x,&y,&z);
Printf(“a=%d,b=%d,x=%d,y=%d,z=%d\n”,a,b,x,y,z);
输入1 2 3 4 5
结构为a=1,b=2,c=3,c=4,e=5
在上面的输入语句加入转义字符,写成:
Scanf(“%d\n%d\n”,&a,&b);
Scanf(“%d\t%d\t%d”,&x,&y,&z);
同样输入,结构不变。
(3)可见字符
在scanf语句中还可加入可见字符,但是在程序执行时,这些可见字符不会显示在屏幕上,而是要求按照原样输入,充当每个变量输入值完毕的标志。这时,输入数据的间隔不再用空格、制表符、换行符作为每个变量输入值完毕的标志。
假如:
int a,b;
char ch;
scanf("%d,%d,%c",&a,&b,&ch);
printf("a=%d\tb=%d\tc=%c\n",a,b,ch);
要求输入数据时也要按照顺序输入两个逗号。
注意:
1要注意数值型数据和字符型数据的取值特点,如果同时输入这两种类型的数据,可以采用先输入字符型数据,后输入数值型数据,减少出错。
2为了减少错误,在scanf语句中最好不要加可见字符。
3字符输出函数
Putc和putchar作用相同,putc作用更多。
Putch()和putchar()的作用均是向屏幕输出一个字符,功能与printf()函数的%c相同。输出对应的ASC||符号。
函数中的参数可以是字符常量、字符变量、整型表达式。如是整型表达式,要求表达式的值对应ASC||的字符。
char ch1='A',ch2='B';
int a=97,b=32;
putc(ch1,stdout);
printf("\n");
putch('o');
putchar('k');
printf("\n");
putch(ch1);
putchar(ch2);
printf("\n");
putch(a);
putchar(a-b);
putch('\n');
注意:
1用时要注明头文件conio.h.
2Stdout意思:屏幕。
3函数后的括号内字符要加单引号,变量名和整型表达式不用加。如putc(‘a’),和putc(a),前一个a是字符,后一个a是变量名。
4若输出项为整型常量,则该常量被看做字符代码,输入的是该整型常量对应的字符,如putc(65)。输出A。
5函数带参数,对应的输入函数不带参数。
4字符输入函数
函数
函数功能
Getc()
从指定位置读取字符,stdin表示键盘
Getch()
将键盘读取的字符放入缓冲区,字符不显示在屏幕上
Gerchar()
将键盘读取的字符放入缓冲区,字符显示在屏幕上
Getchar()和getc()作用相同,getc()作用更多。
Getch()和getchar()作用类似于scanf()中的%c,函数不带参数。
字符的输入函数格式:变量名=getc(stdin);或变量名=getch()或变量名=getchar();
注意:
1与scanf函数不同,字符输入函数将空格符和制表符,换行符也作为字符接收。
2只有将所有字符输入完成后,才一起执行,开始的字符仅是放到缓冲区。
char ch1,ch2,ch3;
printf("ch1=getc(stdin);\n");
ch1=getc(stdin);
putc(ch1,stdout);
printf("\nch2=getchar():\n");
ch2=getchar();
putchar(ch2);
printf("\nch3=getch()\n");
ch3=getch();
putch(ch3);
printf("\nthe end\n");
getch();
展开阅读全文