- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计教程习题讲解2研讨
例35:编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是18的倍数,且D=6,A+B=B+C,即第一位数加上第二位数等于第二位数加上第三位数. main() { int a, b, c, d, i=0, n; for (n=1000;n=9999;n++) if(n%18==0) { a=n/1000; b=(n/100)%10; c=n%100/10; d=n%10; if(d==6a+b==b+c) i++; } printf(“%d”,i) } 例36:编写程序,求一正整数等差数列的前六项的平方和,该数列的前四项之和是26,之积是880. main() { int a, b, c, d, e, s; for(a=1;a=26;a++) for(b=1;b=a;b++) for(c=1;c=b;c++) for(d=1;d=c;d++) if(a+b+c+d==26a*b*c*d==880) { e=a-b; s=d*d+c*c+b*b+a*a+(a+e)*(a+e)+(a+2*e)*(a+2*e); printf(“s=%d”,s); } } 例37:编写程序,求出3到100之间所有非偶数非素数的数的个数。 #include “math.h” main() { int n, j, k , i=0; for(n=3;n100;n=n+2) { j=2; k=(int)sqrt(n); while(j=k) { if(n%j==0)break; j++; } if(j=k) i++; } printf(“%d”,i); } * * P63/例24 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){int i,j,k,n;printf(water flowernumber is:); for(n=100;n1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf(%d ,n); } }} 运行结果:153 370 371 407 P63/例25 求s=1!+2!+3!+…+n! , 其中n小于30。 #include “stdio.h” main(){ long s, t; int i, n; printf(input n:); scanf(%d, n); s=0; t=1; for(i=1; i=n; i++) { t=t*i; s+=t; }printf(1!+2!+3!+…+%d!=%ld\n, n, s);} P66/例26 把100以内的能被7整除的数输出 main() { int n,i=0; for(n=1;n=100;n++) { if(n%7!=0) continue; i=i+1; printf(“%5d”,n); if(i%4==0) printf(“\n”); } } P67/例27 求最大公约数和最小公倍数 思路:若已知整数X和Y的最大公约数是K,则它们的最小公倍数是x*y/k。 求解最大公约数有两种方法: (1)辗转相除法 两个数相除,若余数为0,则除数就是这两个数的最大公约数;若余数不为0,则以 除数作为新的被除
文档评论(0)