返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言输出教学日历表的方法实例
  • 156
分享到

C语言输出教学日历表的方法实例

2024-04-02 19:04:59 156人浏览 泡泡鱼
摘要

按照格式分别输入学期,开学时间,总周数即可得到课程表,以回车结束。 eg. 学期:2021-2022_2 开学时间:2021/11/25 总周数:20 输出结果 #include&

按照格式分别输入学期,开学时间,总周数即可得到课程表,以回车结束。

eg.

学期:2021-2022_2

开学时间:2021/11/25

总周数: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("总周数:");
	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) {     //返回输入时间的星期数
	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("总周数:");
	scanf_s("%d", &week);
	tempday = day;
	tempmouth = mouth;
	for (int i = 3; i >= 0; i--)           //把输入的int型的学期数转化为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) {                   //日历第一行同部星期数
				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语言教学日历表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言输出教学日历表的方法实例

本文链接: https://lsjlt.com/news/150293.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言输出教学日历表的方法实例
    按照格式分别输入学期,开学时间,总周数即可得到课程表,以回车结束。 eg. 学期:2021-2022_2 开学时间:2021/11/25 总周数:20 输出结果 #include&...
    99+
    2024-04-02
  • C语言如何输出教学日历表
    本篇内容主要讲解“C语言如何输出教学日历表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何输出教学日历表”吧!按照格式分别输入学期,开学时间,总周数即可得到课程表,以回车结束。eg.学期...
    99+
    2023-06-30
  • C语言怎么打印输出某一年的日历
    本篇内容主要讲解“C语言怎么打印输出某一年的日历”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么打印输出某一年的日历”吧!输入一个年份(1970以后的),以 2*6 的格式打印当年的日历...
    99+
    2023-06-08
  • 一起来学习C语言的输入和输出
    目录一、scanf() 和 printf() 函数实例二、getchar() 和 putchar() 函数实例1实例2三、gets() 和 puts() 函数实例...
    99+
    2024-04-02
  • c语言文件输入输出的方法是什么
    C语言文件的输入输出方法主要通过标准库函数来实现。文件的输入输出主要涉及以下几个函数:1. fopen函数:用于打开一个文件,并返回...
    99+
    2023-08-08
    c语言
  • c语言输出空格的方法是什么
    在C语言中,可以使用printf函数输出空格。要输出空格,只需在printf函数中使用空格字符即可。例如,要输出一个空格,可以使用以...
    99+
    2024-03-13
    c语言
  • C语言输出孪生素数的实现示例
    目录1.题目内容:2.输入格式:3输出格式:1.题目内容: 孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和7也是(5虽重复但算作2组)。 2.输入格式: 输入...
    99+
    2024-04-02
  • C# log4net 日志输出的实现示例
    目录第一步:安装log4net第二步:添加log4net.config配置文件第三步:添加日志配置第四步:AssemblyInfo.cs中配置 Watch = true思路: 1.安...
    99+
    2024-04-02
  • c语言输入3个数输出最大值的方法
    小编给大家分享一下c语言输入3个数输出最大值的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!方法:首先使用scanf()接收从键盘输入的三个数;然后使用“if else”语句比较三个数的大小,获得最大值;最后使用pri...
    99+
    2023-06-14
  • R语言 实现输出九九乘法表
    在R语言中,使用cat()函数可以将多个变量连接起来并输出到控制台或者File文件中。 下面,以九九乘法表为例来 演示cat()函数的用法 //jiujiubiao.R  ## ...
    99+
    2024-04-02
  • Go语言fmt.Sprintf格式化输出的语法与实例
    格式化在逻辑中非常常用。使用格式化函数,要注意写法: fmt.Sprintf(格式化样式, 参数列表…) 格式化样式:字符串形式,格式化动词以%开头。参数列表:多个参数...
    99+
    2024-04-02
  • C语言如何实现链表逆序并输出
    这篇文章主要介绍了C语言如何实现链表逆序并输出的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言如何实现链表逆序并输出文章都会有所收获,下面我们一起来看看吧。C语言数据结构实现链表逆序并输出将一个链表逆序并输...
    99+
    2023-06-16
  • c语言字符串输出的方法是什么
    在C语言中,可以使用printf函数来输出字符串。下面是一个简单的例子: #include <stdio.h> int...
    99+
    2024-03-11
    c语言
  • Python列表遍历输出的方法有哪些
    Python列表遍历输出的方法有以下几种:1. 使用for循环遍历列表元素:pythonmy_list = [1, 2, 3, 4,...
    99+
    2023-10-20
    Python
  • C语言输出孪生素数的实现示例分析
    今天就跟大家聊聊有关C语言输出孪生素数的实现示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.题目内容:孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和...
    99+
    2023-06-26
  • c语言输出格式转换的方法是什么
    在C语言中,输出格式转换主要通过格式化输出函数`printf()`来实现。`printf()`函数可以根据指定的格式将数据输出到屏幕...
    99+
    2023-10-28
    c语言
  • C语言实现输入ascii码,输出对应的字符方式
    目录C语言输入ascii码,输出对应的字符C语言ASCII码与转义字符与代码间关系基础知识回顾总结C语言输入ascii码,输出对应的字符 源代码 #include<stdio...
    99+
    2023-01-28
    C语言输入ascii码 输出字符 输入ascii码
  • R语言如何实现输出九九乘法表
    这篇文章给大家分享的是有关R语言如何实现输出九九乘法表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在R语言中,使用cat()函数可以将多个变量连接起来并输出到控制台或者File文件中。演示cat()函数的用法/...
    99+
    2023-06-08
  • C#实现UI控件输出日志的方法详解
    目录文章描述开发环境开发工具实现代码实现效果文章描述 一般情况下,我们的日志文件是用来记录一些关键操作或者异常,并且是后台存储,并不对外开放的;但是也有些时候,特别是做一些小工具程序...
    99+
    2022-11-13
    C# UI控件输出日志 C# 输出日志
  • 怎么使用c语言输出实心正方形
    使用C语言输出实心正方形的方法可以通过循环嵌套来实现。具体的方法如下:```c#include int main() {int si...
    99+
    2023-08-25
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作