c语言程序设计实例分析30道(含答案)

上传人:第*** 文档编号:30997370 上传时间:2018-02-03 格式:DOCX 页数:19 大小:33.33KB
返回 下载 相关 举报
c语言程序设计实例分析30道(含答案)_第1页
第1页 / 共19页
c语言程序设计实例分析30道(含答案)_第2页
第2页 / 共19页
c语言程序设计实例分析30道(含答案)_第3页
第3页 / 共19页
c语言程序设计实例分析30道(含答案)_第4页
第4页 / 共19页
c语言程序设计实例分析30道(含答案)_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c语言程序设计实例分析30道(含答案)》由会员分享,可在线阅读,更多相关《c语言程序设计实例分析30道(含答案)(19页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计实例分析 30道【题目 1】:有 1、2 、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【程序分析】:可填在百位、十位、个位的数字都是 1、 2、3、4。组成所有的排列后再去 掉不满足条件的排列。【程序源代码】:#includeint main()int i,j,k;printf(n);for(i=1;iint main()double i;double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;printf(你的净利润是:n);scanf(%lf,bonus1=100000*0.1;bonus2=bonus1+1

2、00000*0.075;bonus4=bonus2+200000*0.05;bonus6=bonus4+200000*0.03;bonus10=bonus6+400000*0.015;if(i1000000) bonus=bonus10+(i-1000000)*0.01;printf(提成为:bonus=%lf,bonus);printf(n);【题目 3】:一个正整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?【程序分析】:在 10 万以内判断,先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足如下条件,即是结果

3、。【程序源代码】:#include #include math.hint main() long int i,x,y;for (i=1;iint main()int day,month,year,sum,leap;printf(n 请输入年、月、日,格式为:年 ,月,日(2015,12,10)n);scanf(%d,%d,%d, / 格式为:2015,12,10switch(month) / 先计算某月以前月份的总天数case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum

4、=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;sum=sum+day; / 再加上某天的天数if(year%400=0|(year%4=0&year%100!=0) / 判断是不是闰年leap=1; else leap=0;if(leap=1&month2)

5、 / *如果是闰年且月份大于 2,总天数应该加一天sum+;printf(这是这一年的第 %d 天。,sum);printf(n);【题目 5】:输入三个整数 x,y,z,请把这三个数由小到大输出。【程序分析】:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 xy 则将 x与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 xz 则将 x 与 z 的值进行交换,这样能使 x 最小。【程序源代码】:#include int main()int x,y,z,t;printf(n 请输入三个数字 :n);scanf(%d%d%d,if (xy) /*交换 x,y 的值*/

6、t=x;x=y;y=t;if(xz) /*交换 x,z 的值*/t=z;z=x;x=t;if(yz) /*交换 z,y 的值*/t=y;y=z;z=t;printf(从小到大排序: %d %d %dn,x,y,z);【题目 6】:输出 9*9 口诀。【程序分析】:分行与列考虑,共 9 行 9 列,i 控制行, j 控制列。【程序源代码】:#includeint main()int i,j,result;printf(n);for (i=1;iint main()int i,j;for(i=0;iint main()int i,j;printf(11n); /*输出两个笑脸*/for(i=1;i

7、 int main()int f1=1,f2=1,i;for(i=1;iint main()int i,j;int count=0;for (i=101; i=i) count+;printf(%d ,i);/ 换行,用 count 计数,每五个数换行if (count % 5 = 0) printf(n); return 0;【题目 11】:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个水仙花数,因为 153=1 的三次方5 的三次方3 的三次方。【程序分析】:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。

8、【程序源代码】:#includeint main()int i,x,y,z;for(i=100;iint main()int n,i;printf(请输入整数:); scanf(%d,printf(%d=,n);for(i=2;i=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。【程序分析】:(ab)?a:b 这是条件运算符的基本例子。【程序源代码】:#includeint main()int score;char grade;printf(请输入分数: );scanf(%d,grade=(score=90)?A:(score=60)?B:C);pri

9、ntf(%cn,grade);return 0;【题目 14】:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。【程序分析】:(1 )最小公倍数= 输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;(2 )求最大公约数用辗转相除法(又名欧几里德算法)1)证明:设 c 是 a 和 b 的最大公约数,记为 c=gcd(a,b),a=b,令 r=a mod b设 a=kc,b=jc,则 k,j 互素,否则 c 不是最大公约数据上,r=a-mb=kc-mjc=(k-mj)c可知 r 也是 c 的倍数,且 k-mj 与 j 互素,否则与前述 k,j 互素矛盾,由此可知,b 与 r 的最

10、大公约数也是 c,即 gcd(a,b)=gcd(b,a mod b),得证。2)算法描述:第一步:a b,令 r 为所得余数(0r 第二步:互换:置 ab,br,并返回第一步。【程序源代码】:#includeint main()int a,b,t,r;printf(请输入两个数字:n);scanf(%d %d,if(aint main()char c;int letters=0,spaces=0,digits=0,others=0;printf(请输入一些字母:n);while(c=getchar()!=n)if(c=a&c=A&c=0&cint main()int s=0,a,n,t;pri

11、ntf(请输入 a 和 n:n);scanf(a=%d,n=%d,t=a;while(n0)s+=t;a=a*10;t+=a;n-;printf(a+aa+.=%dn,s);return 0;【题目 17】:一个数如果恰好等于它的因子之和,这个数就称为 完数。例如 6=123.编程找出 1000 以内的所有完数。【程序分析】:请参照:C 练习实例 14。【程序源代码】:#include#define N 1000int main()int i,j,k,n,sum;int a256;for(i=2;iint main()float h,s;h=s=100;h=h/2; /第一次反弹高度for(i

12、nt i=2;i#include int main()int day, x1 = 0, x2;day=9;x2=1;while(day0) x1=(x2+1)*2; / 第一天的桃子数是第 2 天桃子数加 1 后的 2 倍x2=x1;day-;printf(总数为 %dn,x1);return 0;【题目 20】:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请编程序找出三队赛手的名单。【程序源代码】:#include #include int main()cha

13、r i,j,k;for(i=x;iint main()int i,j,k;for(i=0;iint main()int i,t;float sum=0;float a=2,b=1;for(i=1;iint main()int i;long double sum,mix;sum=0,mix=1;for(i=1;iint main()int i;int fact();for(i=0;iint main()int i=5;void palin(int n);printf(请输入 5 个字符40:40);palin(i);printf(n);void palin(n)int n;char next;i

14、f(nint age(n)int n;int c;if(n=1) c=10;else c=age(n-1)+2;return(c);int main()printf(%dn,age(5);【题目 27】:给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。【程序分析】:学会分解出每一位数,如下解释。【程序源代码】:#include int main( )long a,b,c,d,e,x;printf(请输入 5 位数字: );scanf(%ld,a=x/10000; /*分解出万位 */b=x%10000/1000; /*分解出千位 */c=x%1000/100; /

15、*分解出百位*/d=x%100/10; /*分解出十位*/e=x%10; /*分解出个位*/if (a!=0)printf(为 5 位数,逆序为: %ld %ld %ld %ld %ldn,e,d,c,b,a); else if(b!=0) printf(为 4 位数,逆序为: %ld %ld %ld %ldn,e,d,c,b); else if(c!=0) printf(为 3 位数,逆序为:%ld %ld %ldn,e,d,c); else if(d!=0) printf(为 2 位数,逆序为: %ld %ldn,e,d); else if(e!=0) printf(为 1 位数,逆序为:%ldn,e);【题目 28】:一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。【程序分析】:学会分解出每一位数。【程序源代码】:#include int main( )long ge,shi,qian,wan,x;prin

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号