1、高级语言程序设计课程设计题目: 专 业 计算机 类 班 级 计算机类1102 学 生 学 号 指导老师 _起止时间 .2.13.2.17 2月目录试验汇报3必做题:3选做题:8题目10 写一个日历显示程序8步骤图:(以下)14工程代码:19心得体会24试验汇报必做题: (1) 编一程序对2种排序方法进行比较:交换法、选择法、插入法、冒泡法四种方法选2。具体比较方法是随机生成一组(300个)100以内整数数据,用选定2种排序方法进行排序。纪录排序过程中数据比较和交换次数,输出比较结果。#include#includeint main(void) int a300,b300; int i,j,te
2、mp,t; int s=0,p=0,s1=0,p1=0; for(i=0;i300;i+) ai=rand()%100; bi =ai; for(i=0;i299;i+) for(j=i+1;j300;j+) if(aiaj) temp=ai; ai=aj; aj=temp; s+; p+; printf(%d %dn,s,p);printf(n); for(i=0;i299;i+) t=i; for(j=i+1;j300;j+) if(btbj) t=j; if(t!=i) temp=bi; bi=bt; bt=temp; s1+; p1+; printf(%d %dn,s1,p1); re
3、turn 0;运行结果:在这个题目中选择了交换法和选择法,首先要产生300个随机数,其次要知道两种排序法原理,然后进行编程,同时利用循环结构。关键在于产生随机数和排序。经过比较发觉交换法交换次数比选择法少,比较次数二者一样。(2) 写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据最大值、最小值和平均值,测试之。其中data指向给定数据数组指针,max、min、ave分别指向最大值、最小值和平均值,size是数组大小。要求第一个实参是数组,第2、3、4个实参全部是对一般简单变量某种操作,
4、最终一个实参是数组大小。测试之#includevoid maxMinAver(int *data, int *max, int *min,float * ave,int size);int main(void) int *data,*max,*min,size; float *ave; maxMinAver(data,max,min,ave,size); return 0;void maxMinAver(int *data, int *max, int *min,float * ave,int size) int a10; int b,c,n,j,s=0,temp; float d; data
5、=a; max=&b; min=&c; ave=&d; for(n=0;n10;n+) scanf(%d,&an); /交换法排序求最大最小值 for(n=0;n9;n+) for(j=n+1;j10;j+) if(anaj) temp=an; an=aj; aj=temp; b=a0; c=a9;/求平均数 for(n=0;n10;n+) s=s+an; d=(float)s/10; printf(%d %d %f,*max,*min,*ave);这个题目需要利用函数调用,还要利用指针间接引使用方法,设计函数将最大、最小和平均值求出来。关键是函数调用。选做题:题目10 写一个日历显示程序 基
6、础功效: 1)输入任十二个月将显示出该年全部月份日期,对应星期 2) 注意闰年情况其显示格式要求以下:1)月份:汉字英文全部能够,2)下一行显示星期,从周日到周六,中英文全部能够3)下一行开始显示日期从1号开始,并按其是周几实际情况和上面星期数垂直对齐当输入显示以下:Input the year:Input the file name:aThe calendar of the year . Januray 1 February 2 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 1 2 3 4 5 6 7 4 5 6
7、7 8 9 10 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 = = March 3 April 4 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 1
8、6 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 = =#includeint year(int p);int riqi(int z);int xinqi(int w,int l,int jj);void dayin(int m,int n,int a12,int b12,char c30);int main(void) int n,s; int m,qq,xx; printf(Input the year:); scanf(%d,&n); s=year(n); int a12 = 1,2,
9、3,4,5,6,7,8,9,10,11,12; int b12=31,s,31,30,31,30,31,31,30,31,30,31; /printf(%d,b1); char c=sun mon tue wed thr fri sat; printf(The calendar of the year %dn,n); m=riqi(n); /printf(%dn,m); dayin(m,n,a,b,c);return 0;/判定输入那十二个月是否是闰年int year(int p) if(p%4 != 0)return 28;if(p%4 = 0)if(p%100 = 0)if(p%400 =
10、 0)return 29;return 28;return 29;/求输入那十二个月1月1日式星期几/*参考1997年1月1日*/int riqi(int z)int d;int days=(z-1997)*365;int i = (z- 1997)/4;days=days+i*1;/*1997年1月1日是星期三*/d=days%7+1;d=(d+2)%7;if(d = 0)d = 7;return d;/从2月开始到12月每个月份1号是星期几int xinqi(int w,int l,int jj) int ss; int qi; int b12=31,28,31,30,31,30,31,3
11、1,30,31,30,31; ss=year(l); b1=ss; qi=(bjj-1%7+(w-1)+1)%7; return qi;void dayin(int m,int n,int a12,int b12,char c30) int i,r,v,xx,j,qq; for(i=0;i12;i+) printf(%dn,ai); printf (%sn,c); if(i=0) if(m=7) m=0; for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); else
12、qq=xinqi(m,n,i); m=qq; / printf(%d,m); for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); for(j=r,v=1;j=bi;j+,v+) printf(%-4d,j); if(v%7=0) printf(n); printf(n=); printf(n); 运行结果:这个程序要求输入任意年能打印出该年一月到十二月日历表;所以需要年份,月份,日期;但如上程序是以19971月1日(星期三)为参考,所以只能查询1997年以后年份日历(
13、包含1997年)。步骤图:(以下) 主步骤图:分层步骤图:模块步骤图:dayin:year:xinqi:工程代码:1.main.c :#include#includeli.hint main(void) int n,s; int m,qq,xx; printf(Input the year:); scanf(%d,&n); s=year(n); int a12 = 1,2,3,4,5,6,7,8,9,10,11,12; int b12=31,s,31,30,31,30,31,31,30,31,30,31; /printf(%d,b1); char c=sun mon tue wed thr f
14、ri sat; printf(The calendar of the year %dn,n); m=riqi(n); /printf(%dn,m); dayin(m,n,a,b,c);return 0;2.ri.c: /判定输入那十二个月是否是闰年int year(int p) if(p%4 != 0)return 28;if(p%4 = 0)if(p%100 = 0)if(p%400 = 0)return 29;return 28;return 29;/求输入那十二个月1月1日式星期几/*参考1997年1月1日*/int riqi(int z)int d;int days=(z-1997)*
15、365;int i = (z- 1997)/4;days=days+i*1;/*1997年1月1日是星期三*/d=days%7+1;d=(d+2)%7;if(d = 0)d = 7;return d;/从2月开始到12月每个月份1号是星期几int xinqi(int w,int l,int jj) int ss; int qi; int b12=31,28,31,30,31,30,31,31,30,31,30,31; ss=year(l); b1=ss; qi=(bjj-1%7+(w-1)+1)%7; return qi;/打印日历void dayin(int m,int n,int a12,
16、int b12,char c30) int i,r,v,xx,j,qq; for(i=0;i12;i+) printf(%dn,ai); printf (%sn,c); if(i=0) if(m=7) m=0; for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); else qq=xinqi(m,n,i); m=qq; / printf(%d,m); for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;
17、r+) printf(%4d,r); printf(n); for(j=r,v=1;j=bi;j+,v+) printf(%-4d,j); if(v%7=0) printf(n); printf(n=); printf(n); 3.li.h :#ifndef LI_H#define LI_Hint year(int p);int riqi(int z);int xinqi(int w,int l,int jj);void dayin(int m,int n,int a12,int b12,char c30);#endif心得体会 编写一个程序之前首先要分析它,知道它功效,要做什么等等,怎样实现它,需要我们认真思索,分析。对于较复杂程序能够分模块把它逐一实现。编写程序过程中,我们需要耐心,细心,信心。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100