省计二级C语言程序题.doc

省计二级C语言程序题.doc

ID:49659025

大小:127.00 KB

页数:18页

时间:2020-03-02

省计二级C语言程序题.doc_第1页
省计二级C语言程序题.doc_第2页
省计二级C语言程序题.doc_第3页
省计二级C语言程序题.doc_第4页
省计二级C语言程序题.doc_第5页
资源描述:

《省计二级C语言程序题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、湖南省计算机二级C语言程序题汇编1、编写程序,计算0~50范围内有多少个数,其每位数字之积小于每位数字和。分析:一位数显然不满足条件。求解思路是:(1)k=10,n=0(k作循环变量,n统计满足条件的数据个数)(2)取k的十位数字a和个位数字b:a=k/10,b=k%10(3)如果ab50则输出n的值,程序结束。否则转(2)参考代码(n=17):main(){intk,a,b,n=0;for(k=10;k<=50;k++){a=k/10,b=k%10;if(a*b

2、果等于其所有因子之和,则称该数为完数。求10000以内完数的个数。分析:从数学概念上讲,如果整数a能被整数k整除,就称k为a因子,又叫约数。但在编程应用中,因子是指正整数,且没有包括a本身,而约数可包括a本身。例如:从数学角度,-6,-3,-2,-1,1,2,3,6均是6的因子,也均是6的约数。但在在编程应用中,6的因子只有1,2,3。6的约数只有1,2,3,6。本问题的求解思路是:(1)k=6,n=0(k作循环变量,n统计满足条件的数据个数)(2)求k的所有因子之和s:A.s=1,t=2(1是k的因子,作为和s的初值;t用于因子搜索)B.如果k%t为0,则t是k的因子,

3、更新和值:s=s+tC.t++D.如果t>k/2则转(3),否则转B(k的最大因子不超过k/2)(3)如果s与k相等,则n++(4)确定下一个整数是否为完数:k++(5)如果k>10000则输出n,程序结束。否则转(2)参考代码(n=4):main(){intk,s,i,n=0;for(k=6;k<10000;k++){s=1;/*1是因子,直接作为和的初值*/for(i=2;i<=k/2;i++)/*求k的所有因子之和*/if(k%i==0)s+=i;if(s==k)n++;/*k为完数时累计个数*/}printf("%d",n);}3、求四位数的奇数中,各位数字之积是

4、60的正整数倍的数的和。求解基本思路是:(1)k=1001,s=0(从最小的四位奇数开始搜索;和初值为0)(2)求k的各位数字:A.千位数字:k/1000B.百位数字:k/100%10C.十位数字:k/10%10D.个位数字:k%10(3)求k各位数字积t=(k/1000)*(k/100%10)*(k/10%10)*(k%10)(4)如果t为正数且能被60整除,则s=s+k(5)k+=2(因为k是奇数)(6)如果k>10000则输出和值s,程序结束。否则转(2)参考代码(s=3456254):main(){intk,t;longs=0;for(k=1001;k<10000

5、;k+=2){t=(k/1000)*(k/100%10)*(k/10%10)*(k%10);if(t&&t%60==0)s+=k;/*t非零即为逻辑真*/}printf("%ld",s);}4、有5羊4犬3鸡2兔值钱1496,有4羊2犬6鸡3兔值钱1175,有3羊1犬7鸡5兔值钱958,有2羊3犬5鸡1兔值钱861。求鸡值多少钱?分析:这是求解方程类问题。处理的基本方法是穷举搜索。参考代码如下:(c=23)main(){inta,b,c,d;for(a=1;a<300;a++)for(b=1;b<300;b++)for(c=1;c<140;c++){d=861-2*a-3

6、*b-5*c;if(d<=0)break;if(5*a+4*b+3*c+2*d!=1496)continue;if(3*a+1*b+7*c+5*d!=958)continue;if(4*a+2*b+6*c+3*d==1175)gotoRR;}RR:printf("%d",c);}5、求满足下列条件的四位数ABCD的个数:是8的倍数;A+B=B+C。分析:可从最小的四位数1000开始(是8的倍数),依次搜索满足条件A+B=B+C(即A=C)的整数。搜索步长为8。参考代码如下:(n=110)main(){intk,n=0;for(k=1000;k<10000;k+=8)if(

7、k/1000==k/10%10)n++;printf("%d",n);}6、求100~500间除5余4、除7余2的数的和。解法一:在[100,500]上穷举搜索。main()/*参考答案:3678*/{intk,s=0;for(k=100;k<500;k++)if(k%5==4&&k%7==2)s+=k;printf("%d",s);}解法二:由数学知识,满足除5余4、除7余2的最小正数为7*2+5*6-35=9。从而所有解为9+35*k,k为任意整数。main(){intk,s=0;for(k=114;k<500;k+=35

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。