當前位置:編程學習大全網 - 編程語言 - 請給個C語言的500行左右的源代碼

請給個C語言的500行左右的源代碼

下面是我初學時的壹個列子,是計算時間的。。

可以進行時間相加減```

由於我是在linux下運行的,再轉到window上所以格式會有點亂```諒解!!!

代碼也沒有進行優化處理的```

#include <stdio.h>

#include <stdlib.h>

typedef struct time

{

int year;

int month;

int day;

int hour;

int minute;

int sec;

} ST_TIME;

ST_TIME date;

void add_sec(int secs);

void add_minute(int minutes);

void add_hour(int hours);

void add_day(int days);

int maxday(int leap, int month);

void add_month(int months);

void add_year(int years);

void sub_sec(int secs);

void sub_minute(int minutes);

void sub_hour(int hours);

void sub_day(int days);

void sub_month(int months);

void sub_year(int years);

void sum(void);

void sub(void);

void init_system(void);

int add_number;

int main(int argc, char *argv[])

{

char array[20];

char emblem;

init_system();

printf("Press the '+' or '-' to control.\n");

scanf("%c",&emblem);

switch (emblem)

{

case '+':

{

sum();

break;

}

case '-':

{

sub();

break;

}

}

sprintf(array,"%d-%02d-%02d %02d:%02d:%02d",date.year,date.month,

date.day,date.hour,date.minute,date.sec);

printf("%s\n",array);

return 0;

}

void init_system(void)

{

char str[20];

char *p;

p = str;

printf("Enter the date:\n");

printf("Be sure your inputs like that:2008 12 12 12 12 12\n");

gets(str);

date.year = atoi(p);

date.month = atoi(p+5);

date.day = atoi(p+8);

date.hour = atoi(p+11);

date.minute = atoi(p+14);

date.sec = atoi(p+17);

}

void sum(void)

{

int lab;

printf("please choose the option:\n");

printf("1: add the secs;\n");

printf("2: add the minutes;\n");

printf("3: add the hours;\n");

printf("4: add the days;\n");

printf("5: add the months;\n");

printf("6: add the years;\n");

while (getchar() != '\n');

scanf("%d",&lab);

switch (lab)

{

case 1 :

{

printf("enter the increased secs:");

scanf("%d",&add_number);

add_sec(add_number);

break;

}

case 2:

{

printf("enter the increased minutes:");

scanf("%d",&add_number);

add_minute(add_number);

break;

}

case 3:

{

printf("enter the increased hours:");

scanf("%d",&add_number);

add_hour(add_number);

break;

}

case 4:

{

printf("enter the increased days:");

scanf("%d",&add_number);

add_day(add_number);

break;

}

case 5:

{

printf("enter the increased months:");

scanf("%d",&add_number);

add_month(add_number);

break;

}

case 6:

{

printf("enter the increased years:");

scanf("%d",&add_number);

add_year(add_number);

break;

}

}

}

void sub(void)

{

int lab;

printf("please choose the option:\n");

printf("1: reduce the secs;\n");

printf("2: reduce the minutes;\n");

printf("3: reduce the hours;\n");

printf("4: reduce the days;\n");

printf("5: reduce the months;\n");

printf("6: reduce the years;\n");

scanf("%d",&lab);

switch (lab)

{

case 1 :

{

printf("enter the reduced secs:");

scanf("%d",&add_number);

sub_sec(add_number);

break;

}

case 2:

{

printf("enter the reduced minutes:");

scanf("%d",&add_number);

sub_minute(add_number);

break;

}

case 3:

{

printf("enter the reduced hours:");

scanf("%d",&add_number);

sub_hour(add_number);

break;

}

case 4:

{

printf("enter the reduced days:");

scanf("%d",&add_number);

sub_day(add_number);

break;

}

case 5:

{

printf("enter the reduced months:");

scanf("%d",&add_number);

sub_month(add_number);

break;

}

case 6:

{

printf("enter the increased years:");

scanf("%d",&add_number);

sub_year(add_number);

break;

}

}

}

void add_sec(int secs)

{

date.sec = date.sec + secs;

while (date.sec >= 60)

{

add_minute(1);

date.sec = date.sec - 60;

}

}

void add_minute(int minutes)

{

date.minute = date.minute + minutes;

while (date.minute >= 60)

{

add_hour(1);

date.minute = date.minute - 60;

}

}

void add_hour(int hours)

{

date.hour = date.hour + hours;

while (date.hour >= 24)

{

add_day(1);

date.hour = date.hour - 24;

}

}

void add_day(int days)

{

int leap;

date.day = days + date.day;

/****************************************

* 功能:判斷是否為閏年 *

****************************************/

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

while (date.day > maxday(leap,date.month))

{

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

date.day = date.day - maxday(leap,date.month);

add_month(1);

}

}

void add_month(int months)

{

int leap;

date.month = date.month + months;

while (date.month > 12)

{

date.month = date.month - 12;

add_year(1);

}

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

if (leap==1 && date.month==2 && date.day>=29)

{

date.day = 29;

}

else if (leap==0 && date.month==2 && date.day>=28)

{

date.day = 28;

}

}

void add_year(int years)

{

int leap;

date.year = date.year + years;

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

if (leap==1 && date.month==2 && date.day>=29)

{

date.month = 2;

date.day = 29;

}

else if (leap==0 && date.month==2 && date.day>=28)

{

date.month = 2;

date.day = 28;

}

}

void sub_sec(int secs)

{

date.sec = date.sec - secs;

while (0 > date.sec)

{

sub_minute(1);

date.sec = date.sec + 60;

}

}

void sub_minute(int minutes)

{

date.minute = date.minute - minutes;

while (0 > date.minute)

{

sub_hour(1);

date.minute = date.minute + 60;

}

}

void sub_hour(int hours)

{

date.hour = date.hour - hours;

while (0 > date.hour)

{

sub_day(1);

date.hour = date.hour + 24;

}

}

void sub_day(int days)

{

int leap;

date.day = date.day - days;

/****************************************

* 功能:判斷是否為閏年 *

****************************************/

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

while (0 >= date.day)

{

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

date.day = date.day + maxday(leap,date.month-1);

sub_month(1);

}

}

void sub_month(int months)

{

int leap;

date.month = date.month - months;

while (0 >= date.month)

{

date.month = date.month + 12;

sub_year(1);

}

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

if (leap==1 && date.month==2 && date.day>=29)

{

date.day = 29;

}

else if (leap==0 && date.month==2 && date.day>=28)

{

date.day = 28;

}

}

void sub_year(int years)

{

int leap;

date.year = date.year - years;

if ((date.year%4 == 0 && date.year%100 != 0) || (date.year%400 == 0))

{

leap = 1; /*是閏年則leap的值為1*/

}

else

{

leap = 0; /*不是則leap的值為0 */

}

if (leap==1 && date.month==2 && date.day>=29)

{

date.month = 2;

date.day = 29;

}

else if (leap==0 && date.month==2 && date.day>=28)

{

date.month = 2;

date.day = 28;

}

}

int maxday(int leap, int month)

{

int max_day; /*用於返回此月份的最大值*/

switch (month)

{

case 4:

{

max_day = 30;

break;

}

case 6:

{

max_day = 30;

break;

}

case 9:

{

max_day = 30;

break;

}

case 11:

{

max_day = 30;

break;

}

case 2:

{

if (leap == 1)

{

max_day = 29;

break;

}

else

{

max_day = 28;

break;

}

}

default: max_day = 31;

}

return max_day;

我這裏還有很多的,如果要的話,就聯系我121779988````

只不過我也是個菜鳥級的``

  • 上一篇:三菱 西門子 歐姆龍三種PLC各自的優缺點
  • 下一篇:大學入學生會好不好
  • copyright 2024編程學習大全網