二级c语言新教案_第1页
二级c语言新教案_第2页
二级c语言新教案_第3页
二级c语言新教案_第4页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

必备基础:第一部分:进制转换♦二进制:由0~1构成,逢2进1TB11B»3八进制:由0~7构成,逢8进19Q 11Q»9十进制:由0〜9构成,逢10进19D十六进制:由0~9、A〜F构成,逢16进19H 11H->17»两个基本概念基数:n进制基数为n111.11D=1X1O2+1X1O1+1X1O0+1X1O,+1X1O2位权:小数点左边第k位位权为:基数k“小数点右边第k位位权为:基数k»进制转换.其他进制分十进制(按权展开求和法)123.45D=lX102+2X10i+3X10°+4X101+5X10”11OO1.11B=1X24+1X23+1X2°+1X21+lX22=16+8+1+0.5+0.25=25.75D123.4Q=lX82+2X8,+3X8°+4X8,=64+16+3+0.5=83.5D123.4H=1X162+2X161+3X16o+4X16=256+32+3+0.25=291.25D.十进制)其他进制“整数部分:基数除法,倒序取余。»小数部分:基数乘法,顺序取整。76.375D=1001100.011BTOC\o"1-5"\h\z=114.3 0=4c.6 H276 0.375X2=0.75 038---0 0.75X2=1.5 119---0 0.5X2=l 19——14……12……01……00 18 76=114Q 0.375D=0.3Q9---4 0.375X8=3……31……10……116 76-4CH 0.375D=0.6H4—-C 0.375X16=6 60——43.其他进制之间的互相转换1)二进制与八进制(3位二进制与1位八进制一一对应“421”)TOC\o"1-5"\h\z00090 1009400191 101^5010T2 11096011->3 111+7001,100,001B^141Q 001,000,001B-»101Q00,110,001B^61Q753Q9U1101011B2)二进制与十六进制(4位二进制与1位十六进制一一对应“8421”)00009() 1000^8000191 100199001092 1010^A001193 lOll^B010094 1100-»C010195 HOl^D011096 lllO^E011197 llll^F0111,1101,1110B^7DEH01100001BT61H 01000001BT41H6A7DH=0110101001111101B3)八进制与十六进制第二部分:数据表示一、整型数据的分类:无符号整型数据:所有位均表示大小。N位无符号整型数据表示的取值范围为:。〜2,1带符号整型数据:最高位表示符号:0为正、1为负。)常用原码、反码、补码表示。正数:三码同一。例:已知x=+76D,写出x的三码表示(8位)解:x=+76D=+100H00B因为x>0所以:[x]原=[x]反=[x]补=01001100B例1:已知x=-76D,写出x的三码表示(8位)解:x=-76D=-1001100B[x]JM=l1001100B[x]反=10110011B[x]补=10110100B例2:已知:因原=[丫]反=[z]补=1100例11B,求出x、y、z的大小关系。[x]原=11001011B * x=-1001011B[y]反=11001011B»[y]原=10110100B ♦ y=-Oil0100B[z]#=110010HB»[z]原=10110101B ♦ z=-OH0101B所以:y>z>x8位原码的取值范围:11111111B〜0111HUB即-q7-l)〜27-l-127D〜+127D[+0]原:00000000B[-0]原:10000000B8位补码的取值范围:10000000B〜011111HB即-27〜27-1-128D-+127D♦N位补码的取值范围:-2叩~2阳-116位补码整数的取值范围:-32768〜+32767一、程序、程序设计和高级语言.程序的概念。程序是用某种计算机能理解并执行的计算机语言描述解决问题的方法步骤。.程序设计的任务和主要步骤。程序设计是记录解决问题的方法步骤的过程。程序设计的主要步骤:输入数据(可以没有);数据处理;输出结果(至少)o.高级语言的概念与作用。高级语言是面向问题和算法过程描述的语言,也可称为“面向问题的语言”。高级语言可以让程序员方便地利用它去编写出解决各种问题的计算过程并通过计算机的运行得到用户所期待的结果。二、C程序的特征C程序是由一个主函数和若干个非主函数构成的。并且程序的执行只能从唯一的主函数开始并在主函数中结束。程序中的非主函数必须在主函数中通过直接或间接的调用才能得到执行。非主函数之间可相互调用,但非主函数不能调用主函数。为了增加程序的可读性,通常在语句的后面加上相应的注释。注释部分通常以"/* 注释信息*/”格式存在。三、C语言的字符集C语言的字符集主要包括基本字符和转义字符。(1)基本字符有:大小英文字母、数字字符、键盘符号。'A'T,@'(2)转义字符是由“反斜杠字符(\)”打头后跟单字符或若干字符组成的,通常用于表示控制符与一些特殊符号,也可表示键盘字符。应记住下面的几个常用的转义字符:★'\n'回车换行符(输出结果时起到换行的作用)。党Tab符号(输出结果时使光标跳到下一个输出区的首列。即第1歹k第9列、第17列、…、第73列。V"表示双引号、'\"表示单引号、N表示反斜杠。Mdd,以1到3位的八进制ASCII码对应的字符。\xhh,以1到2位的十六进制ASCII码对应的字符。ASCII码:用7位表示(共计128个字符),存放时占8位(1字节,最高位添0)A-Z 65-90 'A'O65A-Z 65-90 'A'O65a~z 97-122 'a'O970~9 48-57 'O'O48'\0'O00110000101,100,001 M41' '\x61'0011000000,110,000 '\60' '\x30''O'*2=96 0*2=0 '\0'*2=0四、C语言中的保留字支在C语言的程序中有特殊含义的英语单词称为“保留字”,又叫关键字,主

要用于构成语句,进行存储类型和数据类型的定义。如:ifelsedowhile等等。五、标识符★C语言规定,标识符是由字母、数字、下划线组成的一串符号(数字字符不能打头),ANSIC规定标识符长度不得大于32个字符,而PC机中通常是前8个字符有效。标识符包括保留字与用户标识符。用户标识符是用户自定义的一种字符序列,通常用来表示程序中符号常量、变量、数组、函数等对象的名字。用户标识符不能与保留字同名。a33aifdo中非法的标识符是3aa33aifdo中合法的用户标识符是a3第2章数据与运算符一、常量(整型、实型、字符型、字符串).整型常量⑴整型常量的三种表示:①十进制整数。通常整数的写法。例如:0、-111,+15、21等。②八进制整数,书写方法是在通常八进制整数的前面加一个数字0。例如例11的值为9,023的值为19o③十六进制整数书写方法是在通常十六进制整数的前面加Ox。例如例xll的值为17,0x23的值为35。0101的值为:65 1101的值为:十进制的1101二进制1101应表示为:015或Oxd或13(2)整型常量的分类:①短整型常量:占用2个字节,数值范围都是-32768〜+32767。②长整型常量:占用4个字节,数值范围都是々31〜+23」。书写时在整数的末尾要加上后缀,小写字母“1”或大写字母“L”。例如:23L,023L,0x23L都是长整型常量。20与20L大小相等,只是占据的存储空间大小不同。000000000001010020L:00000000000000000000000000010100.实型常量实型常量只使用十进制数表示,它的书写方法有两种:(1)一般形式它是由正负号、0〜9、小数点组成,其整数部分或小数部分可以省略。例如:-12.345、.5等都是实型常量。.500.5⑵指数形式①“尾数e指数”或“尾数E指数”,其数值为“尾数*10指数二尾数可以是整型或实型常量,指数必须是整型常量。例如:12.345e-2、-1.2345E3、0.12345e4、-12345E-3等都是实型常量。以下常量中非法的是()Ale-1B2e+2C3e0.5D.5e6②实型常量在一般的微型机中占用4个字节,数值范围是-1038〜1()38,有效数字是7位。书写一个实型常量时,要注意它的有效数字。例如:1.23456789和1.234567是相同的,因为实型常量的有效数字是7位,所以1.23456789中的后两位数字是无效的。.字符常量①字符常量是以单引号为定界符表示的,包括基本字符与转义字符。例如:豆、‘A'、7、3'、'101'、"4r都是字符常量。②C语言规定:0〜127之间的整数值可以与字符型常量等价。例如:整型常量48、65、97可以分别与字符常量U、A,、豆等价。"a'+2O97+2.字符串常量①字符串常量简称为“字符串",以双引号为定界符。例如:"abc","ab\ncd"都是字符串。②C语言规定,字符串中的字母是区分大小写的,所以"ab"和"AB"是不同的字符串。③一个字符串中有效字符的个数称为该字符串的长度,其中每个转义字符只算一个字符。例如:字符串"abc"、"ab\ncd"的长度分别为3、5.④C语言规定,每个字符串在内存中占用的字节数=字符串的长度+1。其中最后1个字节用于存放字符串的结束符'0'。因此,言与"a"是不同的。存平形式为01100001"a"存放形式为0110000100000000例如:字符串"abc"、"ab\ncd"的字节数分别为4、6。二、变量”实质是一个存储单元,作用:用于存放某个常量。变量是指在程序运行过程中其值可以发生变化的量。通常是用来保存程序运行过程中输入的数据、计算获得的中间结果和最终结果。变量的取名规则同用户标识符,其中的英文字母常用小写。当程序运行时,每个变量都要占用连续的若干个字节的存储单元,所占用的字节数由变量的数据类型确定。其中第1个字节的地址称为变量的地址。C语言规定,程序中变量的地址是用“&变量名”来表示的。带符号短整型short2字节-32768〜+32767,带符号整型,带符号长整型long4字节々31〜+23」皿I带符号基本整型int2字节或4字节1型变量V”无符号短整型unsignedshort2字节0〜65535、无符号整型1无符号长整型unsignedlong4字节0〜232-1j无符号基本整型unsigned2字节或4字节注意:基本整型在小型机、微型机中等价于短整型,在大中型机中等价于长整型。型V+旬+以「单精度型noat 4字节7位有效数字-1()38〜[038实型变量<变■「I双精度型double8字节15〜16位有效数字-10308~10308量注意:double类型的数据具有精度高、范围大的特点。字符型变量:char1字节需要注意的是:.C语言中没有专门用于存放字符串的变量,字符串是用数组存放。如:charw[5]=Mloven;.每个变量必须先定义后使用。定义变量数据类型的语句格式如下:数据类型符变量名1,变量名2,…;例如:intab;/*定义整型变量a,b,c*/a=7;b=8;/*使用变量a、b分别存放7、8*/.每个变量均可在定义时赋初值(即变量的初始化)。inta=7,b=8; /*定义整型变量a、b并分别初始化为7、8*/U>inta,b;a=7;b=8;三、基本运算符★计算表达式值时,按照运算符的优先级由高到低依次计算,若有优先级相同的多个运算符,则按照自左向右或自右向左的顺序计算。注意:.每个运算符都必须考虑以下问题:功能、优先级别、结合性(即同级运算符之间的计算顺序)。.在c语言中,运算符按参与运算的数据个数可分为单目、双目和三目运算符。.运算符的一般规律:T单目运算符优先于双目运算符少所有单目运算符都是同等优先级别的T绝大多数单目运算符是自右向左的结合性(sizeof无结合性)分绝大多数双目运算符是自左向右的结合性(赋值为自右向左)分三目运算符是自右向左的结合性1.算术运算符(1)基本算术运算符 正号+负号-+-*/%①功能说明+7 -7 1+7除(/):整数相除商为整数。如:3/4的商为0,11/4的商为2。172.0^1.0/2.0^0.5模(%):即为求余运算,只有整型数据才能求余。求余规则:I余数1<1除数I、余数的符号与被除数一致。在C语言中进行异号数的求余时,可直接将被除数与除数的绝对值求余,然后根据被除数的正负决定余数的正负。如:3%4结果为3,-13%4结果为-1,13%(-4)结果为1。-13%(-4)结果为-1②优先级(正号+、负号-)优先于*、/、%优先于+、-8-5%316③结合性双目基本算术运算符的结合性是自左向右。3*6%4分2(2)自增(++)、自减(--)1)功能:变量++ ”先使用后增1”++变量”先增1后使用”例如:inta=3,b;今若执行6=2-;则b的值为3,a的值为2。f若执行b=--a;则b的值为2,a的值为2。a++;0++a;Oa=a+1; 但表达式++a与a++不等价。2)优先级与(正号+、负号-)同优先级。3)结合性:自右向左。例如:inta=7,b;b=-a++;等价于b=-(a++);使b为-7,a为8。例1.写出程序的输出结果。include"stdio.h”main(){inta=3,d;d=(a++)+(a++);printf("\na=%d,d=%d",a,d);}分析:d=(a++)+(a++);等价于:d=a+a;a++;a++;因此程序的输出结果为:a=5,d=6例2.写出程序的输出结果。include"stdio.h"main(){inta=3,d;d=(++a)+(++a);printf("\na=%d,d=%d”,a,d);}分析:d=(++a)+(++a);等价于:++a;++a;d=a+a;因此程序的输出结果为:a=5,d=102关系运算符<、<=、>、>=、==、!=关系运算符用于比较两个数据的大小,运算的结果若为“真”用整数1表示;若为“假”用整数0表示。①功能说明关系运算符可以用来比较两个数值或比较两个字符的大小。字符比较时是按该字符的ASCII码进行比较,其实质也是数值比较。如:3<4值为1,5<4值为0,—值为1。②优先级:算术运算符优先于关系运算符<、<=、>、>=优先于==、!=如:1+2<7-6值为0, 3>=4==5<60(3>=4)==(5<6)值为0③结合性关系最京符是自左向右的结合性。如:3<4<5O(3<4)<5值为1,5>4>3O(5>4)>3值为0注意:数学中的条件100Wx<200被描述为100<=x<=200是错误的。因为前者要求x的取值必须在100到200之间,而后者x可取到任何值。x>=100&&x<=2003逻辑运算符①功能说明逻辑非!是单目运算符。例如:!(3<4)为0。!3的值为0,!0的值为1。逻辑与&&-—,见假得假”表达式1&&表达式2x>l&&y>l要求x与y必须都大于1条件才成立。1&&3结果为1,1&&0结果为0逻辑或II---“见真得真” 表达式1II表达式2x>lIIy>l要求x与y中只要有一个大于1条件就成立。1II0结果为1,0II0结果为0②优先级:!优先于双目算术运算符优先于关系运算符优先于&&优先于II!和正负号是同级别的。!3*4+8结果为8,1>2&&7>8为04>3II5<6&&7>8II5<6 O(4>3)II(5<6&&7>8)II(5<6)为1。③结合性!的结合性是自右向左。例如:!!!3的计算顺序相当于!(!(!3)),结果为0。双目逻辑运算符&&、II的结合性是自左向右。注意:♦数学中的条件100WxW200被描述为100<=x<=200是错误的,正确的描述为x>=100&&x<=200o“用&&对两个表达式进行计算时,若第一个表达式的值为“假”,则结果与第二个表达式无关(不能计算第二个表达式的值),最终结果为0。(表达式1)&&(表达式2)例如:inta=3,b=4,c;执行完语句c=(a=0)&&(b=8): a为0,b为4,c为0。inta=3,b=4,c;执行完语句c=(a=2)&&(b=8); a为2,b为8,c为1。inta=l,b=4,c;执行完语句c=(--a)&&(--b);b为4。inta=l,b=4,c;执行完语句c=(a--)&&(b++);a为0,b为5,c为1。♦用II对两个表达式进行计算时,若第一个表达式的值为“真”,则结果与第二个表达式无关(不能计算第二个表达式的值),最终结果为1o (表达式1)11(表达式2)例如:inta=3,b=4,c;执行完语句c=(a=5)ll(b=8);c为l,a为5,b为4。inta=l,b=4,c;执行完语句c=(a--)ll(--b);b为4。4.位运算符位运算符分为两种:位逻辑运算符、位移位运算符。(1)位逻辑运算符位逻辑运算符是对数据的二进制代码中的每一位进行逻辑运算,而前面所讲到的逻辑运算符是将整个数据作为逻辑值(非0则为真,0则为假)进行运算的。①功能说明按位非〜取相反值按位与& 见0得0按位或I 见1得1按位异或(按位加)A 同则0,异则1例如:3: 0000000000000011 -4:1111111111111100~3: 1111111111111100->-4 -(-4):0000000000000011^3(〜n的结果为-(n+1)) !3的结果为0~1:-2~0:-13:0000000000000011&4:000000000000010000000000000000003&4结果为0 3&&4结果为16:000000000000011014:0000000000000100000000000000011016614结果为6 6114结果为16:0000000000000110入4:00000000000001000000000000000010126A4结果为2②位辑运算符的优先级:〜与其它单目运算符同优先级关系运算符>&>八>I>&&>11~3*2 结果为:-8 〜(3*2)分-73I4A5&6结果为:3 31(4人(5&6))③结合性〜是自右向左,双目位逻辑运算符是自左向右。•■•〜3O~(~3)结果为331415U>(314)15例.设intx=l;则执行printf("%x\n",~xAx);的结果是口A.OB.lC.ffD.ffff答案:D分析:〜x与x进行按位加的结果为二进制的代码为所以输出的十六进制结果为:ffff。⑵位移位运算符号»①功能说明a«n将a左移n位,结果为a*2,例如:女<2的结果为12。a»n将a右移n位,当a>0或a<0且a能被2n整除时结果为a/2\当a<0且a不能被”整除时结果为3/2七。例如:9»2的结果为2(9/4),-16»2的结果为-4(-16/4),-18»2的结果为-5(-18/4-1)。②优先级:双目算术运算符优先于<<>>优先于双目关系运算符3«2+1 仁3<<(2+1) T24③结合性:自左向右。3«2«10(3<<2)<<1O3«39»1«2916例如:设inta,b=10;执行a=b«2+l;后a的值是。答案:80分析:a=b<<2+1;等价于a=b«(2+1);b的值左移3位即扩大8倍,所以b〈〈(2+1)的值为80,因而a的值为80o5.赋值运算符(1)赋值运算符是双目运算符,共分三种:基本赋值运算符、算术自反赋值运算符、位自反赋值运算符。①基本赋值运算符=用法:变量=表达式; 将表达式的值赋给变量例如:intaa=7*8;a=a+l;②算术自反赋值运算符(将变量与表达式的值进行算术运算的结果反过来赋给变量自己)+=-=*=/—%=用法:变量*=表达式;0变量=变量*(表达式);例如:inta=3,b=4; a*=b+5;Qa=a*(b+5);使a的值为27。③位自反赋值运算符(将变量与表达式的值进行位运算的结果反过来赋给变量自己)&=1=八=«=»=用法:变量&=表达式;O变量=变量&(表达式);例如:inta=17;a&=0xfff0;=a=a&0xfff0;使a的低四位清0,结果为16。(2)赋值运算符的优先级别三类赋值运算符优先级别相同,仅高于逗号运算符。⑶结合性:均为自右向左。inta=6;a*=a+=a—=12;Oa—=12;a+=a; a*=a;Oa=a—12;a=a+a;a=a*a;a为144.逗号运算符 ,①功能说明表达式1,表达式2,…,表达式n今自左向右计算各表达式的值,并将最后一个表达式的值作为结果。a=(l+2,3+4);a为7a=(b=3,c=4); a为4 a=b=3,c=4;a为3d=(a=l,b=2,c=3);d为3 d=a=l,b=2,c=3;d为1②逗号运算符的优先级逗号运算符的优先级别最低。③结合性:自左向右。a=l;b=2;<^>a=l,b=2;<^{a=l;b=2;}inta=3,b=4,t;交换a与b的值:t=a,a=b,b=t;{t=a;a=b;b=t;}.条件运算符?:①功能说明“表达式1?表达式2:表达式3”的执行过程为:先计算表达式1并判断表达式1是否为真,若为真则计算表达式2并将表达式2的值作为最终结果(不计算表达式3),若为假则计算表达式3并将表达式3的值作为最终结果(不计算表达式2)o例如:inta=2,b=3,c=4,d;执行d=(a<5)?(b=9):(c=10);后,d为9,a为2,b为9,c为4。inta=2,b=3,c=4,d;执行d=a>5?(b=9):(c=10);后,d为10,a为2,b为3,c为10。inta=2,b=3,d;执行d=a>b?a:b;后,d为3。0if(a>b)d=a;elsed=b.②条件运算符的优先级:其它运算符优先于条件算术运算符优先于赋值运算符chara='y';a=a>='a'&&a<='z'?a-32:a;a为'Y'Oif(a>='a'&&a<='z')a=a-32;③结合性:自右向左。inta=4,b=5,c=6,d;d=a<b?a:b<c?b:c;^>d=a<b?a:(b<c?b:c); d为4inta=4,b=5,c=6,d;d=a<b?(a=7):b<c?(b=8):(c=9);Od=a<b?(a=7):(b<c?(b=8):(c=9));a为7b为5 c%6 d%7.长度运算符sizeof①功能说明sizeof(数据类型符或表达式)的值为给定数据在内存中占用的字节数。如:sizeof(short)的值为2 sizeof(k>ng)的值为4 sizeof(double)的值为8sizeof(9)的值为2 sizeof(9L)的值为4sizeof("short")的值为6sizeof(”ab\ncd”)为6.②长度运算符的优先级:长度运算符与正负号是同级别的。sizeof(12345)*4为8③结合性:无结合性。sizeof(sizeof(double))为2()单目H—++ !-sizeof>双目算术*/%>+—>位移位>><<>关系>>=<<=>==!=>双目位逻辑&>八>1>&&>11>?:>赋值>逗号结合性:右:1单目(除sizeof)2双目(赋值)3三目:条件左:双目(除赋值之外)五、不同数据类型的数据在计算和赋值时的类型转换原则(1)赋值时是以左边的变量的类型为标准。inta;a=B;Oa=66;例如:执行inta;floatb=9.9;a=b;之后,a的值为9。执行inta;longb=65535;a=b;之后,a的值为-1。b:oooooooooooooooomimi11111111a: mimimimi(2)在算术表达式的计算中,应以宽度较长的类型为标准,最终结果为较长的数据类型。■+1197+1198例如:a为long型、b为short型、c为double型,则a+b*c的结果为double型。1.0/2->1.0/2.0^0.5(3)在关系和逻辑表达式的计算中,应以宽度较长的类型为标准,但最终结果为整型(0或1例如:a为long型、b为short型、c为double型,则a>b*c的结果为整型。3.3>'a'-9593.3>97-9593.3>293.3>2.0~>1(4)在表达式的计算中,还可以用强制类型转换来实现数据类型的转换。强制类型转换的方法为:(数据类型符)(表达式)将表达式的值转换为给定的数据类型。例如:(int)(3.5+4.6)的值为8。(int)3.5+4.6的值为7.6T3+4.6今3.0+4.6今7.6(double)(7/4)91.0 (double)7/4->1,75(int)(7.56+0.5)18 (int)(7.499+0.5)97第3章三大结构程序设计输入原始数据分加工处理-输出结果一、字符输入/输出函数★在使用输入/输出函数时要切记,输入/输出函数在使用前必须在程序的首部使用一条包含命令将头文件“stdio.h”包含到当前程序中来。包含命令为:#includeHstdio.hH或#include<stdio.h>注意包含命令后无分号。⑴字符输入函数getchar()调用方法: 变量=getchar();函数功能:从键盘读取单个字符并将读取的单个字符作为函数的返回值赋给变量。(2)字符输出函数putchar(c)调用方法:putchar(c);例如:putchar('a');->aputchar(''x61');->aputchar(96+l);^a参数c可以是字符常量、字符变量或整型表达式。函数功能:将c对应的字符输出到显示器上。例1:写出程序的输出结果:(31.c)#includeHstdio.hMmain(){chara9b9c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);}若输入:xyzl234并回车则输出结巢为:xyz例2:写出程序的输出结果:(32©#includeHstdio.hnmain(){chara9b9c;a=getchar();b=getchar();c=getchar();putchar(a);putchar('\n');putchar(b);putchar('\n');putchar(c);putchar('\n');}若输入:xyzl234并回车则输出结果为:xyz注意:输入单字符时,空格与回车均为有效的字符输入。二、格式输入/输出函数★ %c%d%f%s字符输入输出函数只能用来对单个字符输入输出,格式输入输出函数能够对各种基本类型的数据输入输出,如整型、短整、长整、无符号数、单精度数、双精度数和单个字符。L格式输入/输出函数(1)格式输入函数分调用方法:scanf("输入格式字符串”,变量地址表);分函数功能:从键盘按照“输入格式字符串”中规定的格式读取若干个数据,按“变量地址表”存放到相应的变量中。T函数参数中的输入格式字符串由两类字符组成:个普通字符(要求必须原样输入)分输入格式字符(以%打头)。分变量地址表是用逗号分隔的多个变量地址。如:&a,&b变量地址可表示为“&变量名”。例1:分析程序的功能:(33.C)#includeMstdio.hHmain(){shorta,b;scanf(Ha=%d,b=%dH,&a,&b); a=123,b=456printf(H\n\n%d,%d,\a,b);} 123,456例2:分析程序的功能:(331.c)#includenstdio.hnmain(){shorta,b;printf(H\npleaseinputa,b:H);scanf(H%d,%d,\&a,&b);printf(,,\n\n%d,%d,,,a,b);}注意:①输入多个数据时的分隔方法:今按指定宽度取值,采用"%m字母”格式,其中m用于指定输入数据的宽度(例如"%2d%3d”)。今有普通字符分隔时必须用相应的普通字符作为输入数据的间隔(例如用"%d,%d”格式输入时必须用逗号分隔)■无普通字符分隔时可用空格、Tab、回车作为两个输入数据的间隔(例如

“%d%d”)。②用%c输入单个字符时,空格和回车均作为有效的输入。(2)格式输出函数分调用方法:printf("输出格式字符串”,表达式序列);分函数功能:按照“输出格式字符串”中规定的格式输出给定各个表达式的T函数参数中的输出格式字符串由三类字符组成:)普通字符(原样输出)今转义字符(按相应的含义输出)》输出格式字符(以%打头)。分表达式序列是用逗号分隔的若干个表达式。注意:在输出函数中各个表达式的计算顺序是自右向左的。例如:若定义了inta=6;则printf("%d,%d,%d",a,a++,++a);的输出结果为8,7,7。需要说明的是:若表达式序列互相不影响,则自左向右计算也不影响结果如:printf("%d,%d,%d",a+l,a+2,a+3);.格式字符*※(1)输入格式字符:长整型数据%ld双精度实型数据 长整型数据%ld双精度实型数据 %lf(38.c)字符串数据%s(391.c遇空格、Tab,回车结束)带符号长整型数据%ld无符号长整型数据%lu字符型数据 %c单精度实型数据%f字符型数据%c(39.c)(2)输出格式字符:带符号短整型数据%d无符号短整型数据%u实型数据 %f字符串数据 %s.注意输入格式字符与输出格式字符的区别:①输入格式字符中%dO%u%ldO%lu,而输出格式字符中%d与%u、%ld与%lu是有区别的。例如:unsigneda;intb;scanf("%d,%d",&a,&b); /*若输入65535,-1时使a为65535、b为-1*/printf("%u,%d",a,b);/*输出的结果为:65535,-1*/②输入格式字符中单精度实型数据与双精度实型数据的控制符有区别(单%f、双%If),而输出格式字符是没有单双精度的区别,均为%九例如:(38.C)floata;doubleb;scanf("%f,%lF,&a,&b); /*若输入23,2.3时使a为2.3、b为2.3*/printf("%f,%f',a,b);/*输出的结果为:2.300000,2.300000*/③输出时可控制实型数据的小数位数(利用%-m.nf控制),但输入时不能限制输入的小数位数(即不能利用%m.nf控制输入精度)。(381.C,382.C)%-m.nfmT输出总宽:■»!«<=实际宽度)按实际宽度输出-m>实际宽度T%m.nf数据右对齐,左补空格今%-m.nf数据左对齐,右补空格nf小数位数,若省略则默认为6位小数。

三、顺序结构例1:输入三角形的三边长,求其面积并输出。分析:1设三边长分别存入变量a、b、c中,面积存入变量s中。2求解三角形面积的公式为海伦公式:s=^d(d-a)(d-b)(d-c)其中d=*±£3数学函数4是用c语言系统函数sqrt(x)表示,而数学函数均在头文件math.h中定义的,所以应在程序的首部使用包含命令:#include“math.h"4综上所述,程序中最好定义a,b,c,d,x,s六个实型变量。程序清单如下(sxl.c):#include''stdio.h''#include"math.h"main(){floata,b9c9d9x9s;printf(n\n\ninputa,b,c:scanf(''%f,%f,%r‘,&a,&b,&c);d=(a+b+c)/2;x=d*(d-a)*(d-b)*(d-c);s=sqrt(x);printf(n\narea:%.2f\s);}例2:输入一半径,求圆的周长、面积、球的体积并输出。分析:1设半径为r,圆的周长、面积、球的体积分别存入变量C、S、V中。2c=2Jirs=Jir2v=-Jir33圆周率ji最好用#definePI3.141593定义(PI为符号常量)。4综上所述,程序中最好定义r,c,s,v四个实型变量。程序清单如下:(sx2.c)#definePI3.141593#include''stdio.h”main(){floatr,c,s,v;printf(H\n\ninputr:");scanf(H%fn,&r);c=2*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(M\nc=%.2fn,c);printf(M\ns=%.2r\s);printf(M\nv=%.2r;v);}例3:输入一3位整数,求各位数字的平方和并输出。123-1+4+9114分析:1设输入的3位整数存入变量x中,对x分解的各位数字分别存入变量xl、x2、x3中,分解方法为:设x为789TOC\o"1-5"\h\zxl=x/l%10; 9x2=x/10%10; 8x3=x/100%10; 79规律为 相应位上的数字=x/位权%102设平方和存入变量s中,故应定义5个整型变量。3程序清单如下:(sx3.c)#includenstdio.hnmain(){intx,xl,x2,x3,s;printf(M\n\ninputx(100-999):H);scanf(H%dn,&x);xl=x%10;x2=x/10%10;x3=x/100%10;s=xl*xl+x2*x2+x3*x3;printf(M\ns=%d,»;}例4:输入三个整数,求出最大值并输出。分析:1设三个整数分别存入变量a、b、c中,最大值存入变量m中。2可以先将a、b中的较大值存入变量m中(m=a>b?a:b;),然后将m与c比较,若m<c,则将c赋值给m即可(m=m>c?m:c;或m=m<c?c:m;)。程序清单如下:(sx4.c)#include"stdio.h"main(){inta,b,c,m;printf("\n\ninputa,b,c:");scanf("%d,%d,%d",&a,&b,&c);m=a>b?a:b;Oif(a>b)m=a;elsentb;m=m<c?c:m;Oif(m<c)m=c;printf("\nmax=%d",m);}例5:输入一个一元二次方程ax2+bx+c=0(设b2-4ac>=0)的三个系数,求出方程的根并输出。分析:1设一元二次方程的三个系数分别存入变量a、b、c中,两个实根存入变量xl、x2中。2求解:xl=(-b+d)/(2*a);x2=(—b—d)/(2*a); 其中d=sqrt(b*b-4*a*c)3因为用到了数学函数sqrt(x),所以应在程序的首部使用包含命令:

#include"math.h"4综上所述,程序中最好定义a,b,c,d,xl,x2六个实型变量。程序清单如下:(sx5.c)include"stdio.h"#includenmath.hHmain(){floata,b,c,d,xl,x2;printf("\n\ninputa,b,c:H);scanf(''%f,%f,%f'',&a,&b,&c);d=sqrt(b*b-4*a*c);xl=(-b+d)/(2*a);x2=(-b-d)/(2*a);printf(H\nxl=%f,x2=%f,,xl,x2);表达卡为真?语看执行"if的下一表达卡为真?语看执行"if的下一条语句1.单分支:if格式:if(表达式)语句;功能:如果表达式为真则执行语句,否则不执行语句。其执行流程如右:说明:若表达式为真时需要执行多条语句,则必须将多条语句写成复合语句形式。{语句1;语句2;}if(下雨)]穿雨鞋;穿雨衣;}例1:写出程序的输出结果。(dfzl.c)#include"stdio.h"main(){inta=4,b=5;if(a>4)b++;b++;printf("\n%d",b);}结果为6#include"stdio.h"main(){inta=4,b=5;if(a>4){b++;b++;} {b++;b++;}Ob++,b++;printf("\n%(T',b);}结果为5例2:输入三个整数x,y,z,请把这三个数由小到大输出。xyz789♦if(x>y)t=x,x=y,y=t;*>if(x>z)t=x,x=z,z=t;~>x最小»if(y>z)t=y,y=z,z=t;今x,y,z程序清单:(dfz3.c)

#includeHstdio.hnmain(){intx,y,z,t;printf(u\ninputxyz:");scanf(M%d%d%dn,&x,&y,&z);if(x>y)t=x,x=y,y=t;,if(x>z)t=x,x=z,z=t;if(y>z)t=y,y=z,z=t;执行*if的下一条语句printf(n\n执行*if的下一条语句2.双分支:if-else格式:if(表达式)语句1;else语句2;功能:如果表达式为真则执行语句1,否则执行语句2。其执行流程如右:说明:若语句1或语句2需要多条语句,则必须将它们写成复合语句形式。例1:x>0 y=2*xx<=0 y=x2-l(x是由键盘输入)(sfzl.c)#includeHstdio.hnmain(){intx,y;printf(H\nx=H);scanf(H%dn,&x);if(x>0)y=2*x;Oif(x>0)y=2*x; y=2*x;elsey=x*x-l;if(x<=0)y=x*x-l;if(x<=0)y=x*x-l;printf(H\ny=%d,\y);}3•多分支:if・else的嵌套支※例1:x/300TOC\o"1-5"\h\z「2*x (x>=0&&x<300) 03*x (x>=300&&x<600) 1y=3 4*x (x>=600&&x<900) 2U 5*X (x>=900) 3, 45,6,・・・if(x<300)y=2*x;elseif(x<300)y=2*x;elseif(x<600)y=3*x;elseif(x<900)y=4*x;elsey=5L*x;方法一(qtdfzl.c)#includeHstdio.hHif(x<600)if(x<300)yg*x;elsey=3*x;elseif(x<900)y=4*x;elsey=5L*x;if(x<900)if(x<300)y=2*x;elseif(x<600)y=3*x;elsey=4*x;elsey=5L*x;main(){unsignedshortx;longy;printf(M\n\ninputx:M);scanf(n%dn,&x);if(x<300)y=2*x;elseif(x<600)y=3*x;elseif(x<900)y=4*x;elsey=5L*x;printf(H\ny=%ldH,y);}方法二:#includeHstdio.hnmain(){unsignedshortx;longy;printf(H\n\ninputx:n);scanf(M%du,&x);switch(x/300){case0:y=2*x;break;y=3*x;break;y=4*x;break;default:y=5L*x;}printf(n\ny=%ldn,y);}例2:设inta=8,b=7,c=6,x=l;执行语句if(a>6)if(b>7)if(c>8)x=2;elsex=3后x的值是[]A.0B.1C.2 D.3分析一if(a>6)if(b>7)if(c>8)x=2;elsex=3;分析二if(a>6)if(b>7){if(c>8)x=2;elsex=3;}4.多分支:用switch语句实现支※格式:switch(表达式){case常量1:case常量2:语句组2;break;case常量n:语句组n;break;[default:语句组n+1;])功能:计算表达式的值,若和常量i相同,则执行语句组i后遇break语句结束。若和所有的常量均不相同,则执行语句组n+1后结束。说明:(1)表达式的值通常是整型或字符型且表达式的取值互不相同。(2)此处的break语句是结束switch结构。若省略,则从表达式与常量相等的位置开始执行后面的所有语句组,直到遇下一个break语句结束。(3)若表达式与多个常量相同时需要执行同一个语句组,则语句组仅需在最后一个case常量的位置出现即可。case1:case2:语句组;break;<^>case1:case2:语句组;break;(4)该结构特别适合用等式构成条件的多分支结构。(5)default:语句组n+1;可以省略。例1.编写一个模拟简单计算器的程序,计算表达式:alopa2的值,要求al、op、a2从键盘输入。其中al、a2(作除数时不能为0)为数值,op为运算符+、-、*、/o方法一:(switchl.c)34*56#include''stdio.h''main(){floatal9a2;charop;scanf(n%f%c%fH,&al,&op,&a2);switch(op){caseprintf(H\n%f+%f=%fn,al,a2,al+a2);break;case*-*:printf(M\n%f-%f=%r\al,a2,al-a2);break;case***:printf(M\n%f*%f=%fn,al,a2,al*a2);break;caseif(a2!=0)printf(n\n%f/%f=%f\al,a2,al/a2);elseprintf(n\nwrong1!H);break;default:printf(M\nwrong2!H);}}方法二:(switch2.c)#include"stdio.h''main(){floatal9a29y;charop;intf=l; 标志变量scanf(H%f%c%f,&al,&op,&a2);switch(op){casey=al+a2;break;case*-*:y=al-a2;break;case***:y=al*a2;break;case71:if(a2!=0)y=al/a2;elsef=0;break;default:f=-l;}if(f==1)prmtf(M\n%f%c%f=%fn,al,op,a2,y);elseif(f==0)printf(H\nwronglM);elseprintf(M\nwrong2u);}【分析】此题考到的是多分支结构,最好使用switch结构,不要使用后面的if〜else的嵌套。例2:输入一个日期,求解该日期是当年的第几天?2007.12.30 364y.m.dfdays二前m-1个月的天数和+d今判断y为闰年的条件:k=(y%4==0&&y%100!=0)II(y%400==0);今若为闰年且m>2则days应多加1天:if(m>2)days=days+k;includeHstdio.hHmain(){inty,m,d,days,k;printf(H\ninputyyyy.mm.dd:H);scanf(H%d.%d.%dn,&y,&m,&d);switch(m){casel:days=O;break;case2:days=31;break;case3:days=59;break;case4:days=90;break;case5:days=120;break;case6:days=151;break;case7:days=181;break;case8:days=212;break;case9:days=243;break;case10:days=273;break;casell:days=304;break;case12:days=334;}days=days+d;k=(y%4==0&&y%100!=0)II(y%400==0);if(m>2)days=days+k;printf(n\n%d.%d.%disthe%ddays.”,y,m,d,days);}五、循环结构支※1.当型循环:while格式:while(条件)循环体;功能:当条件为真则将反复执行循环体,直到条件为假。 掾件%立?-0—y循髭体执行while的下一条语句(退出循环)说明:“若循环体为多条语句则必须以复合语句形式出现。今若初始条件不成立则将不执行循环。(具有先判断后执行的特点)。例:⑴求s=l+2+3+...+100并输出分析:1需要定义存放和值的变量s,初值设为Oo(存放和值的变量初值设为0,存放累乘积的变量初值设为1)2设变量i从1取到100,每次增1。3循环体应为:{s=s+i;i=i+l;}4程序清单为:(xhwhilel.c)includeMstdio.hnmain(){ints9i;s=O;i=l;while(i<=100){s=s+i;i=i+l;}printf(H\ns=%dH,s);)复合语句{s=s+i;i=i+1;}等价于s=s+i,i=i+l;“使用while循环实现等差数列的公用程序段为:i二初值;while(iv=终值)i=i+公差;}循环次数n=[(终值・初值)/公差]+1今使用while循环实现N次循环的公用程序段为:i=l;while(i<=N)(2)求s=l+3+5+7+.・・+99并输出(xhwhile2.c)#includeHstdio.hnmain(){ints9i;s=O;i=l;while(i<=99){s=s+i;i=i+2;}printf(H\ns=%dn,s);}(3)求s=2+4+6+.・・+100并输出(xhwhile3.c)#include"stdio.h"main(){ints9i;s=0;i=2;whilei<=100){s=s+i;i=i+2;}printf(n\ns=%dH,s);)(4)求s=l+l/3+l/5+l/7+.・・+l/99并输出(xhwhile4.c)#includeHstdio.hMmain(){inti;floats;s=0;i=l;while(i<=99){s=s+1.0/i;i=i+2;}

printf(M\ns=%r»;(5)求s=l・l/3+l/5・l/7+…・l/99并输出(xhwhile5.c)#includeHstdio.hMmain(){inti;floats,k=1.0;s=O;i=l;while(i<=99){s=s+k*1.0/i;k=-k;i=i+2;}printf(H\ns=%fM^);(6)求s=8!并输出(xhwhile6.c)#includenstdio.hnmain(){doubles;inti;s=l;i=l;while(i<=8){s=s*i;i=i+l;}printf(H\ns=%.Or\s);)(7)求f=l!+2!+.・・+8!并输出(xhwhile7.c)分析:求解过程为:f=0;s=l;i=l;{s=s*i;f=f+s;i=i+l;}f=0f=lf=l+l*2f=l+l*2+1*2*3f=l+l*2+l*2*3+l*2*3*4{s=s*i;f=f+s;i=i+l;}f=0f=lf=l+l*2f=l+l*2+1*2*3f=l+l*2+l*2*3+l*2*3*4f二结果i=li=2i=3i=4i=5i=91: S=1s=l*2s=l*2*3s=l*2*3*4■II8:s=l*2*3*4*5*6*7*8#includenstdio.hnmain(){longs9f;inti;f=0;s=l;i=l;while(i<=8){s=s*i;f=f+s;i=i+l;}printf(H\ns=%ldH,f);(8)求e=l+l/lI+1/2!+...+1/8!并输出(xhwhile8.c)include"stdio.h"main(){doubles,e;inti;e=l;s=l;i=l;while(i<=8){s=s*i;e=e+l/s;i=i+l;}printf(n\ne=%r\e);)(9)求s=l/2+2/3+3/5+5/8+8/13+…前20项的和值并输出分析:1设floats=0,a=l,b=2;inti2控制20次循环:i=l;while(i<=20){ ; i=i+l;}3循环体为:s=s+a/b;t=a;a=b;b=t+b;4程序清单为:(xhwhillO.c)#include"stdio.h',main(){floats=0,a=l,b=2,t;inti;i=l;whilei<=20){s=s+a/b;t=a;a=b;b=t+b;i=i+l;}printf(H\ns=%f,s);)(10)求s=a+aa+aaa+.・・+aa.,・a并输出(xhwhill2.c)n个a(说明:a,n是由键盘输入的整数,若a为3,n为5则s=3+33+333+3333+33333)分析:s=0;x=0;将x=x*10+a;s=s+x;重复执行n次。#include"stdio.h''main(){longs=0,x=0;inta9n,i;printf(M\ninputa,n:H);scanf(H%d,%d,\&a,&n);i=l;while(<=n){x=x*10+a;s=s+x;i=i+1;}printf(n\ns=%ldn,s);}(11)输入一串字符,统计字符个数(遇回车结束)。(xhwhi113.c)include"stdio.h"main(){charc;intn=0;while((c=getchar())!='\n')n++;printf("\n%d",n);}作业:求s=l/(l*3)-l/(3*5)+l/(5*7)//(7*9)+…-1/(99*101)并输出.直到型循环:do-while格式:do循环体;while(条件);功能:首先执行循环体再判断条件是否为真,若为真则将反复执行循环体,直到条件为假。循环体▼件成立厂°一|执行dowhile的下一条语句(退出循环)说明:若循环体为多条语句则必须以复合语句形式出现。直到型循环禁止0次循环(具有先执行后判断的特点)。例:(1)求s=l+2+3+.・・+100并输出include"stdio.h''inain(){ints=0,i=l;do{s=s+i;i=i+l;}Owhile(i<=100){s=s+i;i=i+l;}while(i<=100);printf(H\ns=%d*\s);}(2)求s=a+aa+aaa+.・・+a七。声输出(xhwhill2.c)n个a(说明:a,n是由键盘输入的整数,若a为3,n为5则s=3+33+333+3333+33333)#includenstdio.hHmain(){longs=09x=0;inta,nj;printf(n\ninputa,n:M);scanf(,,%d,%dM,&a,&n);i=l;do{x^*10+a;s=s+x;i=i+l;}Owhile(i<=n){x=x*10+a;s=s+x;i=i+l;}

while(i<=n);printf(H\ns=%ldM,s);do{s=s*i;e=e+l/s;if(l/s<le-5)break;i=i+l;}while(1);例(3)s求e=l+l/l!+1/2!+...+l/n!并输出(精度为lO'oi/n!保留五位小数。)#includeHdo{s=s*i;e=e+l/s;if(l/s<le-5)break;i=i+l;}while(1);{doubles9e;inti;e=l;s=l;i=l;do{s=s*i;e=e+l/s;i=i+l;}while(l/s>=le-5);while(1){s=s*i;e=e+l/s;if(l/s<le-5)break;i=i+1;}while(1){s=s*i;e=e+l/s;if(l/s<le-5)break;i=i+1;}.次数型循环:for表节式1格式:for(表达式1;表达式2;表达式3)循环体;F2%真?y功能:首先计算表达式1,然后再计算表达式2, 循《体若表达式2为真则将执行循环体,再计算表达式3的值,最后再判断表达式2,若非0则 ।继续执行循环体,再计算表达式3,再转向表达 表达产3式2进行判断,若为真则继续循环,否则将转向for语句的下一条执行(退出循环)。执行for的下一条语说明: 句(退出循环)(1)通常用for循环实现固定次数的程序结构为:for(变量=初值;变量<=终值;变量+=公差)循环体语句;变量=初值;while(变量<=终值){循环体语句;变量+=公差;}循环的次数n为:[(终值-初值)/公差]+1。例1:求s=l+2+3+…+100并输出include"stdio.h"main(){ints9i;s=0;for(i=l;i<=100;i++)s=s+i;

printf(u\ns=%d”,s);}s=0;for(i=l;i<=100;i+=l)s=s+i;0for(s=0,i=l;i<=100;i+=l)s=s+i;(2)若循环体为多条语句则必须以复合语句形式出现。s=0;for(i=l;i<=3;i++)s=s+i;i++;s=0;fbr(i=l;i<=3;i++){s=s+i;i++;}执行完毕,s的值为6,i的值为5s=0;fbr(i=l;i<=3;i++){s=s+i;i++;}for(i=l;i<=3;i++)s=s+i,i++; 0执行完毕,s的值为4,i的值为5(3)表达式1、表达式2、表达式3均可省略,但当省略表达式2时,循环体中必须控制循环的退出(可用break;或goto语句)。for(s=0,i=l;i<=100;i+=l)s=s+i;”省略表达式10s=O,i=l;for(;i<=100;i+=l)s=s+i;"省略表达式3«for(s=0,i=l;i<=100;){s=s+i;i+=l;}“同时省略表达式1与表达式34>s=0,i=l; <^s=0,i=l;for(;i<=100;)^=s+i;i+=l;} while(i<=100){s=s+i;i+=l;}for(s=0,i=l;;i+=l){s=s+i;if(i==100)break;}"省略表达式2Qfor(s=0,i=l;;i+=l)for(s=0,i=l;;i+=l){s=s+i;if(i==100)break;}{if(i>100)break;s=s+i;}(4)for循环具有先判断后执行的特点,通常可改写为当型循环。for(;表达式;)循环体;Owhile(表达式)循环体;例2:求s=l/l-l/3+l/5-l/7+...-l/99并输出include"stdio.h"main(){inti;floats=09k=l;for(i=l;i<=99;i+=2){s=s+k*l/i;k=-k;}printf(M\ns=%r»;)例3:求s=l/2+2/3+3/5+5/8+8/13+…前20项的和值并输出#include"stdio.h"main(){floats=0,a=l,b=2,t;inti;for(i=l;i<=20;i+=1){s=s+a/b;t=a;a=b;b=t+b;}

printf(n\ns=%fn,s);例4:求s=a+aa+aaa+...+aa...a并输出n个a(说明:a,n是由键盘输入的整数,若a为3,n为5则s=3+33+333+3333+33333)#include"stdio.h"main(){longs=0,x=0;inta9n9i;printf(H\ninputa,n:M);scanf(H%d,%dM,&a,&n);for(i=l;i<=n;i++){x=x*10+a;s=s+x;}printf(H\ns=%ldH,s);}.break和continue语句break可用于switch结构(控制switch结构的结束)与三大基本循环结构(控制循环的退出)。通常称为断路语句。continue可用于三大基本循环结构中实现提前开始新的循环,在当型循环与直到型循环结构中转向while(表达式)的位置。在for循环中转向表达式3的位置。通常称为短路语句。说明:break与continue语句通常套一个分支结构出现在循环结构中。例1:说明程序的功能#includeHstdio.hHinain(){intsl=0,s2=0,i;for(i=l;i<=100;i++){sl=sl+i;if(i%2)continue;/*i%2<S>i%2!=0Oi%2=4*/s2=s2+i;}printf(n\nsl=%d,s2=%dM,sl,s2);}程序的功能为:分别求解1〜100之间所有整数和与偶数和并输出例2:说明程序的功能#includeHstdio.hHmain(){intsl=0,s2=0,i,x;for(i=l;i<=10;i++){scanf(H%dH,&x);if(x==0)break;sl=sl+x;if(x<0)continue;s2=s2+x;}printf(n\nsl=%d,s2=%dM,sl,s2);}程序的功能为:输入不超过10个整数(遇。结束),分别求输入的所有整数的和与所有正整数的和并输出。若输入13・20-681234则结果为:sl=2,s2=4六、双重循环结构1.双重循环结构的设计方法。*※双重循环结构是在单重循环结构的循环体中再引入一个单重循环结构。例1:写出程序的运行结果:include"stdio.h"main(){intij,k=O;for(i=l;i<=4;i++)for(j=l;j<=5;j++)k++;printf("\n%d",k);}在双重循环结构中,内层循环体的执行次数为内外循环次数的乘积,在此程序中外层循环次数为4,内层循环次数为5,故内层循环体的循环次数为20次,所以输出结果为:20例2:输出下面的图形(tx.c)i=l*i=2**j—3***i=4****include"stdio.h"main(){intij;for(i=l;i<=4;i++)(for(j=l;j<=i;j++)printf(M*");printf("\nn);}}»请大家根据此程序的特点输出九九乘法表。include"stdio.h"main(){intij;

for(i=l;i<=9;i++){printf(n\nM);for(.j=l;j<=i;j++)printf(M%dx%d=%-5dHJ,i3*j);}♦输出该类图形的公用程序段为:for(i=l;i<=4;i++){printf("\n");for(j=l;j<=i;++)printf("*");}************************************************i=l〜4i=l-4i=l〜4j=l〜ij=l-2*i-lj=l〜3*i・2************************************************i=l〜4i=l〜4i=l〜4j=l-5-ij=l〜9-2*ij=l〜13-3巧例3:输出下面的图形(u表示空格)UUUU*i=l〜4uuu**j=l〜5-iuu***k=l-iu****#includenstdio.hnmain(){intij,k;for(i=l;i<=4;i++){printf(H\nH);for(j=l;j<=5-iy++)printf(HuH);for(k=l;k<=i;k++)printf(n*n);})»输出该类图形的公用程序段为:for(i=l;i<=4;i++){printf(M\nH);for(j=l;j<=5-i;j++)prmtf(nun);for(k=l;k<=i;k++)printf。'*'');}uuuuuuuuuu*uuuuuuu****uuuu*******uuuu* uuuu*uuuuuuuuuu*uuuuuuu****uuuu*******uuu** uuu***uu*** ******

u****u*******u**********i=l~4i=l~4i=l~4j=l-5-ij=l-13-3*ik=l-ik=l-2*i-lk=l-3*i-2u****11*******u**********uu***uu*****uuuu*******UUU**UUU***uuuuuuu****uuuu*uuuu*uuuuuuuuuu*i=l-4i=l~4i=l-4j=l〜ij=l-ij=l-3*i-2k=l-5-ik=l-9-2*ik=l-13-3*iUUU*uu***uUUU*uu***u*****i=l〜4

j=l-4-i*******k=]〜2*i-li=l〜3uu***j=l-iUUU*k=l-7-2*iUUU*k=l-7-2*i例4:输入一个整数,判断其是否为素数,若是则输出1,否则输出Oo分析:素数即为质数:除了1和它本身再无其它约数的数。如:23571113 设输入的整数存入变量x中,则判断x不为素数的方法有三种:(1)若x能被2〜x-1之间的某一个数整除,则x不为素数(2)若x能被2〜x/2之间的某一个数整除,则x不为素数(3)若x能被2〜sqrt(x)之间的某一个数整除,则x不为素数通用程序段为for(f=l,i=2;i<=x/2;i++)if(x%i==0){f=0;break;}if(x==I)f=O;少若f为1则X为素数若f为0则x为非素数#include"stdio.h"main(){intx,i,f;scanf("%d",&x);for(f=l,i=2;i<=x/2;i++)if(x%i==0){f=0;break;}if(x==l)f=0;printf("\n%d",f);}例5:输出100〜200之间所有的素数。分析:仅需将上题中的x控制在100〜200之间取值即可。#includeHstdio.hHmain(){intx,i,f;for(x=100;x<=200;x++){for(f=l,i=2;i<=x-l;i++)if(x%i==0){f=0;break;}if(f==l)printf(n%

温馨提示

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

评论

0/150

提交评论