C语言程序设计基础课件 02 程序设计基础_第1页
C语言程序设计基础课件 02 程序设计基础_第2页
C语言程序设计基础课件 02 程序设计基础_第3页
C语言程序设计基础课件 02 程序设计基础_第4页
C语言程序设计基础课件 02 程序设计基础_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计基础01C语言程序的基本结构和特点020306基本数据类型与基本输入/输出基本控制结构-顺序结构基本控制结构-分支结构目录CONTENTS0405基本控制结构–循环结构综合案例01C语言程序的基本结构和特点导例:输入生日并显示问题描述从键盘输入个人生日信息,并在屏幕上显示相应信息。问题分析问题涉及输入和输出问题,使用标准输入函数scanf()接收键盘输入的信息,再使用输出函数printf()从屏幕输出。需要定义两个整型变量,分别用于保存生日的月份和日期信息。算法描述定义int变量month和day;用printf()在屏幕上显示提示信息;用scanf()从键盘输入生日月份和日期,分别存储在变量month和day中;用printf()在屏幕上显示生日信息。程序实现展示了输入生日并显示的C语言代码,包括变量定义、输入输出函数的使用等。运行结果给出了程序运行时的输入和输出示例,如输入“627”,输出“Yourbirthdayis:6月27日”。程序分析一个C语言程序由函数和变量组成,函数包含语句,变量存储值。main是主函数,是程序执行的入口。程序中使用了编译预处理命令,以及标准输入/输出函数。注释文本用于解释程序,不影响编译和运行。导例:输入生日并显示程序实现#include<stdio.h>intmain(){intmonth,day;/*定义两个整型变量month和day*/printf("Enterthemonthandthedayofyourbirthday:");/*接收键盘输入的两个整数,并分别赋值给month和day*/scanf("%d%d",&month,&day);/*在屏幕上显示生日信息*/printf("Yourbirthdayis:%d月%d日",month,day);return0;}导例:比大小从键盘输入两个整数,在屏幕上输出其中较大的数,要求通过函数调用实现。问题描述本题增加了数据处理功能,需要在输入的两个数中选择一个较大的。定义两个函数,主函数接收输入并调用子函数得到较大值,子函数进行比较并返回结果。问题分析定义3个int变量,提示输入两个整数,接收输入,调用子函数,子函数比较大小并返回结果,将结果赋值给变量并输出。算法描述展示了比大小的C语言代码,包括函数原型声明、主函数和子函数的定义。程序实现给出了程序运行时的输入和输出示例,如输入“723”,输出“Thelargeris23”。运行结果程序由主函数和自定义函数组成,主函数调用自定义函数。函数原型声明是必要的,子函数通过参数与主函数进行数据交换,使用分支语句比较大小。程序分析导例:比大小程序实现#include<stdio.h>intmaxvalue(intx,inty); /*maxvalue()函数原型声明*/intmain() /*main()

函数首部*/{inta,b,max; /*定义变量*/printf("Entertwonumbersa&b:"); /*显示输入提示信息*/scanf("%d%d",&a,&b); /*接收键盘输入的两个整数分别赋值给a和b*/max=maxvalue(a,b); /*函数调用*/printf("Thelargeris%d\n",max); /*显示a和b中较大值*/return0;}intmaxvalue(intx,inty) /*maxvalue()函数首部,定义了两个参数x和y*/{intm;if(x>y) /*如果x>y,将x赋值给m*/m=x;else /*否则将y赋值给m*/m=y;returnm; /*返回较大值*/}C程序的基本结构编译预处理命令主函数main(){函数体开始

声明部分

执行部分}//函数体结束用户自定义函数function1(){…}function2()…C程序的基本结构用户根据需求编写自定义函数,如maxvalue,实现特定功能,可被main或其他函数调用,增强程序模块化。用户自定义函数使用#include指令引入头文件,如stdio.h,为程序提供标准输入输出函数的支持,是C程序编译前的准备工作。编译预处理命令main函数是C程序的入口,程序执行从main开始,所有功能最终都通过main函数调用实现,体现程序的执行起点。主函数main注释用于解释代码,以/*和*/或//标记,帮助程序员理解代码功能,不影响程序运行,提升代码可读性。注释的作用C语言的基本特点结构化语言C语言程序的基本单位是函数,可实现模块化程序设计,符合现代编程思想。语言简洁,使用方便灵活C语言关键字少,控制语句少,程序书写形式自由。运算符、数据类型丰富C语言有多种运算符和丰富的数据类型,表达式类型灵活多样。可移植性强C程序基本不做修改就能在不同计算机和操作系统环境中运行。语法限制不太严格,程序设计自由度高C语言允许编程者有较大自由度,但对编程者的技能和熟练程度要求较高。生成的目标代码质量高,程序执行效率高一般比汇编程序生成的目标代码效率低10%-20%。02基本数据类型与基本输入/输出导例:计算BMI问题描述输入一个人的身高和体重,计算身体质量指数BMI。问题分析该问题涉及乘法、除法运算和输入/输出,根据BMI计算公式进行计算。算法描述定义单精度浮点型变量,接收输入,计算BMI,输出结果。程序实现展示了计算BMI的C语言代码,包括变量定义、输入输出函数的使用和计算公式。运行结果给出了程序运行时的输入和输出示例,如输入“501.6”,输出“YourBMIis19.53”。程序分析程序使用了除法和乘法运算,变量定义为float类型以存储实数。scanf()用于接收输入,printf()用于输出结果,可根据需求保留小数位数。导例:计算BMI程序实现#include<stdio.h>intmain(){floatBMI; /*定义单精度浮点型变量,存放BMI*/floatweight; /*定义单精度浮点型变量,存放体重*/floatheight; /*定义单精度浮点型变量,存放身高*/printf("pleaseinputyourweight(kg)andheight(m):");scanf("%f%f",&weight,&height);/*接收用户输入,分别赋值给weight和height*/BMI=weight/(height*height); /*计算BMI*/printf("YourBMIis%.2f\n",BMI);/*调用printf()函数输出结果*/}导例:字符加密问题描述输入字符,为其加密。问题分析选用字符变换的方式进行加密,利用C语言中字符可参与算术运算的特点。算法描述接收用户输入的字符,进行字符变换,输出加密结果。程序实现展示了字符加密的C语言代码,包括变量定义、输入输出函数的使用和字符变换操作。运行结果给出了程序运行时的输入和输出示例,如输入“hello”,输出“khoor”。程序分析程序通过简单加法运算实现字符变换,加密方式可自行决定,解密时进行反向计算。输入、变换和输出语句重复编写,可使用循环语句简化代码。导例:字符加密程序实现#include<stdio.h>intmain(){charch; /*定义一个字符变量ch*/

ch=getchar(); /*调用getchar()函数,从键盘上输入一个字符,赋值给ch*/ch=ch+3; /*为字符ch加密*/putchar(ch); /*调用putchar()函数,输出加密后的ch*/

ch=getchar();ch=ch+3;putchar(ch);

ch=getchar();ch=ch+3;putchar(ch);

ch=getchar();ch=ch+3;putchar(ch);

ch=getchar();ch=ch+3;putchar(ch);

putchar('\n');return0;}导例:考核结果问题描述给出三项考核成绩,判定单项考核和综合考核是否通过。问题分析将考核成绩与60进行比较,判定单项考核是否通过,根据单项考核结果判定综合考核是否通过。算法描述接收用户输入的三项考核成绩,将各项成绩与60进行比较,输出比较结果。程序实现展示了考核结果判断的C语言代码,包括变量定义、输入输出函数的使用和关系表达式、逻辑表达式的运用。运行结果给出了程序运行时的输入和输出示例,如输入“588278”,输出各项考核结果。程序分析程序使用关系表达式判定单项考核,逻辑表达式判定综合考核,结果为1表示通过,0表示不通过。关系和逻辑表达式常用于条件判断语句。导例:考核结果程序实现#include<stdio.h>main(){/*定义各项考核成绩变量*/intscore1;intscore2;intscore3;/*输入考核成绩*/printf("请输入三项考核成绩:");scanf("%d%d%d",&score1,&score2,&score3);/*输出考核结果*/printf("第一项考核结果:%d\n",score1>=60);printf("第二项考核结果:%d\n",score2>=60);printf("第三项考核结果:%d\n",score3>=60);printf("综合考核结果:%d\n",(score1>=60)&&(score2>=60)&&(score3>=60));}C语言提供的基本数据类型整型整型用来描述计算机能够准确表示的整数,在C语言中用关键字int表示,不同环境下占用字节数和取值范围不同。实型实型用来描述计算机中近似表示的实数,有单精度和双精度两种形式,分别用关键字float和double表示,取值范围和精度不同。字符型字符型用来描述单个字符,用关键字char表示,字符以ASCII编码存储,占用1字节。类型修饰符在基本数据类型关键字前加类型修饰符扩展数值范围,不同修饰符可用于不同数据类型。数据类型的取值范围因平台和编译器而异,使用时需注意数据溢出问题。C语言提供的基本数据类型数据类型类型说明符字

数取值范围字符型char1C字符集整型、长整型int、longint4-2

147

483

648~2

147

483

647即-231~(231-1)短整型shortint2-32

768~32767即-215~(215-1)无符号整型unsignedint40~4

294

967

295即0~(232-1)无符号短整型unsignedshortint20~65

535即0~(216-1)单精度型float4负数:-3.402

823

5×1038~-1.401

298×10-45正数:1.401298×10-45~3.4028235×1038双精度型double8负数:-1.797

693

134

862

315

70×10308~-4.940

656

458

412

465

44×10-324正数:4.940

656

458

412

465

44×10-324~1.797

693

134

862

315

70×10308长双精度型longdouble16负数:-1.18973149535723176×104932~-3.36210314311209350×10-4932

正数:3.36210314311209350×10-4932~1.18973149535723176×104932表2-1不同数据类型的取值范围(DevC++环境)标识符与关键字、常量与变量标识符与关键字标识符用于标识程序中的对象,由字母、数字和下画线组成,第一个字符必须是字母或下画线。标准C语言规定了32个关键字,不允许用户标识符与关键字相同,关键字分为类型说明符、语句定义符和预处理命令字三类。常量常量在程序运行过程中值不变,分为整型常量、实型常量和字符常量,类型由书写格式决定。整型常量有十进制、八进制和十六进制形式,实型常量有十进制小数形式和指数形式,字符常量用单引号括起来,还存在转义字符。变量变量是程序中数据的符号标识和载体,必须先声明后使用。声明变量时指定数据类型,编译器据此分配存储区。变量定义后需赋值,赋值时要注意数据类型的一致性。运算符与表达式算术运算符用于数值运算,包括5个二元运算符:加(+)、减(-)、乘(*)、除(/)、求余(%),和2个一元运算符:自增(++)、自减(--)。不同数据类型运算时会自动转换,除运算和求余运算有特殊规则,自增(++)、自减(--)运算符位置不同运算方法不同。C语言中算术表达式的书写方式与数学运算略有不同。算术运算符关系运算符用于比较运算,包括6个运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=),结果为逻辑值1或0。不同运算符优先级不同,等于(==)和不等于(!=)这两个运算符的优先级要低于其余4个运算符。关系运算符逻辑运算符用于逻辑运算,包括非、与、或,优先级依次降低,运算规则有明确规定。在运算表达式中,算术、关系和逻辑运算符优先级依次降低,可使用括号表示运算顺序。逻辑运算符当自动类型转换不能实现目的时,可进行强制类型转换,将表达式转换成所需类型。转换可能会丢失数据,且转换是临时性的,不改变变量类型和其他表达式中的值。强制类型转换运

符优

级结

性运

符优

级结

性++、--1右结合+、-3左结合*、/、%2左结合

基本的输入/输出标准输入函数scanf()函数scanf()按指定格式从键盘接收数据并存储到指定变量中,格式控制字符串和地址列表要一一对应。标准输出函数printf()函数printf()按指定格式将数据显示到屏幕上,有附加格式说明符可修饰输出格式,格式控制字符串可包含普通字符起提示作用,输出参数要和格式说明符对应。单字符输入/输出函数getchar()、putchar()getchar()用于单个字符输入,将输入字符赋值给字符变量,输入的字符会存放在缓冲区。putchar()用于单个字符输出,参数可以是字符变量、常量或ASCII码值。输入输出时需注意格式匹配,如整数、浮点数、字符等,确保数据正确读取和显示基本的输入/输出输入输出时需注意格式匹配,如整数、浮点数、字符等,确保数据正确读取和显示格式说明符功能说明格式说明符功能说明%d输入或输出十进制整数%f输入或输出float类型%o输入或输出八进制整数%lf输入或输出double类型%x输入或输出十六进制整数%c输入或输出单个字符

%s输入或输出字符串03基本控制结构-顺序结构导例:计算圆的周长和面积问题描述问题分析算法描述程序实现运行结果程序分析从键盘输入圆的半径,计算圆的周长和面积。定义变量,输入半径,计算周长和面积,输出结果。给出了程序运行时的输入和输出示例,如输入“3”,输出周长和面积。程序使用宏定义方便修改PI的精度,是典型的顺序结构,按语句书写顺序执行。展示了计算圆的周长和面积的C语言代码,使用宏定义设定PI的值,公式书写要注意乘号不能省略。定义3个float型变量,根据圆的周长和面积公式进行计算。导例:计算圆的周长和面积程序实现#include<stdio.h>#definePI3.14intmain(){floatr,perimeter,area;printf("Enterradius:");scanf("%f",&r);perimeter=2*PI*r;area=PI*r*r;printf("Perimeter=%.2f,Area=%.2f\n",perimeter,area);return0;}导例:逆序输出问题描述将连续输入的3个数字字符组成1个逆序的三位整数并输出。030201040506问题分析算法描述程序实现运行结果程序分析将数字字符转换成对应整数,通过运算得到逆序整数并输出。定义变量,接收数字字符,转换为整数,计算逆序数并输出。展示了逆序输出的C语言代码,可通过修改代码实现输入三位整数逆序输出,对于不确定位数的整数逆序输出需使用循环结构知识。给出了程序运行时的输入和输出示例,如输入“235”,输出“532”。程序通过输入函数接收字符,减去字符零转换为整数,乘以合适权重累加得到逆序整数。导例:逆序输出程序实现#include<stdio.h>intmain(){charch1,ch2,ch3; /*定义3个字符变量*/intd1,d2,d3;/*定义3个整形变量*/intinver; /*整形变量,存放逆序数*/printf("pleaseinput3characters:");ch1=getchar();ch2=getchar();ch3=getchar();/*分别输入3个数字字符*/d1=ch1-'0';d2=ch2-'0';d3=ch3-'0';/*分别计算3个数字字符对应的整数*/inver=d3*100+d2*10+d1; /*计算逆序数*/printf("Theinversenumberis%d\n",inver);/*调用printf()函数输出结果*/}赋值语句、函数调用语句赋值语句由赋值表达式和分号组成,赋值号左侧是变量,右侧是表达式,C程序中乘号不能省略。赋值语句由函数调用表达式和分号组成,一般形式为函数名(参数列表);。函数调用语句仅由一个分号构成,不执行任何操作,常作为空循环体。空语句把多条语句用一对大括号“{}”括起来组成,在程序中作为单条语句存在。复合语句04基本控制结构-分支结构导例:考核通过了吗问题描述利用分支语句通过成绩判定单项考核和综合考核是否通过,并输出“通过”或“不通过”。问题分析将考核成绩与60进行比较,判定单项考核是否通过,根据单项考核结果判定综合考核是否通过。算法描述接收用户输入的三项考核成绩,将各项成绩与60进行比较,输出判定结果。程序实现展示了考核结果判断的C语言代码,使用if-else语句实现双分支结构。运行结果给出了程序运行时的输入和输出示例,如输入“588278”,输出各项考核结果。程序分析程序使用if-else语句,条件表达式可以是关系表达式、逻辑表达式等,根据表达式的值执行相应操作。导例:考核通过了吗导例:考核通过了吗程序实现#include<stdio.h>intmain(){/*定义各项考核成绩变量*/intscore1;intscore2;intscore3;/*输入考核成绩*/printf("请输入三项考核成绩:");scanf("%d%d%d",&score1,&score2,&score3);/*输出考核结果*/if(score1>=60)printf("第一项考核结果:通过\n");elseprintf("第一项考核结果:不通过\n");if(score2>=60)printf("第二项考核结果:通过\n");elseprintf("第二项考核结果:不通过\n");if(score3>=60)printf("第三项考核结果:通过\n");elseprintf("第三项考核结果:不通过\n");if((score1>=60)&&(score2>=60)&&(score3>=60))printf("综合考核结果:通过\n");elseprintf("综合考核结果:不通过\n");}导例:今年是闰年吗问题描述从键盘输入年份信息,判断是否为闰年。问题分析根据闰年的条件,判断输入的年份是否满足条件。算法描述输入年份信息,判断是否能被4整除且不能被100整除或能被400整除,输出判断结果。程序实现展示了判断闰年的C语言代码,使用if...else语句实现双分支结构。运行结果给出了程序运行时的输入和输出示例,如输入“1992”,输出“YES”;输入“2013”,输出“NO”。程序分析程序中判断年份能否被4整除通过判断余数是否为0,是典型的双分支结构。导例:今年是闰年吗程序实现#include<stdio.h>intmain(){intyear;printf("Enteryear:");scanf("%d",&year);

if(year%4==0&&year%100!=0||year%400==0)/*闰年的条件*/printf("YES\n");elseprintf("NO\n");return0;}导例:求解一元二次方程问题描述从键盘输入一元二次方程的3个系数,编程计算该方程的解并输出。问题分析根据判别式的值不同,方程的解分为三种情况。算法描述输入方程系数,计算判别式,根据判别式的值输出方程的解或无解信息。程序实现展示了求解一元二次方程的C语言代码,使用elseif语句实现多分支选择结构,需包含数学函数头文件。运行结果给出了程序运行时的不同输入和输出示例,分别展示有两个解、一个解和无解的情况。程序分析计算平方根使用数学函数sqrt(),根据判别式结果输出不同解,是典型的多分支选择结构,也可使用switch语句或if...else语句嵌套实现。导例:求解一元二次方程导例:求解一元二次方程程序实现#include<stdio.h>#include<math.h>intmain(){inta,b,c,s;doublex1,x2;printf("Enter3integers:");scanf("%d%d%d",&a,&b,&c);s=b*b-4*a*c;if(s>0){x1=(-b+sqrt(s))/(2*a);x2=(-b-sqrt(s))/(2*a);printf("x1=%lf,x2=%lf\n",x1,x2);}elseif(s==0){x1=x2=(-b)/(2.0*a);printf("x=%lf\n",x1);}elseprintf("Nosolution\n");return0;}导例:计算存款利息010203040506问题描述键盘输入存款本金和存期,计算到期时的利息及利息与本金的和。问题分析根据不同的存款期限决定存款利率,使用switch语句实现多分支选择结构。算法描述输入本金和存期,根据存期选择利率计算利息,输出利息和本息合计。程序实现展示了计算存款利息的C语言代码,使用switch语句根据存期选择利率。运行结果给出了程序运行时的输入和输出示例,如输入本金和存期,输出利息和本息合计。程序分析程序根据用户输入的存期使用不同利率计算利息,是典型的多分支选择结构,switch语句的使用有相关语法规定。导例:计算存款利息导例:计算存款利息程序实现#include<stdio.h>intmain(){doublemoney,rate,rest,total;inttime;printf("输入本金:");scanf("%lf",&money);printf("请输入存期:");scanf("%d",&time);

switch(time){case1:rate=0.016;break;case2:rate=0.017;break;case3:rate=0.0215;break;case5:rate=0.018;break;default:rate=0;}rest=money*rate*time;total=money+rest;printf("到期利息:%.2f\n",rest);printf("本息合计:%.2f\n",total);return0;}if语句单分支语句单分支if语句根据条件表达式的值决定是否执行语句1,语句1可以是复合语句,执行流程图有明确表示。双分支语句双分支if...else语句根据条件表达式的值执行语句1或语句2,语句1和语句2可以是复合语句,注意大括号的使用,执行流程图有明确表示。多分支语句多分支elseif语句依次判断条件表达式的值,执行相应语句,本质上是嵌套的分支语句,执行流程图有明确表示。switch语句语法形式switch语句根据表达式的值与case后面的常量表达式比较,执行相应语句段,可使用default分支,语句段可以是多条语句,执行流程有明确表示。switch(表达式){case常量表达式1:语句段1;case常量表达式2:语句段2;…case常量表达式n:语句段n;default:语句段n+1;}说明case语句中的常量有类型要求,各常量表达式不能相同,可省略default分支。执行一个case分支后,可使用break语句跳出switch结构,若省略break语句,程序会继续执行下一个case分支的语句段。05基本控制结构–循环结构循环结构基本概念定义与特点循环结构是结构化程序设计的基本控制结构之一,在程序设计中若要重复执行某些操作,就会用到它。其特点是在给定条件满足时,反复执行某段程序,直到条件不满足为止。循环要素实现循环结构需要确定两个循环要素,即循环重复执行的条件和每次循环需要重复执行的操作。导例:计算n!问题描述从键盘输入n的值,然后计算n的阶乘。问题分析n!是从1到n的累乘结果,计算过程就是求解累乘的过程。算法描述先输入n值,将累乘结果fact初值设为1,计数器i初值设为1。判断i是否小于等于n,若是则执行累乘操作并更新i的值,否则输出fact。程序实现通过for语句实现循环,代码中对变量进行初始化、循环条件判断和循环体执行,最终输出结果。运行结果输入n的值后,程序输出n的阶乘结果。程序分析定义变量fact存储累乘结果,i为循环控制变量。for语句先初始化i,判断条件,执行循环体,更新i的值。注意int类型变量表示范围有限,可将fact定义为double类型。导例:计算n!程序实现#include<stdio.h>intmain(){inti,n,fact;printf("inputn:");scanf("%d",&n);fact=1;for(i=1;i<=n;i++)fact=fact*i;printf("%d!=%d\n",n,fact);return0;}导例:寻找幸运字符先输入一个幸运字符,再输入一串字符,查找幸运字符并输出结果。问题描述需要多次重复单字符输入语句,判断输入字符是否为幸运字符并标记。问题分析定义相关变量,接收输入字符,判断是否为回车符,若不是则判断是否为幸运字符,最后根据标记输出结果。算法描述使用while语句实现循环,根据输入字符更新标记变量flag。程序实现程序输出是否找到幸运字符的结果。运行结果flag为标记变量,用于标记是否找到幸运字符。若要统计幸运字符个数,可修改语句。程序分析导例:寻找幸运字符程序实现#include<stdio.h>intmain(){charch,lucky;intflag=0;/*0表示未找到,1表示找到*/printf("请输入你的幸运字符:\n");lucky=getchar();getchar();printf("\n请输入一串字符,以回车结束:\n");ch=getchar();while(ch!='\n'){ if(ch==lucky){ flag=1; } ch=getchar();}if(flag==1){ printf("\n你的幸运字符找到啦!\n");}else{ printf("\n抱歉!输入的字符串中没有你的幸运字符!\n");}return0;}导例:计算π的近似值问题描述利用格里高利公式计算π的近似值,要求精确到最后一项的绝对值小于10-4。问题分析计算π值需将数列求和再乘以4,关键是找出通项表达式,设置循环结束条件。算法描述初始化相关变量,计算通项、累加和,更新符号和分母,判断循环条件,最后计算并输出π的值。程序实现使用do...while语句实现循环,利用数学函数计算绝对值。运行结果程序输出π的近似值。程序分析使用do...while语句先执行循环体,再判断条件。注意计算绝对值使用fabs函数。导例:计算π的近似值程序实现#include<stdio.h>#include<math.h>intmain(){doubleitem,sum,pi;intflag,i;i=1;flag=1;sum=0;do{item=flag*1.0/i;sum=sum+item;flag=-flag;i=i+2;}while(fabs(item)>=0.0001);pi=sum*4;printf("pi=%lf\n",pi);return0;}数字三角形问题描述输入行数n,输出n行的简易数字三角形。121321432154321问题分析适合使用循环结构,关键是找出输出值与行数的关系。算法描述定义相关变量,输入行数,通过两层循环输出数字三角形。程序实现使用两个for循环,外层控制行数,内层控制列数。运行结果程序输出指定行数的数字三角形。程序分析使用嵌套循环,注意循环变量不要混淆,外层循环变量i加1,内层循环变量j减1。导例:数字三角形程序实现#include"stdio.h"#defineN30//行数最大值intmain(){ intn; inti,j; do{ printf("请输入要打印的行数:"); scanf("%d",&n);}while(n<1||n>N); for(i=1;i<=n;i++){//行数从1到n for(j=i;j>=1;j--){//列数从i到1 printf("%-4d",j); } printf("\n");//换行

}}for语句语法形式for(表达式1;表达式2;表达式3){循环体语句}执行过程先执行表达式1,判断表达式2,若为真则执行循环体语句和表达式3,再判断表达式2,直到为假退出循环。使用注意事项表达式1只执行一次,循环体语句若有多条需用大括号括起来。可通过示例理解其执行顺序和循环变量的变化。while语句语法形式while(表达式){循环体语句}执行过程先判断表达式的值,若为真则重复执行循环体语句,直到条件不满足。循环体可能一次也不执行。使用注意事项for语句和while语句可以相互转换,给出转换的示例代码。do...while语句语法形式do{循环体语句}while(表达式);执行过程先执行一遍循环体语句,再判断表达式的值,若为真则重复执行,循环体至少执行一遍。三种循环语句比较for和while先判断条件再执行循环体,do...while先执行循环体再判断条件。for适用于循环次数确定的情况,while和do...while适用于循环次数不确定的情况。嵌套循环概念与示例在循环中使用循环称为嵌套循环,以数字三角形为例,展示二重循环的执行过程。for(i=1;i<=n;i++){//行数从1到n for(j=i;j>=1;j--){//列数从i到1printf("%-4d",j); } printf("\n");//换行}可用于解决如求1+2!+3!+…+n!等问题,注意循环变量的初始化位置。inti,j;doubleitem,sum;sum=0;//累加和的初值为0for(i=1;i<=n;i++){ item=1;//对于每一个i,阶乘item的初值均为1for(j=1;j<=i;j++){//求i!item=item*j; } sum=sum+item;//把i!累加到sum中 }这里要特别注意语句item=1;的位置,一定要在外层转向语句:break和continue语句break语句可用于switch和循环语句中,提前终止并跳出循环,多层嵌套时只能结束本层循环,常与if语句配合使用。continue语句用于循环体中,跳过本次循环中continue后面的语句,继续执行下一次循环,不跳出循环体。示例分析通过具体的代码示例,对比break和continue语句的不同效果,以及在while循环中使用continue可能出现的问题。06综合案例分析可以构成三角形吗问题描述问题分析算法描述程序实现运行结果程序分析输入正整数n和n组三条边的边长,判断能否构成三角形及三角形的类型。输入n,循环输入边长,根据条件判断并输出结果。程序输出每组边长对应的三角形判断结果。可使用嵌套if...else语句实现,但为提高可读性,建议避免嵌套层次过多。使用for循环和多个if...else语句实现判断逻辑。使用循环结构输入边长,通过多次if...else语句判断是否构成三角形及类型。导例:可以构成三角形吗程序实现#include<stdio.h>intmain(){intn,i;floata,b,c;printf("请输入一个正整数n:");scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入三条边的值:\n");scanf("%f%f%f",&a,&b,&c);if(((b+c)<=a)||((a+c)<=b)||((a+b)<=c))printf("不能构成三角形!\n");elseif(a!=b&&b!=c&&a!=c)printf("可以构成不等边三角形!\n");elseif(a==b&&b==c)printf("可以构成等边三角形!\n");elseprintf("可以构成等腰三角形!\n");}}列出小于n的全部素数问题描述输入一个数值,列出小于它的全部素数。问题分析需要从2到n-1逐一判断每个数是否为素数,采用多重循环求解。算法描述输入n,从2到n-1循环判断每个数是否为素数,若是则输出。程序实现使用for语句嵌套while语句完成循环过程。运行结果程序输出小于n的所有素数。程序分析根据循环次数确定情况,选择合适的循环语句,也可尝试其他实现方式。导例:列出小于n的全部素数程序实现#include<stdio.h>intmain(){intn;intm,i;printf("请输入一个大于1的自然数:\n");scanf("%d",&n);printf("小于%d的素数有:\n",n);for(m=2;m<n;m++){i=2;while(m%i!=0&&i<m)i++;if(i==m)printf("%d\t",m);}return0;}导例:诚实族和说谎族问题描述根据三个人的回答判断他们分别来自诚实族还是说谎族。问题分析使用穷举法,列举每个人的两种可能性,通过关系表达式判断。算法描述定义变量,列举所有组合,判断条件是否同时成立并输出结果。程序实现使用三重嵌套的for循环和if语句进行判断。运行结果程序输出三个人所属的族。程序分析理解复杂的关系表达式和逻辑运算符的使用,以及三目运算符在输出中的应用。导例:诚实族和说谎族程序实现#include<stdio.h>intmain(){inta,b,c;/*定义3个整型变量,分别表示3个人属于哪个族,*//*1表示诚实族,0表示说谎族*/for(a=0;a<=1;a++)/*穷举各种可能性*/for(b=0;b<=1;b++)for(c=0;c<=1;c++)if((a&&a+b+c==2||!a&&a+b+c!=2)&&(b&&a+b+c==1||!b&&a+b+c!=1)&&(c&&a+b+c==1||!c&&a+b+c!=1)){printf("Aisa%s.\n",a?"honest":"liar");printf("Bisa%s.\n",b?"hon

温馨提示

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

评论

0/150

提交评论