39节课后3解
来源:互联网 发布:淘宝口令是什么意思啊 编辑:程序博客网 时间:2024/06/07 03:19
项目五
代码:
/*阿姆斯特朗数*/#include <stdio.h>int main(){ int sum,i,m,s; for(i=1;i<1000;i++) { m=i; sum=0; while(m>0) { s=(m%10)*(m%10)*(m%10); sum+=s; m=m/10; } if(sum==i) printf("%d\n",i); } return 0; }
项目六
代码:
/*1万年内的回文日*/#include <stdio.h>int main(){ int year,q,w,e,r,t,month,day,h=0; for(year=1001;year<10000;year++) { q=year%10;//求年份的个位数,年份个位数是月份十位数,所以小于等于1 w=(year%100)/10; e=(year%1000)/100;//求年份的百分数,因为是回文数,所以年份百位数小于=3 r=year/1000;//年份的千位数 if(e<=3&&q<=1) { for(month=1;month<=12;month++)//月份的循环 { switch(month)//判断月份,根据月份计算每月的天数 { case 1: case 3: case 5: case 7: case 8: case 10: case 12:t=31;break; case 4: case 6: case 9: case 11:t=30;break; default: if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))//判断该年是否是闰年,求出2月的天数 t=29; else t=28; } for(day=1;day<=t;day++)//每月天数的循环 { if((e*10+r)==day&&(q*10+w)==month) { printf("%d年的%02d月%02d号是回文日\n",year,month,day); h++; } } } } } printf("总计有%d个回文日",h); return 0; }
稍微修改了下
代码如下:
/*1万年内的回文日*/#include <stdio.h>int main(){ int year,q,w,e,r,t,month=1,day=1,h=0; for(year=1001;year<10000;year++) { q=year%10;//求年份的个位数,年份个位数是月份十位数,所以小于等于1 w=(year%100)/10;//年份的十位数,年份的十位数应该小于等于2 e=(year%1000)/100;//求年份的百分数,因为是回文数,所以年份百位数小于=3 r=year/1000;//年份的千位数 if(q<=1&&e<=3&&(q*10+w)!=0&&(q*10+w)<=12) { month=(q*10+w); switch(month)//判断月份,根据月份计算每月的天数 { case 1: case 3: case 5: case 7: case 8: case 10: case 12:t=31;break; case 4: case 6: case 9: case 11:t=30;break; default: if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))//判断该年是否是闰年,求出2月的天数 t=29; else t=28; } day=(e*10+r); if(day<=t)//每月天数的循环 { printf("%d年的%02d月%02d号是回文日\n",year,month,day); h++; } } } printf("总计有%d个回文日",h); return 0; }
解法3:通过月份日期查年,直接求出回文日
代码:
/*1万年内的回文日*/#include <stdio.h>int main(){ int month,year,day,t,i=0; for(month=1;month<=12;month++)//月份循环 { t=2;//暂时给t赋值,以免t被随机赋值 for(day=1;day<=t;day++)//月天数循环,t为判断大小月和闰月,并根据t的值决定循环次数 { if(day%10!=0)//排除每月以0结尾的日期 { year=((day%10)*1000+(day/10)*100+(month%10)*10+month/10);//求出某月某日所对应的回文年 switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:t=31;break; case 4: case 6: case 9: case 11:t=30;break; default: if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))//判断该年是否是闰年,求出2月的天数 t=29; else t=28; } if(year>=1000)//1000年前没有对应的回文日,略去 { printf("%d年的%02d月%02d号是回文日\n",year,month,day); i++;//统计一共多少个回文日 } } } } printf("总计有%d个回文日",i); return 0; }
最后照课后题补充一段代码:限定了2015-2100 可以直接确定日期为2号,不用计算闰年
/*回文日*/#include <stdio.h>int main(){ int year,e,month,h=0; for(year=2015;year<2100;year++)//明显的2100是没有对应回文日的 { month=(year%10)*10+(year%100)/10; e=2;//本世纪,扣掉2100,说明只能是20,反过来日期就是2号 if(month<=12) { printf("%d年的%02d月%02d号是回文日\n",year,month,e); h++; } } printf("总计有%d个回文日",h); return 0; }月份反求:
/*回文日*/#include <stdio.h>int main(){ int year,e=2,month,h=0; for(month=1;month<=12;month++) { year=e*1000+(month%10)*10+(month/10); printf("%d年的%02d月%02d号是回文日\n",year,month,e); h++; } printf("总计有%d个回文日",h); return 0; }
好了 今天就到这里了,明天开始新的一节课学习
0 0
- 39节课后3解
- 39节课后再解
- 课后3道作业
- 课后作业3
- 课后作业3
- java课后总结3
- C++课后作业3
- 02课后作业3
- 课后3 上机练习
- 39节 问题求解——求素数 课后
- C语言课后习题解
- C语言程序设计课后作业3
- IOS学习--课后练习题3
- 课后练习题2/3/4
- 十二章 课后作业3
- 课后习题page100.pp3.3
- C++primer 第五版课后习题 第六章(3)39
- 一个有待完善的java小程序 上完3节java课后自己编的
- 关于HTML发送AJAX请求一直重复刷新页面问题
- 前端工程师与SEO搜索引擎优化(笔记总结)
- 腾讯公布虚拟现实头显方案、SDK以及开发者计划
- 如何使用Golang来处理支付宝的回调
- Learning Python(6)--Python的命令行解析argparse模块
- 39节课后3解
- web开发基础1
- ❀自我唠嗑OC-数组类,字典类,集合类
- 理解矩阵(一)
- NvidiaCUDA通用计算简介及优化方法概述
- [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
- 【郑轻】[1748]Math One!
- 图形学优化_3: bridge(桥接模式)和proxy(代理)
- Canva绘制时钟