C程序设计讲义_第1页
C程序设计讲义_第2页
C程序设计讲义_第3页
C程序设计讲义_第4页
已阅读5页,还剩130页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计讲义新疆大学软件学院杨璇TOC\o"1-5"\h\z\o"CurrentDocument"第一章C程序设计概述 -1-1、程序的一般概念 -1-2、为什么要学习C语言 -1-3、怎样学好C语言 -1-4、C语言概述 -1-计算机程序语言的发展历程 -1C语言的发展过程 -3C程序结构特征 -44>5C- ■■*■■•**■■■•■■■■■■*■■•**■«■****•*>*■*«*»*»***■*«*>*■*«■**»■****•*>*■*«*»*»***■*«*>*■*«■**»■**■*-5-6C语言的运イ丁环境 -5-7 一些必备的冃リ导知识 -5-\o"CurrentDocument"第二章 算法及其表示 -6-1、什么是算法 -6-2、算法的特性 -6-3、算法的表示 -6-4,传统流程图的画法 -6-5、结构化程序设计方法 -7-\o"CurrentDocument"第三章语法记号、数据类型、常量、变量、运算符和表达式 -8-1、语法记号 -8-1关键词 -8-3分割符 -10-2、C语言的数据类型 -10-3、常量 -11 -1符号常量 -11-2整型常量 -12-3浮点型常量 -12-4字符型常量 -12-5字符串常量 -13-4、变量 -14-5、运算符和表达式 -151算术运算符和算术表达式 -16-2关系算符和关系表达式-16-3逻辑运算符和逻辑表达式 -17-4赋值运算符和赋值表达式 -19-5逗号运算符和逗号表达式 -19-6条件运算符和条件表达式 -20-6、各种数值型数据之间的混合运算 -20-\o"CurrentDocument"第四章基本的输入输出和简单的程序设计 -21-1、常用的输出函数 -21-字符数据的输出函数 -21-格式化数据的输出函数 -22-z、巾用的输入函数 -24-1字符数据的输入函数 -242格式化数据的输入函数 -24-3、简单C程序设计 -26-\o"CurrentDocument"第五章 分支结构程序设计 -27-1、分支程序的基本结构 -27I二分支选择结构 -27-1.2多分支选择结构 -27-2、・ロ^02x下王/^ -27-2.1if语句的第一种形式 -272.2if 日ン^^—开クエ[ -30-2.3if语句的第三种形式(嵌套) -31-2.4if一和else的配对原则 -32-3、多分支语句及程序设计 -373.1switch语句的一般形式 -37-3.2使用switch语句注意点 -37-\o"CurrentDocument"第六章 循环结构程序设计 -43-I、循环结构 -43-2、;^^^本的{/^^^1^句点) * * * * -43-2.1goto语句 -43-2.3do-whiIe语句 -45-2.4for语句 -47-3,循环嵌套 -48-4、辅助控制语句 -51-4.1break语句 -51-4.2continue语’可 -53-\o"CurrentDocument"第七章 数组 -55-1、数组的基本概念 -55-2、ー维数组 -552.1—维数组的定义 -55-2.2维数组的赋值 -55-2.3ー维数组的引用 -56-3、二维数组 -583.1ー维数组的疋义 -59-3.2—维数组的赋值 -59-3.3—纟隹ヌヌ纟且的弓I用 * * * * -60-4、字符数组 -61-4.1字符数组的定义、赋值和引用 -61-4.2字符数组的特殊点 -61-4.3字符串处理函数(重点) -62-\o"CurrentDocument"第八章函数 -64-1、概述 -64-2、函数的基本操作 -642.1函数的定义(抽取) -642.2函^^的尸明 -65-2.3函数的イ吏用 -67-2.4函数的参数(形参和实参,具有单向传递的特性) -67-3、数组作为函数的参数 -68-4、函数的嵌套 -70-5、函数的递归 -71 -\o"CurrentDocument"第九章指针 -75-1、概述 -751地址和指针的概念 -75-指针变量的定义和使用 -77-指针变量作为函数的参数 -79-2、数组与指针 -81-ー维数组与指针 -81-2ー维数组作为函数的参数 -84-3、二维数组与指针 -861—纟隹ヌメ纟目的止 -86-指向二维数组的指针变量 -88-用指向二维数组的指针变量做函数的参数 -90-4、字符串与指针 -91 -1指向字符串的指针变量 -91-4.2指向字符串的指针变量作为函数的参数 -92-\o"CurrentDocument"第十章结构体、链表、共用体和枚举 -95-1、结构体 -951.1问题的引出 -95-I-22口构!4s•的疋义 -95-1.3结构体变量的赋值和使用 -97-2、结构体数组 -99-3、指向结构体类型数据的指针 -993.I指向结构体变量的指针 -99 -3.2指向结构体数组的指针变量 -100-4、用结构体变量和指向结构体的指针作为函数的参数 -101-5、链表 -1045.1简单链表(静态链表)的构造和使用 -1045.2动态链表的构造和使用 -1055.3动态链表的删除操作 -107-5.4动态链表的插入^^作 * * * -109-6、共用体(联ロ体’ "113-第")—章文件 -115-1、文件概述 -115-2、文件的操作 -115-2.1文件类型的指针 -1152.2文件的打开和关闭 -116-2.3文件字符的简单读写 -1172.4文件块的读写 -119-第一章C程序设计概述1、程序的一般概念在日常的生活中,做任何的事情,都需要有一定的操作来完成,这种按一定顺序安排的工作就叫做程序。【例1】:西红柿炒鸡蛋,制作过程如下:洗好西红柿切好西红柿打好鸡蛋热锅放油炒鸡蛋把鸡蛋盛出来放油,炒西红柿放入鸡蛋放佐料炒出锅装盘以上就是ー个简单的做事过程,在这个过程中,我们通过一系列的动作对对象(西红柿、鸡蛋、油、佐料)进行操作,制作完成了菜肴。受此思想的启发,我们以后的编程的方法也和此类似。预想编程,先学基础(各种个样的对象),再学方法,就按照这种思想进行下去。2、为什么要学习C语言(1)因为大家都在学:全国高校,是大学生都知道。(2)培养大家的逻辑思维能力。(3)开路先锋的作用。3、怎样学好C语言有同学问:老师,我的游戏(英语)水平为什么比不上其他同学?答案:练的太少?如果把你送到美国呆上5年,你的英语肯定好。学好C语言(计算机语言)的法宝只有一个:苦练、再苦练、再再苦练。4、C语言概述4.1计算机程序语言的发展历程冯.诺依曼结构:r运算器1L 卜中央处理翳CPU主机L控制器J计算机JI存储器II/O设备:键盘、显示器等计算机语言经历了一个从低级到高级的发展过程,再此过程中,生活中的常识给与了许多启发。机器语言面向对象机器语言面向对象面向过程ド图是各种计算机语言出现的时序图:4.2C语言的发展过程4.2C语言的发展过程4.3C语言的特点简洁、紧凑、方便、灵活运算符类型丰富34种:算术运算符:+-*/%++-关系运算符:<<===>>=!=逻辑运算符:! &&II位运算符:《 >> 〜I人&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:ロ其它 :()-粧盛粧盛32short隹や皿长铃些10口g单用度セCoat又又率靑宣セdouble.整维数值类型〈[浮点や・宿类52char敝组结キ勾体Wlruct用f本union枚举类22enuxn指针类也空类処voidトー定义^^r^tyi>e€ief•具有较强的控制语句(为了程序的结构化)if()~else〜for()〜while()〜d〇〜while()continuebreakswitchaotoreturnc程序的设计,相比之下,语法限制不太严格,自由度相对较高具有较强的底层操作功能生成目标代码的质量好,程序的执行效率较高可移植性好4.4C程序结构特征在C语言的学习过程中,需要经历・个从基础ー提升一升华的过程,如图所示:【例2】:ー个典型的C程序intmax(intx,inty)/*max函数*/{intz;if(x>y)z=x;elsez=y;return(z);)main() /・主函数・/{inta,b,c;scanf(n%d,%du,&a,&b);c=max(a,b);/・调用max函数,求a和b中大数・/printf("max=%d\n",c);}程序:ー个C程序,是由函数组成的,必须有且只有一个主函数,程序的运行从主函数开始,还从主函数结束(记住)。函数:由函数首部和函数体组成。函数首部指定函数名、函数参数、类型函数体从{开始,到}结束,函数内有语句群嶼模块树中iiSII・袤"造

程销钠费中基!出标版窿靂飕

型旗符)4.5C语言的上机步骤=qセ二「结克编译执行多函數刊星里一4.5C语言的上机步骤=qセ二「结克编译执行多函數刊星里一字file.源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀X四.exeさ昊エ英?语句:包括说明性语句、可执行语句。以;表示语句结束注释:可以出现在程序的任何位置。用/・和・/括起来,必须成对出现格式:C语言没有行的概念,书写格式自由。习惯小写字母,缩进格式。程序代码的录入,生成源程序・.C语法分析查错,翻译生成目标程序・磁与其它目标程序或库链接装配,生成可执行程序*.exeC语言的运行环境TURBOCFORDOSTURBOCFORWINDOWSVISUALC++其他一些必备的前导知识要分清文本文件和非文本文件;学会一些常用的DOS命令(dircdmdcopy);

第二章算法及其表示1、什么是算法做事情的方法和步骤就叫做算法。在生活中,有些人做事情很漂亮,有写人很糟糕?说明做事情的方法和步骤有差异。在程序设计中,表现为好的算法和不好的算法。一般情况下,算法分为数值算法和非数值算法。在各位今后的程序设计中,前期往往是数值算法占多,后期是非数值算法占多。2、算法的特性(1)有穷性;不要没完没了。(2)确定性;(3)有输入和输出(一个或多个)(4)有效性;3、算法的表示(1)自然语言法:班长今天早晨去有好买东西了!(2)N-S流程图法;(3)传统流程图法;4、传统流程图的画法工具;很多,常用的WORD,AUTOCAD,SMARTDRAW,VISIO传统流程图的基本构成元素:连接线

连接线【例1】:中秋到了,班长买月饼分发给同学们。5、结构化程序设计方法在程序设计中,要求结构要清晰,对程序很重要,对你更重要。在程序设计中可以借鉴修房子的生活常例。在程序的整体设计上,要坚持“从上往下、逐步细化”的原则。在具体模块的制作过程中,要坚持‘‘结构化编码”的原则。几乎在所有的程序语言中,都支持三种基本的结构:顺序、分支(选择)、循环。练习:1,求3+5的和2、输入两个数,比较大小,输出最大的3、求1+2+3+..…+100的和。4、将A和B两个磁带的内容互换。第三章语法记号、数据类型、常量、变量、

运算符和表达式1、语法记号C语言编写的程序是由不同的语法记号组成的。所谓语法记号是指在程序中具有独立含义的不可进一步分割的单位。在C语言中,语法记号共有5类:关键词、标识符、常量、运算符和分隔符。关键词所谓关键词是指在C语言中预定义的符号,有固定的含义,分成5大类,共32个:存储类别autoexternregisterstatic类型定义typedef流程控制breakcasecontinuedefaultdoelsegotoifreturnswitchwhilefor数据类型intlongshortfloatdoublecharsignedunsignedstructunionenumvoidconstvolatile运算符sizeof切记:你定义的任何名字不得与关键词冲突。另外,在C语言中,还有一部分准关键词,这些准关键词也有固定的含义,允许你另作他用,但是,我强烈的建议大家不要对这些准关键词另作它用。这些准关键词主要有两类:预处理命令:defineendifincludeifdeflineundef库函数(系统函数)名字:printfscanf下面,我们对这些关键词的用途做ー说明:关鍵词用途说明char致据类型ー个字节长的字符値short短整数iirt整数unsigned无符号类型,最高位不作符号位long长整数float单精度实数double双精度实数用于定义结构的关键词union用于定义联合(共用体)的关键词void空类型,用它定义的对象不具有任何值muni定义枚举类型的关键词signed有符号类型,最高位作符号位const表明这个量在程序执行过程中不可变voIatiIe表明这个量在程序执行过程中可被启含地改变

关键词用途说明break退出最内层的循环或switch语句caseswitch语句中的情况选择continue流跳到下ー轮循环defaultswitch语句中其余情况标号do程在do...whiIe循环中的循环起始标记elseif语句中的另ー种选择for控带有初值、测试和増量的一种循环goto转移到标号指定的地方if制语句的条件执行return返回到调用函数switch从所有列出的动作中作出选择whiIe在whiIe和d〇…whiIe循环中语句的条件执行关键词用途说明typedef用于定义同义数据类型auto存自动变量register储寄存器类型static类静态变量extern别外部变量说明运sizsof符计算表达式和类型的字节数标识符所谓标识符是指用户自行定义的符号,用来标识变量、常量、函数、标号等,它的组成和命名要遵循以下的原则:只能由字母、数字、下划线(-)组成,且第一个必须是字母或下划线;大小写敏感;不能使用关键词;最长32个;同时,在命名过程中要注意:见名知意(最好使用英文单词或单词的组合,英文的重要性就出来了吧!)避免混淆(比如:1,1o,0)

常用大些字母标识常量标识符,变量等其他标识符用小写字母表示;注意系统中带(-)的标识符,不要混淆:【例1】:一道面试题。令a=l,b=l(是数字,还是字母,不知道),c=a+b,请问c=?【例2】:判断下面标识符号的正确性sumSumM.D.JohndayDate3day5studentname#33lotus_l_2_3chara>babove$123分割符[](){}.:=;#2、C语言的数据类型俗话说“巧妇难为无米之炊”,原料和配料多了,做出好饭的可能性就大。在前面的学习过程中,我们知道C语言的ー个特点就是数据类型十分丰富,下面是C语言的数据总表:,短整型short(整型整型ini长整型!ong<基本类型\滓占型[单精度型。。ボ土I双精度型double,字符类型charC数据类型く构造类型r数组C数据类型く构造类型r数组结构struct联合unionし枚举类型emun指针类型空类型void定义类型tynedd,在学习过程中,应首先认识基本的数据类型,因为其他的类型基本上就是这些基本类型派生出来的,见下表:类型符号关键词所占位数数的表示范围蟹型(有(signgiDini16 -32768〜32767signedjshort16 -32768〜32767signed)long32 -2147483648〜2147483647元I1insignedini16 ।卜65535insignedshort16 (ル65535insignedlong32 (卜4294967295有float32±3.4e-38~3.4e38有double64±1.7e-308-1.7e308字符型贅char8-128-127元unsignedchar8〇〜2"说明:数据类型所占字节数随机器硬件不同而不同,上表以1好,到此为止,我需要回答大家一个问题,为什么这么烦BMPC机为例,要定义数据类型?原因有三;•规定数据占内存的大小;•限定数据的取值范围;•决定在其上所进行的操作;3、常量所谓常量,指在程序运行过程中其值不能改变的量。在C语言中,共有5类常量,分别是;符号常量、整型常量、浮点型常量、字符型常量、字符串常量。3.1符号常量所谓符号常量,是用标识符来代表常量。定义格式;#define符号常量常量比如:#definePRICE30【例3】:看下面的程序#definePRICE30main()(intnum,total;num=10;total=num*PRICE;printf(',total=%d,',total);getch();注意:一般用大写字母:是宏定义预处理命令,不是C语句;3.2整型常量其实就是我们常用的整数,它的表示方法有三种:十进制整数:由0-9和正负号来表示;ハ进制整数:由数字。开头,后面跟0-7表示:十六进制整数:由Ox或0X开头,后面跟0-9,a-f,A-F表示;平时使用过程中,如果想提高计算速度,请使用WINDOWS自带的计算器。关于整型常量的类型,可以根据以下的原则进行判断:根据其值所在的范围判断如果在整型常量的后面加I或L,认为它是长整型数:3浮点型常量其实就是我们熟悉的实数,它的表示方法由两种:十进制;指数形式:(在e或E的前面必须由数字,指数必须为整数)12.3e3关于浮点性常量的类型,一般遵循以下的原则:如果不做特殊的规定,默认为double如果在浮点性常量的后面加f或F,认为它是float:4字符型常量所谓字符型常量,就是用单引号括起来的普通单个字符或转义字符。比如:‘a''A''?‘へn''MOI'对于字符型常量,在内存中存储的是该字符的ASCII(参见附录),比如:'A:65H97有了这个前提,对于字符常量的理解就容易了。对于转义字符,反斜线后面跟ー个字符或ー个代码值表示,常用的转义字符如下:转义字符含义转义字符含义V 换行\t横向跳格(Tab)\v竖向跳格\b退格\r回车\f换行但不回车单引号\\反斜线ヽ“双引号_\ddd_3位8进制数代表的字符\xhb2位16进制数代表的字符比如:TOC\o"1-5"\h\zuor 火ヘ012, '“40' @【例4】有如下程序,写出运行结果。main()(printf("\101\x42C\n");printf("Isay:\"howareyou?\"\n");printf("\\Cprogram\\\n");printf("TurboVCV");getch();运行结果:提醒:对于转义字符,千万不要去背,但要求会査表和使用就可以了。3.5字符串常量对于字符常量,是由单引号括起来的普通字符或转义字符。而对于字符串常量,是指由双引号括起来的由一个或多个字符组成的字符序列。那么,字符常量和字符串常量由什么区别呢?从定义上来看:字符常量用单引号("),字符串常量用双引号ぐ’”);从大小上来看:字符常量是单个,而字符串常量至少ー个:•从存储上来看:字符串常量在存储时,系统自动在其尾部加一个“'0”,而字符常量没有。比如:匕’和"a"在内存中的存储格式分别如下:【例5】请问“hello”在内存中占的空间是多少?he1I〇\04,变量所谓变量,顾名思义,就是其值可以改变的量。变量在使用时,必须定义且初始化,定义的格式如下:く数据类型><变量名字乂,〈变量名〉};比如:inta;intb;intc;以上的定义方法等同于:inta,b,c;对于变量:定义的时候,数据类型决定了变量存储空间的大小和取值的范围。对于变量的名字:要求时合法的标识符。在变量定义的同时,也可以对其直接赋值。比如:Inta=3;Floatb=4.5;Chara='b';特别注意:变量在定义的时候,要放在程序的开头。[例6]请比较下面的程序main()main()(1inta,b=2;floatdata;a=l;data=(a+b)*2;printf(',data=%f\n,,,data);getch();}iinta,b=2;a=l;floatdata;data=(a+b)*2;printf("data"%f\n”,data);getch();)总结:从C语言基本数据类型的角度来看,常量有5种,而变量只有3种,分别时:整形变量(短整形、整形、长整形)、浮点型变量(单精度和双精度)、字符型变量。在C语言种,没有字符串变量,在C语言种字符串常量要用数组来存储。特别要求注意的是:由于字符变量在内存种是以ASCII来存储的(整数),故char和int、float可以进行算术运算。【例7写出一下程序的运行结果。#definePRICE12.5main(){intnum=3;

floattotal;charchl,ch2二'D';total=num*PRICE;chl=ch2-,A,+,a,;printf(utotal=%f,chl=%c\nM,total,ch1);getch();运行结果:【例8】:请□算inta;charch;【例8】:请□算inta;charch;a='D';ch=8+,0*;ch='E'+'a'/A’;ch=65;//a=68〃ch二‘8'//ch='e'〃ch二'A'5、运算符和表达式运算符是ー种程序记号,它简明的描述了计算机对数据的操作。由运算符和数据组成的符号序列就称为表达式。在C语言中,提供了丰富的运算符,序,但对于初学者来说,容易出错。c语言的运算符:有灵活、方面的特点,可以写出简练、高效的程C

符算术运算符关系运算符C

符算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符逗号运算符指针运算符求字节数*/%<==>&&11»〜I++—>=!==及其复合赋值运算符?:强制类型转换:(类型.)分量运算符:.->下标运算符:[]它:()等在C语言运算符的学习过程中,有几个注意点:运算符的功能(不同的运算符耍触发计算机不同的操作,比如“*”触发求枳的操作)与运算量的关系--ー要求运算量的个数(比如+-*/%等运算符要求两个操作数,有些运算符只需要ー个操作数)--ー要求运算量的类型(比如+-*/可以对整数或浮点数进行运算,%只能对整数进行运算)运算符的优先级别(先执行“优先级高”的操作)结合方向(如果碰到优先级ー样的情况,请按结合方向运算)结果的类型(就大不就小)算术运算符和算术表达式(1)基本的算术运算符在C语言中,提供了以下基本的算术运算符:单日运算符:-(负)ヽ+(正)双目运算符:+、ー、*、%対于基本算术运算符的优先级和结合性,请参照附录。时间久了,大家就有感觉了。(2)模运算符在C语言中,%称为模运算符(求余运算符),它要求操作数全部为整数,实践证明,它非常有用。例如:7%35%6(3)自增自减运算符在C语言中(其他语言也有),经常会看到i++,i-,这种东东就叫做自增自减运算符。作用:使变量值加1或减1种类:前置:++i,-i;(先运算,再用结果)后置:i++,i-(先用结果,后运算)【例9】运算j=3;k=++j; (k=4;j=4)j=3;k=j++; (k=3;j=4)a=3;b=5;c={++a}*b; (c=20;a=4;b=5)a=3;b=5;c=(a++)*b; (c=15;a=4;b=5)特别提醒:++ー不能用于常量和表达式;如:5++,(a+b)++关系运算符和关系表达式在C语言中,提供了6个关系运算符:<><=>===!=在以上关系运算符的运用过程中,有一下的特点:关系运算符都是双目运算符,遵循从左到右结合的原则;==和!=的优先级别比其他的关系运算符要略低:关系运算符要求两个操作数,其结果是int类型,有两个数表示结果(用1表示真,用〇表示假)【例10]c>a+b;//c>(a+b);a>b!=c;//(a>b)!=c;a==b<c;//a==(b<c)a=b<c;//a=(b<c)【例11】求结果inta=3,b=2,c=l,d,f;TOC\o"1-5"\h\za>b; (1)(a>b)==c; (1)b+c<a; (0)d=a>b; (1)f=a>b>c;(0)特别提醒:在关系运算符的运用过程中,有一些常用的情况发生,总结如下:情况ー:若a=0;b=0.5;x=0.3;则av=x<=b的值为多少?(0)情况二:5>2>7>8在C语言中是允许的:情况三:在程序设计过程中,经常使用关系运算符的运算结果;inti=l,j=7,a;a=i+(j%4!=0);则a=2情况四:字符数据的比较按其ASCII进行。'a'v'b' 'a'>0 lA>>100情况五:应该避免对浮点数做关系运算。原因:由于计算机存储上的误差,会出现错误的结果。如:1.0/3.0*3.0==1.0应该改成:fabs(l.O/3.O*3.O-l.O)<le-6情况六:注意区分“="和“=="inta=0,b=1;if(a=b)printf("a=b");elseprintf("a!=b");5.3逻辑运算符和逻辑表达式在C语言中提供了3个逻辑运算符:&&(逻辑“与”)II(逻辑“或”)!(逻辑“非”)在中学学过,大家一起来填ー张表:ab!a!ba&&ballb真真假假真真真假假真假真假真真假假真假假真真假假注意:在C语言中,用〇表示段,用“非〇"表示真,关系和逻辑表达式的运行结果只有两个(1或0);在逻辑运算符中,!的级别最高,依次是&&和II比如:我感觉a<=x&&x<=ba>b&&x>ya==bllx==y!alla>b【例12]请计算结果a=4;b=5;TOC\o"1-5"\h\z!a (0)a&&b (1)allb (1)!allb (1)4&&0II2 (1)5>3&&2H8<4-!0 (1)(1)在C语言逻辑运算符的学习过程中,有一个难点和重点,就是&&和II的短路特性。何为短路特性:&&和II是短路运算符,在进行逻辑表达式求解时,并非所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,オ执行该运算符。比如:a&&b&&c〃只有a为真时,オ运行后面的(逢假就断)allbllc 〃只有a为假时,オ运行后面的(逢真就断)x=y=z=l;++xll++y&&++z; 〃结果:x=2,y=l,z=lx=y=z=l;++x&&++yll++z; 〃结果:x=2,y=2,z=l【例13】请填空TOC\o"1-5"\h\z1、设x、y、z、t均为血型变量且初始值均为1,则执行语句t=++xll++y&&++z;后,x的值为2 ,v的值为I,z的值为1 ,t的值为1 。2、设x、y、z、t均为int型变量且初始值均为1,则执行语句t=(++xll++y)&&++z;后,x的值为2 ,v的值为1 ,z的值为」,t的值为1 。3、设x、y、z、t均为int型变量且初始值均为〇,则执行语句t=++x&&++yll++z;后,x的值为1 ,v的值为1 ,z的值为3,t的值为‘〇4、设x、y、z、t均为int型变量且初始值均为〇,贝リ执行语句t=++x&&++y&&++z;后,x的值为1 ,y的值为1 ,z的值为1 ,t的值为1 05、设x、y、z、t均为int型变量且初始值均为-1,贝リ执行语句t=++x&&++y&&++z;后,x的值为〇,y的值为-1 ,z的值为-1 ,t的值为〇〇6、设x、y、z、t均为int型变量且初始值均为ー1,贝リ执行语句t=++x&&++yll++z;后,x的值为O,v的值为ー1,z的值为〇,t的值为〇。

7、设x、y、z、t均为int型变量且初始值均为-1,则执行语句t=++xll++y&&++z;后,x的值为O,v的值为0 ,z的值为ー1,t的值为。5.4赋值运算符和赋值表达式(1)简单的赋值运算符和赋值表达式在C语言中,用可爱的“=”构成赋值运算符和赋值表达式比如:a=3;d=fun();c=d+2在此过程中,千万不要出现:3=x-y*3;a+b=3;以上是非法的,要注意避免,千万不要把中学的习惯带进来。在进行赋值运算时,赋值号右边表达式值自动转化成其左边变量的类型。比如:Floatf;IntI;1=10;F=l;则:f=10.0;在学习的过程中,经常有好事者问表达式的值(典型的中国特色,以考试为主,以考倒人为乐),遇到这样问题时,请记住一句话:表达式的值就是被赋值后变量的值。比如:a=b=c=5; 〃表达式的值5,a,b,c的值为5;a=(b=5); 〃表达式的值5,a,b的值为5;a=5+(c=6) 〃表达式的值11,a,的值为ll,c=6;a=(b=10)/(c=2)〃表达式的值5,a=5,b=IO,c=2;(2)复合赋值运算符在使用的过程中,经常会看到在基本赋值运算符''="的前面有其他的运算符,从而形成了复合的赋值运算符。据说这种方法好处多多,可以提高编译效果,简化程序。比如:a+=3;b-=6;x*=y+8;y%=3

a+=3;b-=6;x*=y+8;y%=3

在使用的过程中,//b=b-6//x=x*(y+8)//y=y%3我们不强求,一切以你的喜好为准。5.5逗号运算符和逗号表达式看下面的表达式:a=3*5,a*4;看下面的表达式:a=3*5,a*4;a=3*5,a*4,a+5;//a=15,表达式=60//a=15,表达式=20大家看到以上的表达式时,千万不要晕,它的运算法则非常简单:逗号表达式的值,等于最后ー个表达式的值。【例14]计算表达式的值x=(a=3,6*3) 〃x=18,表达式=18x=a=3,6*a //x=3,表达式=18关于逗号表达式,不希望大家多用,容易乱,要求大家能看懂并能应付考试就可以了。6条件运算符和条件表达式在编制选择程序时,会遇到ー些情况,比如:If(a>b)max=a;elsemax=b;以上的程序,用到了if,大家可以看懂。遇到这样的问题时,可以使用C语言唯一的一个三目运算符(条件运算符),为了便于大家记忆,我经常把该运算符称为“变态运算符”,如果采用该运算符,上面的程序可以改写成:Max=a>b?a:b;Max=max>c?max:c;条件运算符和条件表达式在后面的学习要用到,在这里拿出来,主要时为了学习内容的系统性。6、各种数值型数据之间的混合运算从上图可以看出,int,float,char数据之间可以进行混合运算,至于如何运算,记住两点就可以了:Char类型数据在计算机中是以ASCII存储的,实际上是整数,这就是它能参与数据运算的原因所在。就大不就小的原则(谁大谁厉害)好了,到此为止,我们学习C语言的第一个‘‘痛点”就渡过了,以后的学习,就可以使用计算机边学边练了。第四章基本的输入输出和简单的程序设计在C程序设计中,经常会遇到输入输出的问题。输入:从输入设备(键盘、鼠标、扫描仪)向计算机输入数据:输出:从计算机向外部输出设备(显示器、打印机)输出数据;在C语言中,无!/O(没有输入输出的语句),I/O的实现均通过C的库函数。学习C语言的输入输出,只需要学会相关函数的使用就可以了。在C语言中,有一批标准的输入输出函数,在使用的时候,要将有关函数的信息库(以.h为扩展名,常被称为头文件)在程序的开头用#include命令包含进来,包含格式有两种:第一种:#include<stdio.h>第二种:include“stdio.h"1、常用的输出函数在C语言中,常用的输出函数有2个:字符数据的输出:putchar(ch);格式化数据的输出:printf();字符数据的输出函数格式:intputchar(charch或转义字符)功能:把字符ch输出倒显示器上;参数:ch为字符常量、变量或表达式;返回值:正常,为输出的ch。出错:为eof(・l)【例1】 横向输出love#includeMstdio.h"main()(chara=T,b='o,,c='v;d=,e';putchar(a);putchar(b);putchar(c);putchar(d);getch();【例2]竖向输出loveinclude“sldio.h”main()(chara=,r,b=,o,,c='v\d=,e,;putchar(a);putchar('\n');putchar(b);putchar(An,);putchar(c);putchar('\n');putchar(d);putchar(\n,);getch();}格式化数据的输出函数格式:printf(控制字符串,参数1,参数2 )功能:按控制字符串,将参数转化成一定的格式输出:返回值:正常,返回输出的字节数;出错:eof(-l)说明:参数:合法的表达式,可以缺省;控制字符串:包含两种信息-一格式说明:%【修饰符】转换字符,用于指定输出格式;-普通字符:包含转义字符,原样输出(或执行)主格式说明;d十进制整数inia=567;piintf(“。そ’,a);567x,X十六进制无符号整数inia=255;printfl22ix".a);ff0ハ进制无符号整数inia=65:prints二%0;a);101u不带符号十进制整数inia=567;pnnifl“%ur,a);567c单个字符chara=65:printfl^^cl'.a);As字符串prinR%s”,“ABC”);ABCe,E指数形式浮点数(5)floata=567.789;printfi22ier,a);5.67789e+02f小数形式浮点数(6)floata=567.789;printfl二%口a);567.789000ge和件较短ー种fl03t3=567.789;primfi二%g二a);567.789注意:转换字符决定数据的输出类型;转换字符与输出项的个数应该相同,按先后顺序ーー对应;转换字符与输出项类型不一致,自动按指定个数输出;【例3】include"stdio.h"main()(inta=5,b=6;floatc=5.6,d=7.5;chare='a',f='o';intsuml=a+b;floatsum2=c+d;printf("%d\n",suml);printf("%f\n",sum2);printf("%c",e);printf("%c",f);printf("mygod");

getch();}附加的格式说明:修饰符切 オ巨m榆出数据宽度,数据长度くm,左补空格;否则按实际榆出.n続度,对实数.指定榆出n位小数(四舍五人)对字符串,指定截取的字符个数-按左对齐方式输岀(稜省右对齐)0输・出数值时在其左边用〇填充以达到指定或缺省数据宽摩1在d,〇,x,u前,指定输出为long型在e,f,目前,指定榆出为double型通过具体实例:【例4】整型数输出inta=1234,longb=2269978;printf(、、%dA\n",a); //1234Aprintf(''%8dA\nw,a); // 1234Aprintf(、、%-8dA\n",a); //1234Aprintf(''%08dA\nw,a); //00001234Aprintf(''%81dA\n",b); //2269978A【例5】整型数输出longa=65536;printf(''%81d,%d\n,z,a,a);【例6】printf(''%81d,%d\n,z,a,a);【例6】多种类型转换inta=123;printf(''%d,%o,%X\n”,a,a,a)【例7】浮点数输出floatf=123.456;printf(、、%f\n”,f);printf(''%010.2f\n",f);printf(«%5.2f\nw,f);printf3e\n",f);【例8】字符输出//123,173,7B//123.456000//0000123.46//123.46// 1.23E+02 ????//W,87//87,W//w ,w//I23456789//12345678// 12345678charc='W';inti=87;printf(''%c,%d\n”,c,c)//W,87//87,W//w ,w//I23456789//12345678// 12345678printf(、、%-5c,%5c\n”,c,c);【例9】字符串输出printf(、、%s\n","123456789");printf(''%.8s\n",''123456789");printf(''%12.8s\n",''123456789");printf(',%-12.8s\n",''123456789"); //123456782、常用的输入函数在C语言中,提供了2个常用的输入函数:字符数据的输入:getchar(void)格式化数据的输入:scanf().1字符数据的输入函数格式:intgetchar(void)功能:从键盘读取一个字符返回值:正常,返回读取的字符;错误,返回eof(-l)【例10】写出程序的运行结果#include"stdio.h"#include"conio.h"main()(intc;printf("pleaseinputachar:");c=getchar();printf("%c >hex%x\n",c,c);getch();.2格式化数据的输入函数格式:scanf(控制字符串,参数1,参数2,参数3….…)功能:从键盘读入数据,控制字符串用来指定格式,并将结果存到相应的变量中(存储单元)。返回值:正常,返回输入数据的个数。出错返回。.说明:参数:变量的地址控制字符串:包含两种信息-一格式说明:%【修饰符】,用来指定输入数据的格式和类型:ー普通字符(不能是%),输入时原样输出;转换字符:d,O,s,c,s,f,e;【例11】基本包#include"stdio.h"include"conio.h"main(){inta;floatb;charc;printf("pleaseinputanumber<int>:n);scanf(H%dM,&a);printf("pleaseinputanumber<float>:n);scanf(H%f;&b);printf(Hpleaseinputanumber<char>:M);scanf(M%cM,&c);printf(ua=%d,b=%f,",a,b);getch();}(以上程序红色部分实际上运行了,它把回车看做了一个字符)辅助格式:修饰符功 能1h用于d,〇,x前,指定输入为short型整数1用于d,〇,x前,指定输入为long型整数用于e,f前,指定输入为double型实数m指定输入数据宽度,遇空格或不可转换字符则结束*抑制待,指定输入项读入后不赋给变量【例12I数据的截取Scanf(**%4d%2d%2d'\&jj,&mm,&gg);输入:19991024请问:jj=1999 mm=10 gg=24在使用该函数进行多个数据的输入时,常常辅之于分隔符,对于分隔符,要注意:一般以空格、TAB或者回车作为分隔符;如采用其他字符做分隔符,格式串中两个格式说明符之间的其他字符,在输入时要原样输入;字符型数据,输入时不能有分隔符,否则分隔符会被当作有效字符被输入;输入数值数据时,碰到ー下情况,认为该结束了:一遇到空格、TAB或回车;-一遇宽度结束;-遇非法输入;【例13】写出一下程序的输入结果#include"stdio.h"#include"conio.h"main()inta,b,c;scanf(H%d%o%x';&a,&b,&c);printf(”a二%d,b二%d,c=%d");getch();)输入:123123123_输出:」23,83,291 [例14]字符输入Scanf(t4%c%c%c,&cI,&c2,&c3);若输入:abe;请问:cl二'a‘c2="c3='b';【例15I多数据输入Scanf(%d%c%f',&a,&b,&c);若输入:1234al230.26则:a=1234b='a'c=1233、简单C程序设计【例16]求长方形的面积(要求,输入两边的长,求面积)includenstdio.hH#include"conio.h"main()(floata,b,area;printf(upleaseinputtwonumber<float>:H);scanf(n%f,%f;&a,&b);area=a*b;printf(HThearea二%5.2F',area);getch();作业:1、求三角形、圆、椭圆的面积;2、求圆柱、圆锥的体积;3、从键盘输入小写字母,输出大写字母;4,交换两个变量的值;第五章分支结构程序设计分支结构是程序设计的三种基本结构之一,也被称为选择程序设计,在日常的编程过程中经常遇到,很重要。1、分支程序的基本结构二分支选择结构多分支选择结构2、基本分支语句及程序设计在C语言中,使用if语句来完成基本的分支程序设计,它有三种形式。if语句的第一种形式lf(expr)statement【例1】输入两个数,请按大小顺序输出(从大到小或从小到大)第一步:寻找算法(解决问题的关键)(如果a<b,就交换)第二步:绘制流程图第三步:编制程序include“sldio.h"#include"conio.h"main()(inta,b,temp;print^^pleaseinputtwonumber<int>:*');scanf(H%d,%dM,&a,&b);if(a<b){temp=a;a=b;b=temp;}printf(,,%d,%dM,a,b);getch();)【例2】输入3个数,按顺序输出(从大到小,从小到大)#include"stdio.h"#include"conio.h"main(){inta,b,c,temp;printf("pleaseinputthreenumber<int>:H);scanf("%d,%d,%d”,&a,&b,&c);if(a<b){temp=a;a=b;b=temp;}if(a<c){temp=a;a=c;c=temp;}if(b<c){temp=b;b=c;c=temp;}prin氓"%d,%d,%d”,a,b,c);getch();【例3】输入4个数,按顺序输出(从大到小,从小到大)#include"stdio.h"#include"conio.h"main(){inta,b,c,d,temp;printf("pleaseinputthreenumber<int>:");scanf("%d,%d,%d,%d”,&a,&b,&c,&d);if(a<b){temp=a;a=b;b=temp;}if(a<c){temp=a;a=c;c=temp;}if(a<d){temp=a;a=d;d=temp;}if(b<c){temp=b;b=c;c=temp;}if(b<d){temp=b;b=d;d=temp;}if(c<d){temp=c;c=d;d=temp;}printf("%d,%d,%d,%d”,a,b,c,d);getch();请大家总结n个数顺序输出的规律。if语句的第二种形式If(expr)Statement1ElseStatement2【例4】输入两个数,打印最大的(最小的)#include"stdio.h"#include"conio.h"main()(inta,b;printf("pleaseinputtwonumber<int>:n);scanf("%d%d,',&a,&b);if(a>b)printf(nThemax二%d”,a);elseprintf(HThemax二%d”,b);getch();}【例4】输入两个数,打印最大的和最小的(用条件表达式)#include"stdio.h"#include"conio.h"main(){inta,b,max,min;printf("pleaseinputtwonumber<int>:n);scanf(n%d%dM,&a,&b);max二a>b?a:b;min二avb?a:b;printf(nThemax二%d,themin二%d”,max,min);getch();【例5】输入三个数,打印最大的和最小的(用if语句的第二种形式和条件表达式分别编写)如果纯用第二种形式,不好编(甚至编不出来),所以用条件表达式最好:#include"stdio.h"#include"conio.h*'main()inta,b,c,max,min;printf("pleaseinputthreenumber<int>:M);scanf(M%d,%d,%dM,&a,&b,&c);max=a>b?a:b;max=max>c?max:c;min=a<b?a:b;min=min<c?min:c;printf(uThemax=%d,themin=%dn,max,min);getch();if语句的第三种形式(嵌套)(1)嵌套的执行过程(过筛子)(2)嵌套的一般形式(重点)iffexnrnif(exprl) if(exprl)statement!elsestatement!ヽ丿j{if(exprl) ヨ内嵌if:statementl}:内嵌if elsestatementlif(exprl)statement!elseif(exprl)jif(exprl)statementも;else statement!以內嵌if(expr3)statement!elsestatementsヽノelse内般If :if(expr3)statement两:1 .‘ 内嵌H:else statement4J【例6】输入两个数,判断其大小关系。#include"stdio.h"includeHconio.hMmain(){intx,y;printf(upleaseinputtwonumber<int>:n);scanf(H%d,%d",&x,&y);if(x!=y)if(x>y)printf("x>y");elseprintf("x<y");elseprintf("x==y");getch();以上的程序使用了嵌套的第三种形式(变形体),请大家用其他形式编写该程序。if一和else的配对原则当发生嵌套的时候,有可能且一定会出现多个if和else。遇到这种情况的时候,一定要分清楚谁(if)和谁(else)是ー家子。If-else的配对原则:缺省{},else总是和它上面离他最近的未配对的if配对。看ー个图:(if(……>严(……)・fif(……).1-else else "else ,以上的图,展现了一种书写格式(锯齿状),希望大家以后的编程过程中认真采用。在配对的过程中,要注意:书写格式不能替代程序逻辑:分不清的时候,可以用加{}的方式予以界定;[例7] if(a==b)if(b==c)printf("a==b=c'');elseprintf("a!=b");问题:谁和谁配对?修改:if(a==b){if(b==c)printf(44a==b==cM);)elseprintf(44a!=b^^);else和if要配对使用;if后面的表达式类型任意;【例8】不同类型if(a==b&&x==y)if(3)if('a')if(a=2)if(s=2,s<0) 可以采用(推荐)复合语句;【例9】If(x<y)if(a<b)(r=a*a-b*b;s=a/b;)else(r=b*b-a*a;s=a/b・4;)ElseSkjfklsjdfklsjfkl等同:If(x<y)(Akldjfakljdf)ElseSkjfklsjdfklsjfkl•同一个条件可以用多种表达式;【例10]if(x)======if(x!=0)if(!x)======if(x==0)【例1丄】写出程序旳运行结果#include"stdio.h"#includeuconio.h"main()(intx,y;scanf(M%d,%d*',&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(M%d,%dM,x,y);getch();)运行结果:错了,没有结果;修改:#includeustdio.hM

#include"conio.h"main()(intx,y;scanf("%d,%d",&x,&y);if(x>y){x=y;y=x;}else{x++;y++;}printf(H%d,%d\x,y);getch();【例12]求分段函数/(X)=0(x<0)2x+l(x>0)的值。用if语句:#include"stdio.h"#include"conio.1Tmain()(intx,y;printf(upleaseanumber:");scanf("%d",&x);if(x<0)y=0;elsey=2*x+l;printf("%d",y);getch();1用条件表达式:#include"stdio.h"#include"conio.h"main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);y=x<0?0:2*x+l;printf("%d",y);getch();J1(%ヰ0)【例!3I求分段函数/(尤)=<_1(%=〇)的值#include"stdio.hM#include"conio.h1'main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);if(x)y=l;elsey=-l;printf("%d",y);getch();[例14]_习题5.5#include"stdio.h"#include"conio.h"main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);if(x<l)y=x;elseif(x>=10)y=3*x-ll;elsey=2*x-l;printf("%d",y);getch();3、多分支语句及程序设计3.1switch语句的一般形式Switch(表达式)(casev常量表达式く语句序列1>caseく常量表达式2>:〈语句序列2>casev常量表达式3>:く语句序列3>caseく常量表达式4>:く语句序列4>caseく常量表达式5>:く语句序列5>case〈常量表达式く语句序列n>default:<语句序列〉具体的执行过程:请回想刚才我的现场举例。[例15]ー个典型的应用#include"stdio.h"#include"conio.h"main()(intx;scanf(H%dM,&x);switch(x)(casel:printf(nIloveyou1');case2:printf(HIbuloveyou**);case3:printf(nIveryfeichangloveyou");case4:printf("Iveryverybuloveyou");default:printf("Idon'tknow");}getch();2使用switch语句注意点常量表达式只能起到标号的作用,跳出必须使用break语句;【例16]ー个典型的应用#include"stdio.h"include"conio.h"main(){intx;scanf(H%dM,&x);switch(x){case1iprintfC*1loveyou");break;case2:printf(nIbuloveyou1');break;case3:printf("Iveryfeichangloveyou");break;case4:printf(nIveryverybuloveyoun);break;default:printf(MIdon*tknow*');}getch();case后面是常量表达式(建议大家使用整数或字符表达式),且值必须互不相同【例17】一个典型的应用#include"stdio.h"#include"conio.h"main(){intx;scanf(M%d",&x);switch(x)(casel:printf(nIloveyouM);break;case2:printf(uIbuloveyou°);break;case2:printf(nIveryfeichangloveyou");break;case3:printf(uIveryverybuloveyoun);break;default:printf(nIdon'tknow");}getch();)编译错误(重复定义)main(){intx,y=l,t=2;scanf("%d",&x);switch(x)(casel:printf("Iloveyou");break;case2:printf("Ibuloveyou");break;casey4-t:printf("Iveryfeichangloveyou");break;case4:printf("Iveryverybuloveyou");break;default:printf("Idon'tknow");}getch();)case后面要有空格case后面可包含多个执行语句,且不用加{卜【例18】一个典型的应用main()(intx,y=l,t=2,m;scanf(M%d'\&x);switch(x)(casel:printf(HIloveyouH);break;case2:printf(,,Ibuloveyou");printf("akldjfklajdflkajsdklfjasdklf');m=y+t;printf(M%dM,m);break;case3:printf(nIveryfeichangloveyou");break;case4:printf(nIveryverybuloveyoun);break;default:printf(MIdon'tknow1');}getch();多个case语句可以共用ー组执行语句Switch可以嵌套【例19]一个典型的应用main()(intx=0,y=2,z=3;switch(x+l)(casel:switch(y==3)(casel:printf("&&");case2:printf("ur*);}case2:switch(z)(casel:printf("$$H);case2:printf(,******n);case3:printf(M%$%$");})getch();•Switch语句完全可以不用,用if就可以全部完成其功能;【例20】请自行设计ー个自动饮料机屏幕选择功能(流程图如下)main()intchoice;printf("========================欢迎使用天山牌自动饮料机========================\n");printf("请选择饮料:'n");printffl.雪碧'n");primf("2.可乐'n");printf("3.啤酒'n");priinf("4.伊カ老窖'n");printf("5.香飘飘奶茶'n");scanf("%d",&choice);switch(choice)(case1:printf("雪碧透心凉");break;case2:printf("可乐,激情无限");break;case3:printf("人类没有啤酒,世界将会怎样)break;case4:primf("喝完老窖,老鼠找猫”);break;case5:printf("奶茶,我要香飘飘ッ;break;default:printf("对不起,你选择的饮料未经法律许可,不能出售");getch();【例21】用switch语句编程,根据成绩打印出等级。main(){intscore,temp;printf(”请输入成绩:”);scanf("%d,',&score);if(score=100)temp=9;elsetemp=score/10;switch(temp)(case0:case5:printf(“不及格”);break;case6:primf("及格");break;case7:case8:printf(“良好");break;case9:printf(”优秀”);break;default:printf(”非法操作”);)getch();}第六章循环结构程序设计1、循环结构使用一定的条件让ー个程序执行若干次,循环结构也叫重复结构,可以完成重复、规律性的操作。2、基本的循环语句(重点)在C语言中,有4种语句可以构成循环。Goto、while,do-while,for2.1goto语句【例1】请编写程序,求z〃的值。main(){inti=l;longsum=0;repeat:if(i<=1000){sum=sum+i;i++;gotorepeat;)printf("sum=%ld",sum);getch();} 要求:能看懂别人的程序就可以了,不要求会用。2.2whiIe语句一般形式:whileく表达式〉〈语句序列〉注意点:先判断条件,后执行循环体;循环体有可能一次也不执行:循环体可以为任意类型的语句;什么条件下跳出循环?1、条件不成立(为假);2、循环体内遇到;breakreturngoto【例2】请用while编写程序,求Z”的值。〃=1main()(inti=l;longsum=0;while(i<=1000){sum=sum+i;i++;)printf(Hsum=%ldH,sum);getch();[例3]>Rn!(n=l-8)main()inti=l;longsum=l;while(i<=8)(sum=sum*i;i++;}printf(Hsum=%ldH,sum);getch();2.3do-whiIe语句一般的形式:do{循环体)whilev表达式》;(千万不要忘记我:)【例4】请用do-while编写程序,求エ”的值。main()inti=l;longsum=0;do{sum=sum+i;i++;}while(i<=1000);printf(,'sum=%ld,',sum);getch();注意:在使用while和do-while语句执行同・个任务时,要注意初始条件。对于while语句来说,有可能一次循环也不执行;但对于do-while语句来说,不管初始条件成不成立,均至少执行・次。【例5】请比较以下程序程序ー:main()inti=1001;longsum=0;while(i<=1000)sum=sum+i;i++;)printf("sum=%ld",sum);getch();}程序ニ:main(){inti=1001;longsum=0;do{sum二sum+i;讦+;}while(i<=1000);printf(Hsum=%ldM,sum);getch();J 【例6】统计输入的整数个数(遇到“时结束,不在统计之列)程序ー:用do-whilemain(){intnum;intsum=0;do{printf("pleaseinputanumber:");scanf("%d",&num);sum++;}while(num!=-l);printf("sum=%d",sum-1);getch();}程序二:用whilemain(){intnum;intsum=0;while(num!=-l){printf("pleaseinputanumber:");scanf("%d",&num);sum++;}printf(',sum=%d'\sum-1);getch();4for语句一般形式:for(exprl;expr2;expr3)〈语句〉【例7】请用for编写程序,求>,〃的值。«=1main(){inti;longsum=0;for(i=0;i<=1000;i++)sum=sum+i;printf(,,sum=%ld',,sum);getch();}特别提醒:for中的exprl-expr3类型任意,均可以省略,但是;不能省略for(;;);for可以转换为while或者dowhile;exprl时初始化表达式,expr2是条件表达式,expr3是修正表达式;注意for的多样性;[例8]编写程序,在屏幕上输出26个字母(小写)第一种形式:第二种形式;(省略exprl)#include"stdio.h"main()(inti;for(i=0;i<26;i++)printf(“%c",'a'+i);#include"stdio.h”main()(inti=0;for(;i<26;i++)printf(“%c",'a'+i);getch();)getch();)第三种形式:(省略expr3,exprl)第四种形式:(省略exprl,打印语句)#includeustdio.hMmain()(inti=0;for(;i<26;)printf(,'%c";a'+(i++));#include"stdio.h"main()(inti=0;for(;i<26;putchar(*a'+i),i4-+);(注意空语句)

getch();}getch();)3、循环嵌套所谓循环嵌套,是指循环体中包含循环语句。在嵌套的过程中,三种循环语句可以互相嵌套,层数不限。外循环可以包含多个内循环,但是不能交叉。【例91_在屏幕上打印5_行5_列的“*”。第一种:用for#include"stdio.h"main(){introw,col;for(row=1;row<=5;row++){for(col=l;col<=5;col++)printf(n*H);printf(M\nH);}getch();}第二种:用whil

温馨提示

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

评论

0/150

提交评论