驾校考试,安全驾驶出行,开车小技巧,驾校教练,驾驶乐园,驾驶技术,驾校培训,驾校报名   
banner
pushdoctor:全国青少年软件编程等级考试C语言经典程序题10道
"\u003Cdiv\u003E\u003Cp\u003E全国青少年软件编程等级考试C语言经典程序题10道\u003C\u002Fp\u003E\u003Cp\u003E--------------------------------------------------------------------------------\u003C\u002Fp\u003E\u003Cp\u003E【程序1】\u003C\u002Fp\u003E\u003Cp\u003E题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月\u003C\u002Fp\u003E\u003Cp\u003E 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003Elong f1,f2;\u003C\u002Fp\u003E\u003Cp\u003Eint i;\u003C\u002Fp\u003E\u003Cp\u003Ef1=f2=1;\u003C\u002Fp\u003E\u003Cp\u003Efor(i=1;i<=20;i++)\u003C\u002Fp\u003E\u003Cp\u003E { printf(\"%12ld %12ld\",f1,f2);\u003C\u002Fp\u003E\u003Cp\u003E if(i%2==0) printf(\"\\n\");\u002F*控制输出,每行四个*\u002F\u003C\u002Fp\u003E\u003Cp\u003E f1=f1+f2; \u002F*前两个月加起来赋值给第三个月*\u002F\u003C\u002Fp\u003E\u003Cp\u003E f2=f1+f2; \u002F*前两个月加起来赋值给第三个月*\u002F\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序2】\u003C\u002Fp\u003E\u003Cp\u003E题目:判断101-200之间有多少个素数,并输出所有素数。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,\u003C\u002Fp\u003E\u003Cp\u003E 则表明此数不是素数,反之是素数。 \u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003E#include \"math.h\"\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003E int m,i,k,h=0,leap=1;\u003C\u002Fp\u003E\u003Cp\u003E printf(\"\\n\");\u003C\u002Fp\u003E\u003Cp\u003E for(m=101;m<=200;m++)\u003C\u002Fp\u003E\u003Cp\u003E { k=sqrt(m+1);\u003C\u002Fp\u003E\u003Cp\u003E for(i=2;i<=k;i++)\u003C\u002Fp\u003E\u003Cp\u003E if(m%i==0)\u003C\u002Fp\u003E\u003Cp\u003E {leap=0;break;}\u003C\u002Fp\u003E\u003Cp\u003E if(leap) {printf(\"%-4d\",m);h++;\u003C\u002Fp\u003E\u003Cp\u003E if(h%10==0)\u003C\u002Fp\u003E\u003Cp\u003E printf(\"\\n\");\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E leap=1;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E printf(\"\\nThe total is %d\",h);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序3】\u003C\u002Fp\u003E\u003Cp\u003E题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数\u003C\u002Fp\u003E\u003Cp\u003E 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003Eint i,j,k,n;\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"'water flower'number is:\");\u003C\u002Fp\u003E\u003Cp\u003E for(n=100;n<1000;n++)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E i=n\u002F100;\u002F*分解出百位*\u002F\u003C\u002Fp\u003E\u003Cp\u003E j=n\u002F10%10;\u002F*分解出十位*\u002F\u003C\u002Fp\u003E\u003Cp\u003E k=n%10;\u002F*分解出个位*\u002F\u003C\u002Fp\u003E\u003Cp\u003E if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E printf(\"%-5d\",n);\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"\\n\");\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序4】\u003C\u002Fp\u003E\u003Cp\u003E题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。\u003C\u002Fp\u003E\u003Cp\u003E程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: \u003C\u002Fp\u003E\u003Cp\u003E(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。\u003C\u002Fp\u003E\u003Cp\u003E(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,\u003C\u002Fp\u003E\u003Cp\u003E 重复执行第一步。\u003C\u002Fp\u003E\u003Cp\u003E(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003E\u002F* zheng int is divided yinshu*\u002F\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003Eint n,i;\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"\\nplease input a number:\\n\");\u003C\u002Fp\u003E\u003Cp\u003Escanf(\"%d\",&n);\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"%d=\",n);\u003C\u002Fp\u003E\u003Cp\u003Efor(i=2;i<=n;i++)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E while(n!=i)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E if(n%i==0)\u003C\u002Fp\u003E\u003Cp\u003E { printf(\"%d*\",i);\u003C\u002Fp\u003E\u003Cp\u003E n=n\u002Fi;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E else\u003C\u002Fp\u003E\u003Cp\u003E break;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"%d\",n);}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序5】\u003C\u002Fp\u003E\u003Cp\u003E题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,\u003C\u002Fp\u003E\u003Cp\u003E 60分以下的用C表示。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:(a>b)?a:b这是条件运算符的基本例子。\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003E int score;\u003C\u002Fp\u003E\u003Cp\u003E char grade;\u003C\u002Fp\u003E\u003Cp\u003E printf(\"please input a score\\n\");\u003C\u002Fp\u003E\u003Cp\u003E scanf(\"%d\",&score);\u003C\u002Fp\u003E\u003Cp\u003E grade=score>=90?'A':(score>=60?'B':'C');\u003C\u002Fp\u003E\u003Cp\u003E printf(\"%d belongs to %c\",score,grade);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序6】\u003C\u002Fp\u003E\u003Cp\u003E题目:输入两个正整数m和n,求其最大公约数和最小公倍数。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:利用辗除法。\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003E int a,b,num1,num2,temp;\u003C\u002Fp\u003E\u003Cp\u003E printf(\"please input two numbers:\\n\");\u003C\u002Fp\u003E\u003Cp\u003E scanf(\"%d,%d\",&num1,&num2);\u003C\u002Fp\u003E\u003Cp\u003E if(num1<num2) \u003C\u002Fp\u003E\u003Cp\u003E{ \u003C\u002Fp\u003E\u003Cp\u003E temp=num1;\u003C\u002Fp\u003E\u003Cp\u003E num1=num2; \u003C\u002Fp\u003E\u003Cp\u003E num2=temp;\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003Ea=num1;b=num2;\u003C\u002Fp\u003E\u003Cp\u003Ewhile(b!=0)\u002F*利用辗除法,直到b为0为止*\u002F\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E temp=a%b;\u003C\u002Fp\u003E\u003Cp\u003E a=b;\u003C\u002Fp\u003E\u003Cp\u003E b=temp;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"gongyueshu:%d\\n\",a);\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"gongbeishu:%d\\n\",num1*num2\u002Fa);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序7】\u003C\u002Fp\u003E\u003Cp\u003E题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:利用while语句,条件为输入的字符不为'\\n'.\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003E#include \"stdio.h\"\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{char c;\u003C\u002Fp\u003E\u003Cp\u003E int letters=0,space=0,digit=0,others=0;\u003C\u002Fp\u003E\u003Cp\u003E printf(\"please input some characters\\n\");\u003C\u002Fp\u003E\u003Cp\u003E while((c=getchar())!='\\n')\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E if(c>='a'&&c<='z'||c>='A'&&c<='Z')\u003C\u002Fp\u003E\u003Cp\u003E letters++;\u003C\u002Fp\u003E\u003Cp\u003E else if(c==' ')\u003C\u002Fp\u003E\u003Cp\u003E space++;\u003C\u002Fp\u003E\u003Cp\u003E else if(c>='0'&&c<='9')\u003C\u002Fp\u003E\u003Cp\u003E digit++;\u003C\u002Fp\u003E\u003Cp\u003E else\u003C\u002Fp\u003E\u003Cp\u003E others++;\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"all in all:char=%d space=%d digit=%d others=%d\\n\",letters,\u003C\u002Fp\u003E\u003Cp\u003Espace,digit,others);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序8】\u003C\u002Fp\u003E\u003Cp\u003E题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时\u003C\u002Fp\u003E\u003Cp\u003E 共有5个数相加),几个数相加有键盘控制。\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:关键是计算出每一项的值。\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003E int a,n,count=1;\u003C\u002Fp\u003E\u003Cp\u003E long int sn=0,tn=0;\u003C\u002Fp\u003E\u003Cp\u003E printf(\"please input a and n\\n\");\u003C\u002Fp\u003E\u003Cp\u003E scanf(\"%d,%d\",&a,&n);\u003C\u002Fp\u003E\u003Cp\u003E printf(\"a=%d,n=%d\\n\",a,n);\u003C\u002Fp\u003E\u003Cp\u003E while(count<=n)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E tn=tn+a;\u003C\u002Fp\u003E\u003Cp\u003E sn=sn+tn;\u003C\u002Fp\u003E\u003Cp\u003E a=a*10;\u003C\u002Fp\u003E\u003Cp\u003E ++count;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"a+aa+...=%ld\\n\",sn);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E==============================================================\u003C\u002Fp\u003E\u003Cp\u003E【程序9】\u003C\u002Fp\u003E\u003Cp\u003E题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程\u003C\u002Fp\u003E\u003Cp\u003E 找出1000以内的所有完数。\u003C\u002Fp\u003E\u003Cp\u003E1. 程序分析:请参照程序<--上页程序14. \u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003Estatic int k[10];\u003C\u002Fp\u003E\u003Cp\u003Eint i,j,n,s;\u003C\u002Fp\u003E\u003Cp\u003Efor(j=2;j<1000;j++)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E n=-1;\u003C\u002Fp\u003E\u003Cp\u003E s=j;\u003C\u002Fp\u003E\u003Cp\u003E for(i=1;i {\u003C\u002Fp\u003E\u003Cp\u003E if((j%i)==0)\u003C\u002Fp\u003E\u003Cp\u003E { n++;\u003C\u002Fp\u003E\u003Cp\u003E s=s-i;\u003C\u002Fp\u003E\u003Cp\u003E k[n]=i;\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E if(s==0)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E printf(\"%d is a wanshu\",j);\u003C\u002Fp\u003E\u003Cp\u003E for(i=0;i  printf(\"%d,\",k[i]);\u003C\u002Fp\u003E\u003Cp\u003E printf(\"%d\\n\",k[n]);\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003Cp\u003E============================================================== \u003C\u002Fp\u003E\u003Cp\u003E【程序10】\u003C\u002Fp\u003E\u003Cp\u003E题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在\u003C\u002Fp\u003E\u003Cp\u003E 第10次落地时,共经过多少米?第10次反弹多高?\u003C\u002Fp\u003E\u003Cp\u003E1.程序分析:见下面注释\u003C\u002Fp\u003E\u003Cp\u003E2.程序源代码:\u003C\u002Fp\u003E\u003Cp\u003Emain()\u003C\u002Fp\u003E\u003Cp\u003E{\u003C\u002Fp\u003E\u003Cp\u003Efloat sn=100.0,hn=sn\u002F2;\u003C\u002Fp\u003E\u003Cp\u003Eint n;\u003C\u002Fp\u003E\u003Cp\u003Efor(n=2;n<=10;n++)\u003C\u002Fp\u003E\u003Cp\u003E {\u003C\u002Fp\u003E\u003Cp\u003E sn=sn+2*hn;\u002F*第n次落地时共经过的米数*\u002F\u003C\u002Fp\u003E\u003Cp\u003E hn=hn\u002F2; \u002F*第n次反跳高度*\u002F\u003C\u002Fp\u003E\u003Cp\u003E }\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"the total of road is %f\\n\",sn);\u003C\u002Fp\u003E\u003Cp\u003Eprintf(\"the tenth is %f meter\\n\",hn);\u003C\u002Fp\u003E\u003Cp\u003E}\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E"'.slice(6, -6),
前一篇<<上一篇:东盟成员国:38度高温热爆航体!河南建业1:0力克北京国安  
 下一篇:没有了 >>后一篇