您好,欢迎访问三七文档
1«C语言程序设计»实训指导书2实验1:选择结构程序设计一.实训目的(1)了解C语言表示逻辑量的方法(以O代表“假”,以非O代表“真”)。(2)学会正确使用逻辑运算符和逻辑表达式。(3)熟练掌握if语句和switch语句。(4)结合程序掌握一些简单算法。(5)学习调试程序。二.实训环境PC机Windows操作系统TC2.0三.实训内容(1)if语句语法(2)switch语句语法(3)比较两种选择结构四.实训过程实训知识讲解:在C语言中,设计选择(分支)结构程序要解决的问题:一、如何表示选择条件:在C语言中表示选择条件,一般用:关系表达式、逻辑表达式二、实现选择结构用什么语句:C语言中实现选择结构所用语句:if语句1.第一种形式1)语句格式:if(表达式)语句语句中的表达式必须用单括号“(”和“)”括起来。表达式后面语句也可使用复合语句。2)语句功能:如果表达式的值为真(T),则执行其后的语句,否则不执行该语句。在C语言中,没有逻辑型数据类型。当表达式的值为任何非零值,表示表达式的条件成立;当表达式的值为零值,表示表达式的条件不成立。2.第二种形式1)语句格式:if(表达式)语句1;else语句2;说明:else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用2)语句功能:如果表达式的值为真(T),则执行语句1,否则执行语句2。3.第三种形式1)语句格式if(表达式1){语句组1}elseif(表达式2){语句组2}elseif(表达式3){语句组3}elseif(表达式4){语句组4}else{语句组5}若语句组5又是一条if语句,整个语句最少是一个6个分支的多分支if语句。4.if语句说明1)在三种形式的if语句中,条件表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。2)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。switch语句1.switch语句的一般形式switch(表达式){case常量表达式1:语句组13case常量表达式2:语句组2......case常量表达式n:语句组n[default:语句组n+1]}2.执行过程1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句组;2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default后面的语句,然后,再执行switch语句的下一条。case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断;“表达式”可以是int、char和枚举型中的一种,每个case后面“常量表达式”的值,必须各不相同,多个case子句,可共用同一语句(组)。3.switch语句使用说明1)在case后的各常量表达式的值不能相同,否则会出现错误。2)在case后,允许有多个语句,可以不用{}括起来。3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。4)default子句可以省略不用。5)多个case子句,可共用同一语句(组)。实训习题分析:1.完成下面的程序,在空白处填入a,b,c,取a,b,c中最大者赋给max。A.if(ab&&ac)B.if(ab)max=________if(ac)elsemax=______if(bc)elsemax=________max=______elseelsemax=________if(bc)max=________elsemax=_________2.输入a,b,c三个整数,要求将绝对值最大者打印输出。【分析提示】此题的关键是绝对值如何表示,x的绝对值也以表示成:abs(x)。可以用伪代码写出程序的算法。Ifabs(a)abs(b)则x=a否则x=b(这时说明x中存放着a、b中绝对值较大的一个数);如果ifabs(x)abs(c)则绝对值较大的一个是x,否则绝对值较大的一个是c。3.输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)【分析提示】一个数除2若余数为0,则这个数一定是偶数,否则是奇数。C语言中的求余运算符为“%”,若输入的数为偶数则输出“even”,若输入的数为奇数则输出“odd”。自已写出程序代码。4.给定一个正整数,判断它是否能同时被3、5、7整除。实训练习:本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。4(1)有一函数用scanf函数输入x的值,求y值。运行程序,输入的值(分别为1、1≤10、≥10三种情况)检查输出的值是否正确。(2)给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,分为B,70~79分为C,60~69分为D,60分以下为E。①事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。(写出程序)②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。五.实训总结x(x1)2x-1(1≤x10)y=3x-11(x≥10)5实验2:循环结构程序设计一.实训目的1.熟悉用while语句,do-while语句和for语句实现循环的方法。2.掌握循环嵌套的用法。3.掌握在程序设计中用循环的方法实现各种算法(如迭代,递推,穷举等)。4.掌握goto,break和continue语句的用法。二.实训环境PC机Windows操作系统TC2.0三.实训内容1.while语句格式:while(表达式)语句2.do-while语句格式:do语句while(表达式);3.for语句for语句的一般格式:for(表达式1;表达式2;表达式3)语句for(初值表达式;条件表达式;增值表达式)语句4.goto语句格式:goto语句标号四.实训过程实训知识讲解:循环结构程序程序中使用的这种重复执行结构,称为循环结构。C语言提供了循环语句来实现,以简化、并规范循环结构程序设计。C语言提供的循环语句有以下几种:(1)用goto语句和if语句构成循环。(2)用while循环语句。1.直到型循环语句一般格式do语句while(表达式);2.语句功能:先执行循环体语句,再判别表达式的值,若表达式的值为真(T)时则继续循环,直到表达式的值为假(F)时才终止循环,执行while语句后面的语句。。do-while循环语句的特点是:先执行循环体语句组,然后再判断循环条件。(3)用for循环语句。1.语句的一般格式:for(表达式1;表达式2;表达式3)语句说明:(1)表达式1,可以是给循环变量赋初值的赋值表达式,也可是与此无关的其它表达式(如逗号表达式)(2)“表达式2”是循环条件部分,一般是关系或逻辑表达式,也允许是数值或字符表达式。(3)表达式1,表达式2,表达式3(循环变量增值),3部分均可缺省,甚至全部缺省,但间的分号不能省略。(4)当循环体语句由多条语句构成时,必须使用复合语句形式。2.for语句的执行过程(1)求解表达式1;(2)求解表达式2;如果其值非0,执行(3);否则,转至执行(4)。(3)执行循环体语句组,并求解表达式3,然后转向步骤(2)。(4)执行for语句的下一条语句。在循环语句中,for语句最为灵活,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。(4)用do-while循环语句。(5)break语句1.break语句作用是跳出switch语句或跳出本层循环,转去执行后面的下一条语句。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。62.break语句的形式为:break;(6)continue语句continue语句只能用在循环体中。1.continue功能:continue语句只能用在循环体中,结束本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环条件的判断与执行。应注意的是,本语句只结束本层次的循环,并不跳出循环。2.语句格式:continue;说明:对于for循环,跳过循环体其余语句,转向循环表达式3的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。实训例题分析:1.输出100-999之间的全部素数。2.编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。3.打印下面的图案****************【程序分析提示】这是一个用双层循环实现打印图案的问题。打印几行用外循环实现,每行打印多少个字符,用内循环实现。具体每行哪个位置打印字符,由内循环体的if语句实现。4.求出所有各位数字的立方和等于1099的三位整数。【程序分析提示】可用三层循环实现。设最外层循环变量为i(表示百位);此外层循环变量设为j(表示十位);最内层循环变量为k(表示个位)。输出ijk的条件:所有个位数组的立方和等于1099,即:i*i*i+j*j*j+k*k*k==1099;实训例题练习:1.下面程序段输出结果是()Intx=3;Do{printf(“%d\n”,x-=2);}While(!(--x));2.x和y均为int型变量,执行循环语句后,y值为()For(y=1;x=1;y=50;y++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}编写下列程序,上机调试、验证。1.键盘上输入10个数,求其平均值。2.输出1—100之间,其数的平方在150—200之间的第一个数,如找到,退出循环,输出该数的平方。反之,继续查找。3.输入一正整数,按从低到高的顺序依次输出其各位数字的值,例如:输入8546输出8546【程序分析提示】关键是确定整数的各位数字是什么4.从键盘上输入若干正整数,求其中最大数和最小数。输入的数以0为中止标志。【程序分析提示】(1)设第一个读取德数是当前最大数和最小数;(2)若当前读取的整数不为0,则继续循环;(3)若当前读取的数比最大数大,则记录;比最小数小,则记录;(4)读取下一个整数。实训练习:1.下面的程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环.请填空.#include”stdio.h”main(){intn=0;charc;7c=getchar();while(【】){if(【】)n++;c=getchar();}printf(“n=%d”,n);}键盘输入:abcdef12345kCR(CR表示回车)输出结果:2.当运行下面程序时,从键盘输入12345–1CR(CR表示回车)时,输出结果:main(){intk=0,n;do{scanf(“%d”,&n);k+=n;}while(n!=-1);printf(k=%dn=%d\n,k,n);}3.下列程序是求水仙花数的程序,所谓水仙花数是指一个三位数,其各位数字立方和等于该数。例如,153是一个水仙花数。main(){inti,j,k,n;printf(Thenumberis:);for(【】;n++){i=【】;j=n/10-i*10;k=【】;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){printf(%d\t,【】);}}}程序输出结果:作业题:1.输入两个正整数,求其最大公约数和最小公倍数。2.输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数。3.用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。五.实训总结8实验3:数组应用程序设计一.实训目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与
本文标题:C实训指导书
链接地址:https://www.777doc.com/doc-3263608 .html