您好,欢迎访问三七文档
信息学初级班第八课一、复习,回顾1、循环for语句的复合语句和嵌套语句2、函数str、pos的应用3、5个关键词:maxint;inc;str;pos;string4、作业讲解(1)1026题目描述在1-n中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数的个数,如果没有请输出0。输入输入一行,只有一个整数n(1=n=2000)输出输出只有一行(这意味着末尾有一个回车符号),包括1个整数。样例输入10样例输出0varn,i,g:integer;beginread(n);fori:=1tondobeginif(imod3=2)and(imod5=3)and(imod7=2)theng:=g+1;end;writeln(g);end.(2)1030题目描述某动物饲养中心用X元专款购买小狗(每只A元)和小猫(每只B元)两种小动物。要求专款专用,(至少猫狗各一),正好用完?请求出方案的总数。如没有请输出0.输入输入一行,只有三个整数.分别为X,A,B.(100X32768;1=A,B=100)输出输出只有一行(这意味着末尾有一个回车符号),包括1个整数。样例输入17003121样例输出3varX,Y,A,B,ans,i:integer;beginread(X,A,B);fori:=1toXdivAdobeginY:=X-i*A;if(YdivB0)and(YmodB=0)theninc(ans);end;writeln(ans);end.(3)1033题目描述找出1-N中能被5整除且至少有一位数字是5的所有整数的个数.N32767输入输入只有一行,只有1个整数N。输出输出只有一行(这意味着末尾有一个回车符号),包括1个整数。样例输入9999样例输出1271varn,i,ans:integer;s:string;beginread(n);fori:=1tondoifimod5=0thenbeginstr(i,s);ifpos('5',s)0theninc(ans);end;writeln(ans);end.二、循环while语句1、for与while的区别:for循环语句是一种次数循环,需要预先知道循环的次数。当预先无法知道循环次数时,可以使用while循环。while循环是一种条件循环,只要条件成立循环就一直持续,直到条件不成立为止。2、格式:while布尔表达式do语句;3、例:1020题目描述编程求1+3+5+...+n输入输入一行,只有一个整数n(1=n=9999)这里n为奇数。输出输出只有一行样例输入99样例输出2500解法一:用次数循环for语句varn,i,s:longint;beginread(n);fori:=1tondoifodd(i)then//odd叫奇数函数,用于判定变量是否为奇数s:=s+i;writeln(s);end.解法二:用条件循环while语句vari,n,s:longint;beginread(n);i:=1;whilei=ndo//while只要当i=n条件成立循环一直持续,条件不成立循环退出。begins:=s+i;i:=i+2;end;writeln(s);end.三、课堂程序示例1、1032题目描述阿姆斯特朗数:如果一个三位正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数,如407=4^3+7^3+0^3,试编程求出N以内的所有阿姆斯特朗数的个数。(100=N=999)输入输入一行,只有一个整数N输出输出只有一行(这意味着末尾有一个回车符号),包括1个整数。样例输入999样例输出4vari,n,b,s,g,ans:integer;beginread(n);i:=100;whilei=ndobeginb:=imod10;s:=idiv10mod10;g:=idiv100;ifi=b*b*b+s*s*s+g*g*gtheninc(ans);i:=i+1;end;writeln(ans);end.2、1037题目描述任意输入一个整数,判断它是否为素数。是的话输出T,不是的话输出F.输入输入只有一行,包括1个整数(在长整型范围内)。输出输出只有一行.样例输入57样例输出Fvara,i:longint;beginread(a);fori:=2totrunc(sqrt(a))do//trunc叫做截尾函数,可以舍去小数部分。begin//sqrt叫做平方根函数,可以计算平方根。ifamodi=0thenbeginwriteln('F');halt;//halt表示退出程序。另外,break可以表示退出循环。end;end;ifa1thenwriteln('T')elsewriteln('F');end.四、作业算法预讲解1、最大公约数(1029)最大公约数,指两个或多个整数共有约数中最大的一个。(1)数学常用做法:最大公约数:2*3=6(2)辗转相除法(欧几里得算法):其方法是用较大的数除以较小的数,上面较小的除数和得出的余数构成新的一对数,继续做上面的除法,直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。以求288和123的最大公约数为例,操作如下:288÷123=2余42123÷42=2余3942÷39=1余339÷3=13所以3就是288和123的最大公约数。2、最小公倍数(1028)两个或多个整数公有的倍数叫做它们的公倍数,公倍数里最小的那一个叫做它们的最小公倍数。按前面的示例,12与18的最小公倍数是:2*3*2*3最小公倍数=两数的乘积/最大公约数,按这个公式,288和123的最小公倍数是:288*123/33、判断是否为素数素数又叫质数,定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为素数。一个数只要对2至它的平方根(取整)这一序列的数依次进行整除判断,只要这些数都不能整除,这个数就是素数。比如59这个数,平方根(取整)为7,我们把59依次整除2至7,59÷2、59÷3、59÷4、59÷5、59÷6、59÷7,发现都不能整除,由此判定59就是素数。五、本节课关键词:while;odd;break;halt;sqrt;trunc;六、作业:1、1029先让两个数字大的在前小的在后,然后用while条件循环做辗转相除,直到余数为0为止结束循环。2、1028先按1029的算法求出最大公约数,然后用“最小公倍数=两数的乘积/最大公约数”的算法求出最小公倍数。3、1035参考1037题,用两个for循环来计数,第一个for用于循环m至n取数,第二个for用于循环2至该数平方根(取整)判定是否为素数。使用break可以跳出当前这重循环。fork:=mtondofori:=2totrunc(sqrt(k))doifkmodi=0then⁞想一想,如果m为小于2的数字,适合直接放入这个for循环里去做吗?如果不适合,可以在for循环之前先做一下什么处理?下节课9月25日上课,祝大家中秋快乐!
本文标题:信息学初级班第8课
链接地址:https://www.777doc.com/doc-2691729 .html