C语言基础与顺序结构课件_第1页
C语言基础与顺序结构课件_第2页
C语言基础与顺序结构课件_第3页
C语言基础与顺序结构课件_第4页
C语言基础与顺序结构课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言基础与顺序结构C语言基础与顺序结构学习目标学会合理选用数据类型学会使用常用的运算符学会使用常用的标准输入/输出函数控制数据的输入/输出学会顺序程序的设计方法学习目标学会合理选用数据类型2.1C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作2.1C数据类型基本类型构造类型指针类型空类型void定义2.1.0预备知识计算机中数的表示及进制转换数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值数制十进制:0~9二进制:0、1八进制:0~7十六进制:0~9,a~f2.1.0预备知识计算机中数的表示及进制转换各种进制之间的转换1、二进制、八进制、十六进制转换成十进制

方法:按权相加各种进制之间的转换1、二进制、八进制、十六进制转换成十进制2、十进制转换成二进制、八进制、十六进制方法:连续除以基,从低到高记录余数,直至商为02、十进制转换成二进制、八进制、十六进制例把十进制数459转换成二进制数2459余12229余1114余0257余128余0214余07余123余11余120(459)10=(111001011)2例把十进制数459转换成二进制数2459例把十进制数459转换成八进制数4598578780(459)10=(713)8713余3余1余7例把十进制数459转换成八进制数4598578780(例把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161CB余11余12余1例把十进制数459转换成十六进制数45916281613、二进制与八进制之间的转换二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制八进制转换成二进制:用3位二进制数代替每一位八进制数000~0001~1010~2011~3100~4101~5110~6111~7例(1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)23、二进制与八进制之间的转换000~0例(110104、二进制与十六进制之间的转换二进制转换成十六进制从右向左,每4位一组(不足4位左补0),转换成十六进制十六进制转换成二进制:用4位二进制数代替每一位十六进制数0000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)24、二进制与十六进制之间的转换0000~0例(110字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或17643251字节和位内存以字节为单元组成7643251数值的表示方法——原码、反码和补码(二进制)原码反码补码正数01111001最高位为符号位0,其余各位为数值本身的绝对值与原码相同与原码相同负数11111001最高位为符号位1,其余各位为数值本身的绝对值11111001符号位为1,其余位对原码取反10000110最高位为1,其余位为原码取反,再对整个数加110000111数值的表示方法——原码、反码和补码(二进制)原码反码补码正数2.1.1整型数据整型常量十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff2.1.1整型数据整型常量整型变量二进制形式表示TC2.0中,在内存中占2个字节的存储单元符号关键字占字节数的表示范围有[signed]int2-215~215-1[signed]short2-215~215-1[signed]long4-231~231-1无unsignedint20~216-1unsignedshort20~216-1unsignedlong40~232-1整型变量符号关键字占字节数的表示范围有[signed]int整型变量的定义和赋值inta,b;a=3;b=4;或

inta=3,b=4;longe=123L;整型变量的定义和赋值举例2-1:从键盘输入两个整数,求它们的和#include<stdio.h>main(){inta,b,sum;scanf(“a=%d,b=%d”,&a,&b);sum=a+b;printf(“a+b=%d\n”,sum);}变量声明输入语句执行语句输出语句举例2-1:从键盘输入两个整数,求它们的和#include<练习11、求32766+1与32767+1的和2、从键盘上输入数据,求四则运算(a+b)*c/(d-e)的结果#include<stdio.h>main(){

int

a;

intb; a=32767; b=a+1;

printf("%d\n",b);}#include<stdio.h>main(){

inta;

longb; a=32767; b=a+1L;

printf("%ld\n",b);}-32768练习11、求32766+1与32767+1的和#includ课后作业P.11习题课后作业P.11习题2.1.2浮点型数据浮点型常量十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4

e-5,1.2E-3.5(×)2.1.2浮点型数据浮点型常量浮点型变量一般占4个字节类型字节有效数字float46-7double815-16longdouble1618-19浮点型变量类型字节有效数字float46-7double81浮点数变量定义和赋值floata,b;floatc=123456.789e3;浮点数变量定义和赋值举例2-2:从键盘输入两个浮点数,求它们的积#include<stdio.h>main(){floata,b,c;scanf(“a=%f,b=%f”,&a,&b);c=a*b;printf(“a*b=%10.2f\n”,c);}举例2-2:从键盘输入两个浮点数,求它们的积#include练习21、求一个较大的浮点数(上例中的c)与一个较小数(20)的和2、求一个整数与一个浮点数的和3、将第2题结果转换为整数类型输出练习21、求一个较大的浮点数(上例中的c)与一个较小数(20float型数据提供7位有效数字double型数据提供16位有效数字使用不当导致舍入误差#include<stdio.h>main(){

floata;

floatb; a=123456.789e3; b=a+20;

printf("%f\n",a,b);}#include<stdio.h>main(){

doublea;

doubleb; a=123456.789e3; b=a+20;

printf("%lf\n",a,b);}12345678848.000000float型数据提供7位有效数字#include<stdi2.1.3字符型数据字符常量用单引号括起来的单个普通字符或转义字符字符串常量用双引号括起来的字符序列如‘a’‘A’‘?’‘\n’‘\101’如:“hello”hello\02.1.3字符型数据字符常量如‘a’‘A’转义字符<反斜线后面跟一个字符或一个代码值表示转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符转义字符<反斜线后面跟一个字符或一个代码值表示转义字符含义\符号常量(宏常量)一般采用大写字母表示#define标识符字符串不是语句,而是一种编译预处理命令宏替换(MacroSubstitulition)#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}符号常量(宏常量)#include<stdio.h>字符变量一般占1个字节将该字符的相应的ASCII码值放到存储单元中(参见P.251附录A)用来表示256个ASCII字符,或者0~255的整数字符变量第2章C语言基础与顺序结构课件字符变量定义和赋值charc1,c2;c1=‘a’;c2=‘\”’;c1=‘a’;与c1=97;等价c1=c1+1;c1=?大小写字母如何转换?c1=c1-32;字符变量定义和赋值举例2-3:大小写字母的转换#include<stdio.h>main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c\n”,c1,c2);}运行结果:AB举例2-3:大小写字母的转换#include<stdio.h类型转换自动类型转换ch/i+f*d-(f+i)强制类型转换i=(int)f;(int)9.6%4doublefloatlongunsignedintchar,short低高类型转换自动类型转换doublefloatlongunsig同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种long

double>double>float>long>int>short>char把数据赋值给另外一种类型变量也会发生自动类型转换从小到大,顺利转换从大到小,可能丢失信息强制类型转换可以消除从大到小转换时的警告同种数据类型的运算结果,还是该类型变量声明总结使用变量的基本原则变量必须先定义,后使用所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一条声明语句可声明若干个同类型的变量声明变量,是初始化变量的最好时机不被初始化的变量,其值为危险的随机数变量声明总结使用变量的基本原则课后作业P.40习题课后作业P.40习题2.2运算符与表达式C运算符算术运算符:(+-*/%)关系运算符:(<<===>>=!=)逻辑运算符:(!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:((类型))分量运算符:(.)下标运算符:([])其它:(()-)2.2运算符与表达式C算术运算符:(+-*/2.2.1算术运算符+-*/%四则混合运算中,先算乘除,后算加减,

按从左向右的顺序计算,左结合数学中3ab,在C语言中应写为3*a*b两整数相除,结果为整数%要求两侧均为整型数据例

5/2=-5/2.0=2-2.5例

5%2=-5%2=1%10=

5%1=5.5%21-110()2.2.1算术运算符+-*/%例5/2自增、自减运算符n++,n--,++n,--n++让参与运算的变量加1,--让参与运算的变量减1作为后缀运算符时,先取n的值,然后加/减1作为前缀运算符时,先加/减1,然后取n的值m=n++;

等价于m=n;n++;m=++n;

等价于n++;m=n;自增、自减运算符例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4例j=3;k=++j;//k=4,j=4//k=32.2.2赋值运算符下面两个语句是等价的i=i+2;i+=2;+、-、*、/、%、<<、>>、&、^、|运算符都可以按此种方式处理这种形式看起来更直观,而且执行效率一般也能更高一些2.2.2赋值运算符下面两个语句是等价的2.2.3逗号运算符表达式1,表达式2,…,表达式n最终结果是表达式n的值例:intx,y=7;floatz=4;x=(y=y+6,y/z);例:inta=5,b;b=(a=a+4,a*4,a+15);2.2.3逗号运算符表达式1,表达式2,…,表达式n2.2.4sizeof运算符sizeof用于获得变量或者数据类型的长度#include<stdio.h>main(){

printf("DatatypeNumberofbytes\n");

printf("------------------------\n");

printf("char%d\n",sizeof(char));

printf("int%d\n",sizeof(int));

printf("shortint%d\n",sizeof(short));

printf("longint%d\n",sizeof(long));

printf("float%d\n",sizeof(float));

printf("double%d\n",sizeof(double));}2.2.4sizeof运算符sizeof用于获得变量或者数2.2.5逻辑运算符逻辑运算也被称为布尔(Boolean)运算&&与运算(a>b&&b>c);a大于b,并且b大于c||或运算(a>b||b>c);a大于b,或者b大于c!求反(!a);如果a是0,结果非0;如果a是非0,结果是0并不改变a的值2.2.5逻辑运算符逻辑运算也被称为布尔(Boolean)2.3输入/输出函数格式输入输出函数字符输入输出函数2.3输入/输出函数格式输入输出函数调用标准I/O函数时,应在程序首位设置以下的预处理命令:#include"stdio.h"

在当前目录和TC指定的目录中找该文件#include<stdio.h>

在由TC指定的文件目录中找该文件调用标准I/O函数时,应在程序首位设置以下的预处理命令:格式输出函数格式输出函数printf(“格式控制”,输出项表列);输出若干个任意类型的数据printf("a=%db=%f",a,b);P.31例2-7函数名输出项表列普通字符格式控制格式输出函数格式输出函数函数名输普通字符格式控制举例2-4#include<stdio.h>main(){

floatf1=100.15799,f2=12.55,f3=1.7;

intn1=123,n2=45,n3=3456;printf("%5.2f\n%6.1f\n%3.0f\n",f1,f2,f3);printf("%5d\n%-6d\n%3d\n\n",n1,n2,n3);}100.16@@12.6@@2@@12345@@@@3456举例2-4#include<stdio.h>100.16格式输入函数格式输入函数scanf(“格式控制”,地址表列);scanf("%d,%f”,&a,&b);非格式字符格式说明地址表列格式输入函数格式输入函数非格式字符格式说明地址表列格式输入函数常见错误scanf("%d,%f\n”,&a,&b);scanf("%d,%f”,a,b);scanf("%7.2f",&a);格式输入函数常见错误输入数据时,遇以下情况时该数据认为结束遇空格、回车、TAB键遇宽度:%3d遇非法输入输入数据时,遇以下情况时该数据认为结束举例2-5#include<stdio.h>main(){

chara,b; printf("Pleaseinputaandb:"); scanf("%c%c",&a,&b); printf("a=%c,b=%c\n",a,b);}Pleaseinputaandb:a=A,b=BAB↙举例2-5#include<stdio.h>Please举例2-6#include<stdio.h>main(){

inta,b;longc; printf("Pleaseinputa,b,c:"); scanf("a=%d,%d,%ld",&a,&b,&c); printf("a=%d,b=%d,c=%ld\n",a,b,c);}Pleaseinputa,b,c:a=12,b=34,c=56a=12,34,56↙举例2-6#include<stdio.h>Please举例2-7#include<stdio.h>main(){

floata,b;doublec; printf("Pleaseinputa,b,c:"); scanf(“%f,%e,%lf",&a,&b,&c); printf("a=%f,b=%e,c=%lf\n",a,b,c);}Pleaseinputa,b,c:a=5.2,b=1.2e3,c=7.895.2,1.2e3,7.89↙举例2-7#include<stdio.h>Please举例2-8#include<stdio.h>main(){

inta,b; printf("Pleaseinputaandb:"); scanf("%2d%*2d%2d",&a,&b); printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}Pleaseinputaandb:a=12,b=56,a+b=68123456↙虚读,即跳过本输入项举例2-8#include<stdio.h>Please常用格式说明类型格式说明整型int%d整型long%ld长整型实型float%f小数形式%e指数形式double%lf小数形式%le指数形式字符型char%c字符型常用格式说明类型格式说明整型int%d整型long%ld长整字符输入输出函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论