
2021-03-23 循环运用
发布日期:2021-05-14 23:42:25
浏览次数:23
分类:精选文章
本文共 2546 字,大约阅读时间需要 8 分钟。
2021-03-23 C语言题目记
第一题 输入年月日,判断当年是否闰年,当日是当年的第几天
思考:
- 闰年的定义:闰年是指能被4整除但不能被100整除,或者能被400整除的年份。
- 计算天数:将当月前一个月到一月的天数累加,最后加上输入的天数,得到当天是当年的第几天。
方法一:巧用switch语句
知识:switch-case语句中case语句在遇到break前会默认执行所有case语句。
/*闰年:年份可整除4,不可整除100,可以整除400*/ /*计算当天是当年的第多少天*/ #include int MonthDay(int); static int run; //全局静态变量 int main(){ int year, month, day, dayof; printf("请按顺序输入年份,月份,日期:"); scanf("%d%d%d",&year,&month,&day); if((year%4==0 && year%100!=0) || year%400==0){ run=1; printf("该年是闰年。\n"); } else{ run=0; printf("该年是平年。\n"); } switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("该月有31天。\n"); break; case 4: case 6: case 9: case 11: printf("该月有30天。\n"); break; case 2:{ if(run)printf("该月有29天。\n"); else printf("该月有28天。\n"); break; } default: printf("error\n"); break; } dayof=MonthDay(month); if(run==0 && month==2 && day==29) printf("该年没有2月29日!\n"); else printf("这是%d年的第%d天。\n",year,dayof+day); return 0; int MonthDay(int month){ /累加当月前一个月到一月的天数/ int sum=0; switch(month-1){ case 11: sum+=30; case 10: sum+=31; case 9: sum+=30; case 8: sum+=31; case 7: sum+=31; case 6: sum+=30; case 5: sum+=31; case 4: sum+=30; case 3: sum+=31; case 2: { if(run)sum+=29; else sum+=28; } case 1: sum+=31; case 0: break; } return sum; }
方法二:使用递归函数累加
/*闰年:年份可整除4,不可整除100,可以整除400*/ /*计算当天是当年的第多少天*/ #include int MonthDay(int); static int daymonth, run; int main(){ int year, month, day; printf("请按顺序输入年份,月份:"); scanf("%d%d%d",&year,&month,&day); if((year%4==0 && year%100!=0) || year%400==0){ run=1; printf("该年是闰年。\n"); } else{ run=0; printf("该年是平年。\n"); } MonthDay(month-1); printf("这是%d年的第%d天。\n",year,daymonth+day); return 0; int MonthDay(int month){ int n=0; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: n=31; break; case 4: case 6: case 9: case 11: n=30; break; case 2: { if(run)n=29; else n=28; break; } } if(month!=0) daymonth = n + MonthDay(month-1); return daymonth; }
第二题 将输入数从大到小排列输出
思考:
- 数组的输入和输出
- 按大小排序的方法
知识:
- for循环的使用
- 数组的定义
- 指针交换位置
- bubble sort排序算法
/*文件:排序.c功能:比大小交换位置*/ void max(float *p1, float *p2){ float temp; if(*p1 < *p2){ temp=*p1; *p1=*p2; *p2=temp; } } /文件:数组排序.c功能:将输入数组冒泡排序后输出/ #includeextern float max(float *, float *); int main(void){ int x, y, i, num; printf("数组长度:"); scanf("%d",&num); float a[num]; for(i=0; i a[y]) max(&a[x], &a[y]); printf("从大到小排列后的数组:\n"); for(i=0; i
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月21日 18时35分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
spring-day01
2019-03-10
spring的值注入与组件扫描
2019-03-10
C#跨窗体程序调用方法的具体操作
2019-03-10
C#中创建Android项目
2019-03-10
统计学之变异系数与是非标志
2019-03-10
关于继承的一些基本知识
2019-03-10
抖音发布黄金时间段,抖音上热门最佳时间
2019-03-10
我的图床~
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
Iterable与Iterator
2019-03-11
关于WebView当前地址问题的疑惑
2019-03-11
Python机器学习(九十二)Pandas 统计
2019-03-11
SecSolar:为代码“捉虫”,让你能更专心写代码
2019-03-11
1965 - 2019 年最流行的编程语言变化
2019-03-11
链上钱包的博彩雷区
2019-03-11
GRUB2
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
GridView的另外一种分页方式,可提高加载速度
2019-03-11