资源描述:
《二级C语言编程 -实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编程实例 1. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。main(){inti,j,k;printf("");for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for(k=1;k<5;k++) {if(i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d
2、",i,j,k); }}2. 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:#include"math.h"main(){longinti,x,y,z;for(i=1;i<100000;i++) {x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上16
3、8后开方后的结果*/ if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ printf("%ld",i); }}3. 题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。#include"stdio.h"main(){inti,j,result; printf(""); for(i=1;i<10;i++) {for(j=1;j<10;j++) {result=i*j; printf(
4、"%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("");/*每一行后换行*/ }}4. 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。main(){inti,j,k,n;printf("'waterflower'numberis:"); f
5、or(n=100;n<1000;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("%-5d",n); } }printf("");}5. 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程
6、已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。main(){intn,i;printf("pleaseinputanumber:");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++) { while(n!=i) {if(n%i==0) {printf("%d*",i); n=n/i; } else b
7、reak; }}printf("%d",n);}6. 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。main(){inta,b,num1,num2,temp; printf("pleaseinputtwonumbers:"); scanf("%d,%d",&num1,&num2); if(num1!=0) {temp=num1; num1=num2; num2=temp; }a=num1;b=num2;while(b!=0)/*利用辗除法,直到b为0为止*/ {tem
8、p=a%b; a=b; b=temp; }printf("gongyueshu:%d",a);printf("gongbeishu:%d",num1*num2/a);}7. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字