C程序设计-习题讲解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计-习题讲解 C程序设计-习题讲解 复习题讲解 求表达式的值。 (1)设x=2.5,a=7,y=4.7,求x+a%3*(int)(x+y)%2/4; (2)设a=2,b=3,x=3.5,y=2.5,求(float)(a+b)/2+(int)x%(int)y; (1)分析a%3*(int)(x+y)%2/4=7%3*(int)(2.5+4.7)%2/4=1*7%2/4=0 x+a%3*(int)(x+y)%2/4=2.5+0=2.5; (2) 分析 (float)(2+3)/2+(int)3.5%(int)2.5=2.5+3%2=2.5+1=3.5; C程序设计-习题讲解 2. 有函数如下: 写一程序,输入x,输出y值。 思路: 如果 x1,y=x; 如果1=x10,y=2x-1; 如果x=10,y=3x-11; 要求:x,y的类型未定,定义为“float〞型。 问题: 程序中能不能写成y=2x-1或者y=3x-11; C程序设计-习题讲解 3. 通过键盘输入正整数m和n,求其最大公约数和最小公倍数。 分析:假设最大公约数记为lcm,最小公倍数记为lem,lem=m*n\ lcm; 问题:如何求最大公约数? 求最大公约数的数学表达:分解质因数法、辗转相除法和查找法;分解质因数法写程序不容易; 辗转相除法: t=m%n; 如果t≠0,t’=n%t; 如果t‘≠0,t’’=t%t‘; ……… 直到某时刻tn=0,前一次tn-1即为最大公约数; C程序设计-习题讲解 查找法: 记min=min(m,n),表示m和n中最小的一个数; 如果m%min=0且n%min=0,则min为最大公约数; 否则min=min-1, 继续m%(min-1)同n%(min-1),如果m%(min-1)=0且n%(min-1)=0,则min-1为最大公约数; 否则min=min-2, 继续m%(min-2)同n%(min-2),如果m%(min-2)=0且n%(min-2)=0,则min-2为最大公约数; 否则,继续……. 直到某时刻m%(min-t)=0且n%(min-t)=0,那么min-t即为最大公约数。 C程序设计-习题讲解 4. 求偶数序列2+4+6+…+100及奇数序列1+3+5+7+…+99之和。 分析:〔1〕i=2,i=4,i=6,……,i=i+2; 〔2〕sum=0,sum=sum+i; (3)i=100; C程序设计-习题讲解 5. 分析以下程序的运行结果。 #include stdio.h int main() {int i,k; for (i=0;i=3;i++) // 输出上面4行*号 {for (k=0;k=2*i;k++) printf(*); // 输出*号 printf(\n); //输出完一行*号后换行 } for (i=0;i=2;i++) // 输出下面3行*号 {for (k=0;k=4-2*i;k++) printf(*); // 输出*号 printf(\n); // 输出完一行*号后换行 } return 0; } C程序设计-习题讲解 6.分析以下程序的运行结果。 #include stdio.h int main() {int i,j,k=1,m=7; for(i=1;i=6;i++) { printf(i=%d,,i); printf(k=%d,k-1=%d\n,k,k-1); for(j=i;j6+i;j++) printf(j=%d ,j); printf(\n); k++; } return 0; } C程序设计-习题讲解 7.有一个已经排序好的整数数组,插入一个数,组成新的排序的数组。 算法:假设排序规则为升序,共有10个数,分别记为a0,a1,…,a9,要插入的数为x,有几种情况: 〔1〕xa0,原来的数都要向后移动一位,即排序后a0=x,a1=a0,a2=a1,…,a10=a9; 〔2〕xa9,原来的数不动,新的排序为a0,a1,…,a9,a10,其中a10=x; (3)a0xa9,这种情况算法复杂,要确定出大于x的第一个数,记为ai,则ai及之后的数都要向后移动一位,排序后

文档评论(0)

天下为公 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档