c语言教案ch循环结构.pptVIP

  • 13
  • 0
  • 约 70页
  • 2015-12-18 发布于湖北
  • 举报
c语言教案ch循环结构.ppt

2 选择结构的程序设计能解决的问题 ex ex ex ex ex ex * 四大淡水湖的大小排序问题(逻辑题) 我国有四大淡水湖。 A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。 B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。 C说:洪泽湖最小,洞庭湖第三。 D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。 4个人每个人仅答对了一个,请编程给出4个湖从大到小的顺序。 #includestdio.h /*四大淡水湖的从大到小排序*/ int main() { int a,b,c,d,flag; /*四湖的顺序数,分别表示洞庭湖,洪泽湖,鄱阳湖,太湖*/ for(a=1;a5;a++) /*对四湖排名分别赋值*/ for(b=1;b5;b++) for(c=1;c5;c++) { d=10-(a+b+c); flag=(a*b*c*d==24) d0; /*限定abcd的值互不相等,即不出现并列的情况*/ flag=flag ((a==1)+(b==4)+(c==3)==1); /*A的话*/ flag=flag ((b==1)+(a==4)+(c==2)+(d==3)==1); /*B的话*/ flag=flag ((b==4)+(a==3)==1); /*C的话*/ flag=flag ((c==1)+(d==4)+(b==2)+(a==3)==1); /*D的话*/ if(flag) printf(四湖的大小顺序:\n洞庭湖:%d\n洪泽湖:%d\n鄱阳湖:%d\n太湖:%d\n,a,b,c,d); } return 0; } * * * #includestdio.h #includestdlib.h #includetime.h void main() { time_t start,end; start = time (NULL); end = time (NULL); while (difftime(end,start) / CLOCKS_PER_SEC == 20) { break; } } //为什么一运行马上就结束了,怎么才能让它在指定时间内结束 * (菲波拉切序列) 求数列的问题比求累加还简单: 还是首先思考: 那一部分在重复?什么时候需要重复? 求数列是,求一项,再求一项,重复求每一项, 当然,不够指定项数,就继续重复求 前边的例子,已经给出了求级数和序列的算法规律,也是一样的,求一项输出一项,但是对这个特定给出的序列来说,两项两项的求更方便, 另外这个通项公式比较特别,不是项数n的表达式,而是利用前两项的值求后一项,这种情况,我们称为递推公式或迭代公式或递归公式,数学中也用的很多.特别是计算数学,如ex6.11,ex6.12都属于这种情况 注:考虑上下的f1的值是否相(强调赋值语句) 考虑,为什么n到20而不是40? 强调循环多少次.执行完循环语句后i等于多少? * 还是首先思考: 那一部分在重复?什么时候需要重复? 一个一个重复检查是否满足条件 * 算法分析: 1) 素数:即除了自身及1外没有真因子的自然数 (不包括1) 2) 更进一步;若2~m-1中没有m的因子,则m为一个素数。 3) 再进一步;若2~ 中没有m的因子,则m为一个素数。(m=a*b 则a,b中至少有一个是不大于m的平方根的) 显然此用循环来检查最方便。 强调循环多少次.执行完循环语句后i等于多少? 如果n有真因子: 则n可以写成如下形式:n=a*b, 则a,b中一定有一个 小于等于n的平方根 (否则a*bn),即n一定有小于等于n的平方根的真因子。 从而:n有真因子 《==》n有 小于等于n的平方根的真因子 所以验证n为素数只需要验证 从2开始到n的平方根 没有n的因子。 * 强调循环多少次.执行完循环语句后i等于多少? 另外注意一句话: 从2到m的平方根之间,一个i不能整除m,不能说明任何问题,只有从2到m的平方根之间所有的i都不能整除m,才能说明m是素数!!! * /* 10个素数换一行*/强调循环多少次.执行完循环语句后i等于多少? * 强调循环多少次.执行完循环语句后i等于多少? * 先考虑什么样的问题需要逐个处理字符串中的字符: 如,要把一篇文本转化为密码文件,那你就必须把文本中的字符,一个一个转化为对应的密码字符. 又如,统计一篇文本其中的字母字符,数字字符及其他字符的个数,也需要逐个检查文本中的字符,进行分类统计. 等等 * 算法分析: 1 输入一串字符,并逐

文档评论(0)

1亿VIP精品文档

相关文档