ArexM 2020-11-19 07:03:36
能不能帮我看看这个怎么出错了
#include<stdio.h>
int isLeap(int year) //判断是否为闰年
{
if(year%100==0||year%4==0)
return 1;
else
return 0;
}

int daysInMonth(int year,int month) //判断某月天数
{
int i;
i=isLeap(year);
if(i==1)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("31天\n");break;
case 2:printf("29天\n");break;
case 4:
case 6:
case 9:
case 11:printf("30天\n");break;
}
}
if(i==0)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("31天\n");break;
case 2:printf("28天\n");break;
case 4:
case 6:
case 9:
case 11:printf("30天\n");break;
}
}
}

int isLegal(int year,int month,int day) //判断日期是否合法
{
int i,j=1,k;
i=isLeap(year);
k=daysInMonth(year,month);
if((month<=0||month>=13)||(day<=0||day>31))
j=0;
else
{
if(i==1)
{
if(month<1||month>12)
j=0;
if(month==4||month==6||month==9||month==11)
{
if(day>30||day<=0)
j=0;
}
if(month==2)
{
if(day<=0||day>29)
j=0;
}
}
if(i==0)
{
if(month<1||month>12)
j=0;
if(month==4||month==6||month==9||month==11)
{
if(day<=0||day>31)
j=0;
}
if(month==2)
{
if(day<=0||day>28)
j=0;
}
}
}
return j;
}

int Num(int year,int month,int day)
{
int i,sum;
i=isLeap(year);
switch (month)
{
case 1:sum = 0;break;
case 2:sum = 31;break;
case 3:sum = 59;break;
case 4:sum = 90;break;
case 5:sum = 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;
}
sum=sum+day;
if(i==1&&month>2)
{
sum++;
}
return sum;
}

int main()
{
int year,month,day;
int a,b,c;
a=isLeap(year);
b=isLegal(year,month,day);
if (b==0)
{
do
{
printf("请输入正确格式的日期\n");
scanf("%d-%d-%d",&year,&month,&day);
} while(b==1);
}
c=Num(year,month,day);
printf("该日期是该年的第%d天",c);
printf("%d",b);
}
...全文
57 点赞 收藏 1
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzjhjxj 2020-11-20
闰年判断有问题,写的太复杂了,依照你的修改如下,供参考:
#include <stdio.h>
int s[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int f[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

bool isLeap(int year) //判断是否为闰年
{
   if((year%4==0 && year%100!=0)||(year%400==0))
       return 1;
   else
       return 0;
}


int  isLegal(int year,int month,int day) //判断日期是否合法
{
  int j=0;
  if(month>0 && month<=12 && day>0 && day<=31)
    {
       if(isLeap(year))
          {
              if(day <= s[month-1])
                 {   j=1; }
          }
       else
          {
              if(day <= f[month-1])
                 {   j=1; }
          }
    }
   return j;
}

int Num(int year, int month, int day) //统计天数
{
    int d = day;
    if(isLeap(year))
     {
        for(int i=0;i<month-1;i++)
           d+=s[i];
     }
    else
     {
        for(int i=0;i<month-1;i++)
           d+=f[i];
     }
    return d;
}


int main(int argc, char* argv[])
{
    int year,month,day;

    do
     {
       printf("请输入正确格式的日期(yyyy-mm-dd):");
       scanf("%4d-%2d-%2d",&year,&month,&day);
     }while(!isLegal(year,month,day));

   printf("该日期是该年的第%d天\n",Num(year,month,day));
   system("pause");
   return 0;
}
回复
相关推荐
组合数的几种
直接解的组合数,不需要进行取模运算。 为了避免中间结果的溢出,仅使用一个简单的方法:n! / m! =(m+1)*(m+2)*......(n-1)* n; long long C(int n,int m) { if(m&lt;... for(int ...
经典算法之平方根
Java中为我们提供了一个Math类,用来实现各种数学运算,极大的方便了日常开发,不过同时也让我们极少去关注这些运算的算法究竟是如何实现的,所以导致我们拿到一个数学运算的方法的的算法题时候不知如何下手,今天...
通俗易懂地讲解牛顿迭代法开方
五次及以上多项式方程没有根式解(就是没有像二次方程那样的万能公式),这个是被伽罗瓦用群论做出的最著名的结论。但是,没有王屠夫难道非得吃带毛猪?工作生活中还是有诸多解高次方程的真实需(比如行星的轨道...
谈C++a+b(大神勿喷)
参照hduoj第1089题:a+b的和。#include &lt;iostream&gt;using namespace std;//C++头文件{int a,b;while(cin&gt;&gt;a&gt;&gt;b)//相当于C语言中的while(scanf("%d %d",&...
python平均值
python平均值 首先我们先来了解一下计算平均数的IPO模式. 输入:待输入计算平均数的数。 处理:平均数算法 输出:平均数 推荐:《python教程》 明白了程序的IPO模式之后,我们打开本地的python的IDE工具,并新建一...
python绝对值的三种方法
python绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs abs() 与fabs()的区别 abs()是一个内置函数,而fabs()在math模块中定义的。 fabs()函数只适用于float和integer类型,而abs()也适用于...
Python 平均值
python 使用numpy.mean()方法对一个序列进行值 from numpy import mean if __name__ == '__main__': print(mean([1, 2, 3])) ```
c语言-整数均值
c7-9整数均值(10 分) 本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出4个整数,其间以空格分隔。 输出格式: 在一行中按照格式“Sum = 和; ...
Python中如何列表list的平均数
Python中如何列表list的平均数 当列表list中只包含数字时,如何取它的平均数: from numpy import * a = [52,69,35,65,89,15,34] b = mean(a) print(b) 运行结果: 51.285714285714285 ...
c语言n的阶乘
用递归和循环的方法:实现n的阶乘 区别:用递归阶乘不用创建临时变量,且相对来说,代码比较简单。  用循环阶乘需要创建两个变量,代码也比较简单,各有利弊。 #include&lt;stdio.h&gt; #include...
java 1-100之间的质数
java 1-100之间的质数 文章目录java 1-100之间的质数@[toc]质数定义:1、质数实例一2、质数实例二3、质数实例三4、质数实例四5、质数实例五6、质数实例六 质数定义: 质数又称素数。一个大于1的自然数,除了1和...
7-22 交错序列前N项和 (15 分)
7-22 交错序列前N项和 (15 分) 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中输出部分和的值,结果保留三位小数。 输入...
C语言:两个数的最大公约数和最小公倍数
C语言:两个数的最大公约数和最小公倍数 两个数的最大公约数:“辗转相除法”: 设两数为a和b(a>b),用a除以b,得a÷b=商…余数,若余数为0 ,则最大公约数为b;若余数不为0 ,则再用b÷余数, 得b÷余数=商1...
【数组】最大值及其下标
题目:最大值及其下标。 要求:找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式:  输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。 输出格式:  在...
python三角形面积
Python第一课 目前正在自学python,上来做点笔记。...题目:已知三条边,如何一个三角形的面积? 在这里插入代码片 ```import math a=4.0 b=3.0 c=5.0 d=(a+b+c)/2 s=math.sqrt(d*(d-a)*(d-b)*(d-c)) print (s) ...
c++三个数中的最大值和最小值
输入三个数,输出最大数,最小数 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int a,b,c; cin>>a>>... if(b>...
最短路径:Dijkstra算法(单源最短路径)Floyd算法(各顶点之间最短路径)
最短路径: 在一个带权图中,顶点V0...单源最短路径,即一个顶点到任意顶点的最短路径,其时间复杂度为O(V*V) 如图所示:顶点0到各顶点之间的最短路径 代码实现: #include<stdio.h> #include&l...
【C语言】 利用筛选法100以内的素数
//C语言 筛选法100以内的素数 //原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质 //数的倍数筛掉。 //我们将从2开始 用2除后面的数...
最大公约数(辗转相除法)
最大公约数(Greatest Common Divisor)指两个或多个整数共有约数中最大的...最大公约数有多种 方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的 最小...
PTA 7-5 集合交集 (20 分)
整数集合A与整数集合B的交集。 输入格式: 输入有三行: 第一行是A和B的元素个数m和n; 第二行是集合A的m个元素; 第三行是集合A的n个元素。 输出格式: 输出交集的所有元素(按照在A集合出现的顺序输出,最后一...
python N的阶乘
python N的阶乘python N的阶乘 python N的阶乘 本题要求编写程序,计算N的阶乘。 输入格式: 输入在一行中给出一个正整数 N。 输出格式: 在一行中按照“product = F”的格式输出阶乘的值F,请注意等号的左右...
c语言 圆周长 圆面积 圆球表面积 圆球体积 圆柱体积
c语言 圆周长 圆面积 圆球表面积 圆球体积 圆柱体积
Java一元二次方程的根
一元二次方程的根。 【问题描述】编写程序,从键盘输入三个系数ax2+bx+c=0,计算方程的解并输出。需要考虑方程有虚根、方程有实根、方程是一元一次方程、没有根等。输出方程的解并保留6位小数。 import java....
java数组中最大值最小值
遍历数组元素,比较数组元素的值和默认的最大值,如果数组元素的值比默认最大值还要大,则用数组元素的值作为默认的最大值,这样遍历一遍之后就可以出最大值了.最小值也是同样. 这里有两种方式来记录最大最小值: ...
Python基础篇1:输入直角三角形的两个直角边的长度a、b,斜边c的长度
import math a=float(input("请输入直角边1的长度:")) b=float(input("清输入直角边2的长度:")) c=math.sqrt(a*a+b*b) print("斜边长为:",c)
Java程序②编写一个应用程序100以内的全部素数
大二软件工程学生,初学Java,... * 编写一个程序100以内的全部素数 * @author Rigel * */ public class Num { public static void main(String[] args) { int i = 2; int k; int j = 2; for(i = 2...
【题解】【PTA-Python题库】第6章函数-5 使用函数余弦函数的近似值 (20 分)
使用函数余弦函数的近似值 本题要求实现一个函数,用下列公式cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加): cos (x) = x^0 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + ? 函数接口...
【题解】【PTA-Python题库】第6章函数-2 使用函数素数和 (20 分)
使用函数素数和 prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False. PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。 题目保证用户传入的参数1<=m<n。 函数接口定义: 在...
C语言实现字符串的长度
C语言实现strlen()字符串的长度。 用递归和循环的方法 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int strlen_di(char arr[])//递归方法 { if (arr[0] == '\0') { ...
【题解】【PTA-Python题库】第6章函数-1 使用函数特殊a串数列和 (10 分)
使用函数特殊a串数列和 给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和 函数接口定义: fn(a,n) 其中 a 和 n 都是用户传入的参数。 a 的值在[1, 9]...
发帖
其它技术问题
创建于2007-09-28

3843

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2020-11-19 07:03
社区公告
暂无公告