欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言輸出教學日歷表的方法實例

 更新時間:2022年06月01日 08:55:57   作者:權咯咯咯  
最近幫朋友做一些C語言的練習題,期間遇到了個比較有意思的題目,下面這篇文章主要給大家介紹了關于C語言輸出教學日歷表的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

按照格式分別輸入學期,開學時間,總周數(shù)即可得到課程表,以回車結束。

eg.

學期:2021-2022_2

開學時間:2021/11/25

總周數(shù):20

輸出結果

#include<stdio.h>
#include<windows.h>
 
int Weekdayofyear(int year);
int Isprime(int year);
int Days(int year, int mouth);
int Weekday(int year, int mouth, int day);
int Max(int year,int mouth);
 
 
 
int main() {
	char title1[] = "\t\txxxxxx大學教學日歷\t\t";
	char title2[] = "0000-0000學年第0學期";
	char tab[60] = "周      一      二      三      四      五      六      日";
	char term3;
	char calender[100][8];
	int tempday, tempmouth,flag = 1,b,c,d,e,f,g,h,i,j, cnt = 1, week,term1, term2,year, mouth, day;
 
	printf("學期:");
	scanf("%d-%d_%c", &term1, &term2, &term3);   
	printf("開學時間:");
	scanf("%d/%d/%d", &year, &mouth, &day);;
	printf("總周數(shù):");
	scanf("%d", &week);
	tempday = day;
	tempmouth = mouth;
	for (b = 3; b >= 0; b--)          
	{                                      
		title2[b] = term1 % 10 + 48;
		term1 /= 10;
	}
	for (c = 8; c >= 5; c--)           
	{
		title2[c] = term2 % 10 + 48;
		term2 /= 10;
	}
	title2[15] = term3;                     
	for (d = 0; d < week; d++) {
		calender[d][0] = d + 1;
	}
	for (e = 0; e < week; e++) {
		for (f = 1; f < 8; f++) { 
			if (e == 0) {                   
				for (g = 1; g < Weekday(year, mouth, day); g++) {
					calender[e][g] = 0;
				}
				for (h = Weekday(year, mouth, day);h < 8; h++) {
					calender[e][h] = day++;
				}
				break;
		    }
			if (day > Max(year, mouth)) {
				mouth += 1;
				if (mouth > 12) {
					mouth = 1;
				}
				calender[e][f] = -mouth;
				day = 2;
 
			}
			else {
				calender[e][f] = day++;
			}
			
		}
	}
	puts(title1);
	printf("\t\t  ");
	puts(title2);
	puts(tab);   
	for (i = 0; i < week; i++) {                            
		for (j = 0; j < 8; j++) {
			if (calender[i][j] == 0) {  
				printf("  \t");
				continue;
			}
			if (calender[i][j] < 0) {
			//	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15 | 0 | 128 | 0);  
				printf("%d月\t", -calender[i][j]);
			//	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7 | 0 | 0 | 0);
			}
			else {
				printf("%2d\t", calender[i][j]);
			}
		}
		printf("\n");
	}
}
 
int Weekdayofyear(int year) {            
	int days = 0, week;
	int a;
	for (a = 0; a < year - 1900; a++) {
		if (a % 4 == 0) days += 366;
		else days += 365;
	}
	week = days % 7;
	if (week == 0) week = 7;
	return week;
}
int Isprime(int year) {    
	char flag;
	if (year % 4 == 0) {
		flag = 1;
	}
	else {
		flag = 0;
	}
	return flag;
}
int Days(int year, int mouth) {     
	int days = 0;
	int isprime;
	isprime = Isprime(year);
	switch (mouth) {
	case 12:days += 31;
	case 11:days += 30;
	case 10:days += 31;
	case 9:days += 30;
	case 8:days += 31;
	case 7:days += 31;
	case 6:days += 30;
	case 5:days += 31;
	case 4:days += 30;
	case 3:days += 31;
	case 2:if (isprime == 1) days += 29;
		  else days += 28;
	case 1:days += 31;
	}
	return days;
}
int Weekday(int year, int mouth, int day) {     
	int days;
	int weekday;
	days = Days(year, mouth - 1);
	days += day;
	weekday = days % 7;
	weekday = weekday + Weekdayofyear(year) - 1;
	if (weekday > 7) weekday -= 7;
	return weekday;
}
int Max(int year,int mouth) {     
	int days;
	int isprime;
	isprime = Isprime(year);
	switch (mouth) {
	case 12:days = 31; break;
	case 11:days = 30; break;
	case 10:days = 31; break;
	case 9:days = 30; break;
	case 8:days = 31; break;
	case 7:days = 31; break;
	case 6:days = 30; break;
	case 5:days = 31; break;	
	case 4:days = 30; break;
	case 3:days = 31; break;
	case 2:if (isprime == 1) days = 29; 
		  else days = 28; break;
	case 1:days = 31; break;
	}
	return days;
}

VS版本

#include<stdio.h>
#include<windows.h>
int Isprimeofyear(int year) {    //判斷是否為閏年
	char flag;
	if (year % 4 == 0) {
		flag = 1;
	}
	else {
		flag = 0;
	}
	return flag;
}
int Weekdayofyear(int year) {            //1900年1月1日是星期一,判斷這一年的1月1日是星期幾
	int days = 0, week;
	for (int i = 0; i < year - 1900; i++) {
		if (i % 4 == 0) days += 366;
		else days += 365;
	}
	week = days % 7;
	if (week == 0) week = 7;
	return week;
}
int Mouthofdays(int year, int mouth) {      //輸出月份到年初有多少天
	int days = 0;
	int isprime;
	isprime = Isprimeofyear(year);
	switch (mouth) {
	case 12:days += 31;
	case 11:days += 30;
	case 10:days += 31;
	case 9:days += 30;
	case 8:days += 31;
	case 7:days += 31;
	case 6:days += 30;
	case 5:days += 31;
	case 4:days += 30;
	case 3:days += 31;
	case 2:if (isprime == 1) days += 29;
		  else days += 28;
	case 1:days += 31;
	}
	return days;
}
int Weekdayofday(int year, int mouth, int day) {     //返回輸入時間的星期數(shù)
	int days;
	int weekday;
	days = Mouthofdays(year, mouth - 1);
	days += day;
	weekday = days % 7;
	weekday = weekday + Weekdayofyear(year) - 1;
	if (weekday > 7) weekday -= 7;
	return weekday;
}
int Maxofmouth(int year,int mouth) {     //返回一個月最多有多少天
	int days;
	int isprime;
	isprime = Isprimeofyear(year);
	switch (mouth) {
	case 12:days = 31; break;
	case 11:days = 30; break;
	case 10:days = 31; break;
	case 9:days = 30; break;
	case 8:days = 31; break;
	case 7:days = 31; break;
	case 6:days = 30; break;
	case 5:days = 31; break;	
	case 4:days = 30; break;
	case 3:days = 31; break;
	case 2:if (isprime == 1) days = 29; 
		  else days = 28; break;
	case 1:days = 31; break;
	}
	return days;
}
int main() {
	int year, mouth, day;
	char title1[] = "\t\txxxxxx大學教學日歷\t\t";
	char title2[] = "0000-0000學年第0學期";
	char tab[60] = "周      一      二      三      四      五      六      日";
	int term1, term2;
	char term3;
	int week;
	char calender[100][8];
	int cnt = 1;
	int tempday, tempmouth;
	int flag = 1;
	printf("學期:");
	scanf_s("%d-%d_%c", &term1, &term2, &term3);   //輸入學期
	printf("開學時間:");
	scanf_s("%d/%d/%d", &year, &mouth, &day);;
	printf("總周數(shù):");
	scanf_s("%d", &week);
	tempday = day;
	tempmouth = mouth;
	for (int i = 3; i >= 0; i--)           //把輸入的int型的學期數(shù)轉化為char型存入(替代0)title2中以打印
	{                                      
		title2[i] = term1 % 10 + 48;
		term1 /= 10;
	}
	for (int j = 8; j >= 5; j--)           //同上
	{
		title2[j] = term2 % 10 + 48;
		term2 /= 10;
	}
	title2[15] = term3;                     //同上
	for (int i = 0; i < week; i++) {
		calender[i][0] = i + 1;
	}
	for (int i = 0; i < week; i++) {
		for (int j = 1; j < 8; j++) { 
			if (i == 0) {                   //日歷第一行同部星期數(shù)
				for (int k = 1; k < Weekdayofday(year, mouth, day); k++) {
					calender[i][k] = 0;
				}
				for (int k = Weekdayofday(year, mouth, day); k < 8; k++) {
					calender[i][k] = day++;
				}
				break;
		    }
			if (day > Maxofmouth(year, mouth)) {
				mouth += 1;
				if (mouth > 12) {
					mouth = 1;
				}
				calender[i][j] = -mouth;
				day = 2;
 
			}
			else {
				calender[i][j] = day++;
			}
			
		}
	}
	puts(title1);
	printf("\t\t  ");
	puts(title2);
	puts(tab);   
	for (int i = 0; i < week; i++) {                            //輸出表格
		for (int j = 0; j < 8; j++) {
			if (calender[i][j] == 0) {  
				printf("  \t");
				continue;
			}
			if (calender[i][j] == tempday && flag == 1) {
				printf("\b\b\b%d.%d.%d   ", year, tempmouth, tempday);	
				flag = 0;
				continue;
			}
			if (calender[i][j] < 0) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15 | 0 | 128 | 0);  //前景色|背景色|前景加強|背景加強
				printf("%d月\t", -calender[i][j]);
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7 | 0 | 0 | 0);
			}
			else {
				printf("%2d\t", calender[i][j]);
			}
		}
		printf("\n");
	}
}

總結

到此這篇關于C語言輸出教學日歷表的文章就介紹到這了,更多相關C語言教學日歷表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++控制臺實現(xiàn)密碼管理系統(tǒng)

    C++控制臺實現(xiàn)密碼管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++控制臺實現(xiàn)密碼管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++實現(xiàn)動態(tài)順序表(vector)

    C++實現(xiàn)動態(tài)順序表(vector)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)動態(tài)順序表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C語言實現(xiàn)學籍管理系統(tǒng)課程設計

    C語言實現(xiàn)學籍管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學籍管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 一文搞懂C++多態(tài)的用法

    一文搞懂C++多態(tài)的用法

    C++多態(tài)是在繼承的基礎上實現(xiàn)的,了解多態(tài)之前我們需要掌握一定的C++繼承的知識,本文將介紹C++中多態(tài)的概念,構成條件以及用法,感興趣的可以學習一下
    2022-04-04
  • C語言:自定義類型詳解

    C語言:自定義類型詳解

    這篇文章主要介紹了C語言自定義函數(shù)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • Qt實現(xiàn)數(shù)據(jù)導出到xls的示例代碼

    Qt實現(xiàn)數(shù)據(jù)導出到xls的示例代碼

    導入導出數(shù)據(jù)到csv由于語法簡單,適用場景有限,于是本文將為大家介紹Qt如何實現(xiàn)導出數(shù)據(jù)到xls,感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • C語言數(shù)據(jù)結構之二叉樹詳解

    C語言數(shù)據(jù)結構之二叉樹詳解

    二叉樹(Binary tree)是樹形結構的一個重要類型。許多實際問題抽象出來的數(shù)據(jù)結構往往是二叉樹形式。本文將通過示例詳細講解一下二叉樹,需要的可以參考一下
    2022-03-03
  • C++中構造函數(shù)詳解

    C++中構造函數(shù)詳解

    大家好,本篇文章主要講的是C++中構造函數(shù)詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • c/c++內存分配大小實例講解

    c/c++內存分配大小實例講解

    在本篇文章里小編給大家整理了一篇關于c/c++內存分配大小實例講解內容,有需要的朋友們可以跟著學習參考下。
    2021-11-11
  • 深入了解C語言中的字符串和內存函數(shù)

    深入了解C語言中的字符串和內存函數(shù)

    本文主要帶大家來學習一些常用的庫函數(shù)。有了這些庫函數(shù),我們可以更加方便地操作字符串和內存,從而提升我們的編碼效率。話不多說,我們開始吧
    2022-11-11

最新評論