C语言实现每秒递增计数并打印日期和星期

本程序实现每秒计数递增一次,计数范围为1~366,并通过printf函数每秒打印一次计数对应的年、月、日、星期。例如,初始日期设置为10,即'2020年1月10日-星期五',则第1秒打印'2020年1月10日-星期五'、第2秒打印'2020年1月11日-星期六',以此类推。

#include <stdio.h>
#include <unistd.h>

// 计算某年某月某日是星期几的函数
int calculateWeekday(int year, int month, int day) {
    if (month == 1 || month == 2) {
        month += 12;
        year--;
    }
    int century = year / 100;
    year %= 100;
    int weekday = (year + year / 4 + century / 4 - 2 * century + 26 * (month + 1) / 10 + day - 1) % 7;
    if (weekday < 0) {
        weekday += 7;
    }
    return weekday;
}

int main() {
    int count = 10; // 初始计数
    int year = 2020;
    int month = 1;
    int day = 10;
    int weekday = 5; // 星期五

    while (count <= 366) {
        printf("%d年%d月%d日-星期", year, month, day);
        switch (weekday) {
            case 0:
                printf("日");
                break;
            case 1:
                printf("一");
                break;
            case 2:
                printf("二");
                break;
            case 3:
                printf("三");
                break;
            case 4:
                printf("四");
                break;
            case 5:
                printf("五");
                break;
            case 6:
                printf("六");
                break;
        }
        printf("\n");
        
        // 计算下一天的日期和星期
        day++;
        weekday = (weekday + 1) % 7;
        if (day > 31 && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)) {
            day = 1;
            month++;
        } else if (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11)) {
            day = 1;
            month++;
        } else if (day > 29 && month == 2 && year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
            day = 1;
            month++;
        } else if (day > 28 && month == 2) {
            day = 1;
            month++;
        }
        if (month > 12) {
            month = 1;
            year++;
        }
        
        count++;
        sleep(1); // 暂停1秒,实现每秒计数递增
    }
    
    return 0;
}

上述代码中使用了一个辅助函数calculateWeekday来计算某年某月某日是星期几。在main函数中,通过一个循环来实现每秒计数递增一次,并根据计数值打印对应的年、月、日、星期。在每次循环中,还会更新日期和星期的值,直到计数达到366结束循环。每秒计数递增的效果通过sleep(1)函数来实现。

代码说明:

  1. #include <stdio.h>: 包含标准输入输出库,用于使用printf函数输出信息。
  2. #include <unistd.h>: 包含POSIX操作系统的标准库,用于使用sleep函数暂停程序执行。
  3. calculateWeekday函数:计算某年某月某日是星期几。
  4. main函数:程序的入口点,实现计数递增并打印日期和星期。
  5. sleep(1): 暂停程序执行1秒,实现每秒计数递增的效果。

运行结果:

程序运行后,会每秒打印一次计数对应的年、月、日、星期,直到计数达到366结束。例如,如果初始计数为10,则程序会从'2020年1月10日-星期五'开始打印,每秒递增一次,直到打印'2020年12月31日-星期四'。

注意事项:

  1. 该程序只适用于2020年,如果需要计算其他年份的日期和星期,则需要修改代码中的年份参数。
  2. 程序中使用的sleep函数需要在POSIX操作系统中才能使用,在其他操作系统中可能需要使用其他的函数来实现暂停程序执行的效果。

总结:

本程序演示了如何使用C语言编写程序,实现每秒递增计数并打印计数对应的年、月、日、星期。该程序简洁易懂,可以帮助用户理解C语言的基本语法和函数使用,以及如何利用系统提供的函数来实现一些特殊的功能。

C语言实现每秒递增计数并打印日期和星期

原文地址: https://www.cveoy.top/t/topic/pbNU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录