1、C 语言 06 实验指导书下载-样例.docC 语言程序设计实验指导书实验十三 C+实践综合考核(2)一、题目:综合举例打印万年历 二、程序分析:设计思路:常年每月的天数存放在数组 d13的 d1d12中。如 d2是 2 月份的天数 28 天,闰年时 2 月份天数加 1。月份的英文名称存放在数组 m1310的 m1m12中。星期几英文名称存放在数组 w84的 w1m7中。变量 y 表示年份。考虑双休日,按星期一到星期日格式输出,k 表示星期几,其值 17 (也可按星期日星期六标准格式,K 值 06)。运行结果及程序 N-S 图如下:三、程序代码:# include #include #incl
2、ude int bweek(int y), date(int j, int k) ;void pweek(char w4), space(int k) ; /*数组名不能省略*/main() int d13= 0,31,28,31,30,31,30,31,31,30,31,30,31 ;char m1310=“0“,“January“,“February“,“March“,“April“, “May“,“June“,“July“,“August“,“September“, “October“,“November“,“December“ ;char w84=“0“,“MON“,“TUE“,“WN
3、D“,“THU“,“FRI“,“SAT“,“SUN“ ;int i , j , k , y=0 ; /*用 dowhile 则 y 可不赋初值*/while (y9999) printf(“input year(y1 and y7) k=1; printf(“n“) ; return k ;四、 上机输入程序代码、调试程序五、 运行程序、根据运行结果写在实验报告。实验十四 C+实践综合考核(3)一、题目:打印万年历:方法二二、程序分析:C 语言运行环境每行 80 列,一屏幕 25 行不能滚动, C+环境每行 80 列,一屏幕多行可以滚动,可在一屏幕内“每行” 并排三个月打印一年日历:由于屏幕只
4、能按行顺序输出,可以将全年日期按“月份块” 分布:每个月份块由 6 行( 最多 6 周)7 列(每周 7 天) 组成,全年总共有 4 个“行块”用 n1 表示03,3 个“列块”用 n2 表示 02。全年日期可用二维数组 sd2421存放(无日期的为 0)。月份数组下标值为 k-1,其所在的行块 n1=k/3,列块 n2=k%3该月日期 6 行(i 从 05)7 列(j 从 06)各元素对应的下标为: i+6*n1 j+7*n2月份数组 sm12:sm0sm11 中存放 112 月份的天数。全年日期数组 sd2421=0可以采用初始化全部清零。j 为星期标志,其值为 06,对应星期日 星期六。
5、三、程序代码:# include /*本程序完全可用于 C+环境 */# include /*清屏函数 system(“cls“)头文件*/# include /*读键盘函数 getch()头文件*/void main() int sm12= 31,28,31,30,31,30,31,31,30,31,30,31, sd2421=0;char w30=“ S M T W T F S “;int i, j, k, d, n1, n2, y ; do printf(“input year(y1 and y9999) ; getchar();if (y%4=0 /*计算闰年*/j=( y+(y-1)
6、/4-(y-1)/100+(y-1)/400 )%7 ; /*计算元旦周几*/ for (k=0; k12; k+) /*对月份循环*/ n1=k/3; n2=k%3; i=0 ;for (d=1; d=smk; d+) /*循环将该月日期放入数组*/ sdi+6*n1j+7*n2=d;if (j6) j+ ; else j=0; i+; system(“cls“); printf(“nttt %d yearn“, y); /*打印年份*/for (i=0; i24; i+) /*循环打印 12 个月的日历*/ if (i=0) printf(“nt January tt February t
7、t March nn“) ; printf(“ %s%s%s n“, w, w, w) ; else if (i=6) printf(“nt April tt May tt June nn“) ; printf(“ %s%s%s n“, w, w, w) ; else if (i=12) printf(“nt July tt August tt September nn“) ; printf(“ %s%s%s n“, w, w, w) ; else if (i=18) printf(“nt October tt November tt Decembernn“) ; printf(“ %s%s%s n“, w, w, w) ; for (j=0; j21; j+) /*控制列数打印日期*/ if (j=7 | j=14) printf(“ “) ; /*隔开月份*/ if (sdij=0) printf(“ “); continue; printf(“%3d“, sdij); printf(“n“); getch(); 一、 上机输入程序代码、调试程序二、 运行程序、根据运行结果写在实验报告。