C语言OJ项目参考(2428) 本年中是第几天

2428: 计算该日在本年中是第几天

Description
定义一个结构体变量(包括年、月、日)。编写一个函数days,由主函数将年、月、日传递给函数days,计算出该日在本年中是第几天并将结果传回主函数输出。
Input
年月日
Output
当年第几天
Sample Input
2000 12 31
Sample Output
366
HINT
主函数已给定如下,提交时不需要包含下述主函数

/* C代码 */
int main()
{
    y_m_d date;
    int days(y_m_d);
    int day_sum;
    scanf("%d%d%d",&date.year,&date.month,&date.day);
    day_sum=days(date);
    printf("%d\n",day_sum);
    return 0;
}

参考解答

#include <stdio.h>
struct y_m_d
{
    int year;
    int month;
    int day;
};

int main()
{
    struct y_m_d date;
    int days(struct y_m_d date);
    int day_sum;
    scanf("%d%d%d",&date.year,&date.month,&date.day);
    day_sum=days(date);
    printf("%d\n",day_sum);
    return 0;
}

int days(struct y_m_d date)
{
     int sum=date.day;
    int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int i;
    for(i=1; i<date.month; i++)
    {
        sum+=a[i];
    }
    if(date.month>2&&((date.year%4==0&&date.year%100!=0)||date.year%400==0)) //若闰年,且晚于2月,加一天
        sum++;
    return sum;
}
时间: 2024-11-02 19:58:39

C语言OJ项目参考(2428) 本年中是第几天的相关文章

C语言OJ项目参考(1045)插入有序数组中

1045:插入有序数组中 Description 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. Input 第一行,原始数列.第二行,需要插入的数字. Output 排序后的数列 Sample Input 1 7 8 17 23 24 59 62 101 50 Sample Output 1 7 8 17 23 24 50 59 62 101 参考解答: #include <stdio.h> int main() { int a[10],i,n; for(i

C语言OJ项目参考(2972)从文件中读数据

2972: 从文件中读数据 Description 文本文件score.dic 中存储了n名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示: 145811 fuxin 100 145811 chengxian 90 145812 zhangxue 92 145812 lijun 88 -- 文件中存储的学生信息按照班级编号升序排列,每个班级的人数可以不同,要求读取文件中所有学生的成绩,计算每个班级的平均成绩,将班级编号和平均成绩输出. 主程序已给出

C语言OJ项目参考(1047) 最大公约数和最小公倍数

1047: 求两个整数的最大公约数和最小公倍数 Description 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入. Input 两个数 Output 最大公约数 最小公倍数 Sample Input 6 15 Sample Output 3 30 HINT 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { int n,m,gys,gbs; int gcd(int a, int b); int

C语言OJ项目参考(1992)分数序列

(1992)分数序列 Description 有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, -编写程序求出这个序列的前n项之和. Input 输入只有一个正整数n,1≤n≤10. Output 输出该序列前n项和,结果保留小数后6位. Sample Input 3 Sample Output 5.166667 参考解答 #include <stdio.h> int main ( ) { int m1=2,m2=1, n, t, i; double sum=2; scanf

C语言OJ项目参考(1034) 求值

(1034) 求值 Description 求Sn=1!+2!+3!+4!+5!+-+n!之值,其中n是一个数字. Input n Output 和 Sample Input 5 Sample Output 153 参考解答 #include <stdio.h> int main ( ) { int n, i; long fact=1, sum=1; scanf("%d",&n); for(i=2;i<=n;i++) { fact=fact*i; sum+=f

C语言OJ项目参考(2290)字符串的修改

2290: 字符串的修改 Description 一个字符串s.一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO Input 一个字符串s.一个字符串t,要换的字符或字符串 Output 输出修改后的s串 Sample Input** asdfasdf 132 saf Sample Output NO 参考解答: #include<stdio.h> #include<string.h> char str[1002];

C语言OJ项目参考(2568) 字符串逆序输出

2568: 字符串逆序输出 Description 编写一个函数,功能是使输入的字符串逆序输出. Input 输入一串字符串,注意字符串中不要有空格. Output 输出该字符串的逆序. Sample Input** ABCDEFG Sample Output GFEDCBA HINT #include<stdio.h> #include<string.h> int main() { char str[100]; scanf("%s",str); int len

C语言OJ项目参考(2000)数组逆序

Description 输入10个整数存入一维数组,按逆序重新存放后再输出. Input 输入包括一行.10个以空格隔开的整数. Output 逆序的10个整数,整数以空格隔开. Sample Input 1 3 5 9 7 6 8 2 4 0 Sample Output 0 4 2 8 6 7 9 5 3 1 提示:在OJ平台中,将有一个格式错误可能会让你崩溃.友情提示:输出的最后一个数字后面没有空格. 参考解答: #include <stdio.h> int main() { int a[

C语言OJ项目参考(1052)两个字符串连接

1052: 两个字符串连接 Description 写一函数,将两个字符串连接 Input 两行字符串 Output 链接后的字符串 Sample Input** 123 abc Sample Output 123abc 参考解答: 函数版参考1: #include<stdio.h> void stringcat(char *s1, char *s2, char *s); int main() { char str1[100],str2[100],str3[100]; gets(str1);