本文目录一览:
如何用c语言做个日历表
1、功能要求 :
1)输入任一年将显示出该年的所有月份日期,对应的星期
2)注意闰年情况
其显示格式要求如下:
1)份:中文英文都可以,
2)下一行显示星期,从周日到周六,中英文都可以
3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐
2、例程:
#include stdio.h
#includeconio.h
#includestdlib.h
int IsLeapYear(int); //声明头文件和函数
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; //每个月的天数,最后一个是闰年2月
printf("Please enter the year: ");
scanf("%d",year); //输入年份
while(Year_Start year) //计算从公元1年1月1日到你所查询年份前一年的天数,是为了以后确定这一年的第一天是星期几
{
if( IsLeapYear( Year_Start ) ) //确定一年的天数,闰年为366天,一般为365天
Per_Year_Days = 366;
else
Per_Year_Days = 365;
Year_days = Year_days + Per_Year_Days;
Year_Start++;
}
for( temp = 1; temp =12; temp++ ) //循环输出每个月的日历
{
switch( temp )
{
case 1:
printf(" January(%d)\n",year); //如 January(2008)
break;
case 2:
printf(" February(%d)\n",year);
break;
case 3:
printf(" March(%d)\n",year);
break;
case 4:
printf(" April(%d)\n",year);
break;
case 5:
printf(" May(%d)\n",year);
break;
case 6:
printf(" June(%d)\n",year);
break;
case 7:
printf(" July(%d)\n",year);
break;
case 8:
printf(" August(%d)\n",year);
break;
case 9:
printf(" September(%d)\n",year);
break;
case 10:
printf(" October(%d)\n",year);
break;
case 11:
printf(" November(%d)\n",year);
break;
case 12:
printf(" December(%d)\n",year);
break;
}
i = Year_days % 7; //计算这个月第一天是星期几
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 )
for( temp_i = 0; temp_i i; temp_i++) //第一天不是星期一,在前面补空格,本来的空格少了,我加了两个
printf(" ");
day = 1;
if( IsLeapYear(year) temp == 2) //闰年的2月
while( day = month_day[12] )
{
if( day 1 )
if( Year_days % 7 == 0 ) //如果不是1号且昨天是星期天,输入回车, 换行
printf("\n");
if( day = 10 ) //如果大于或等于10号则输出日期并加2个空格,小于10号输出日期并加3个空格
printf("%d ",day); //开始没想到这几行是干嘛用的,只要一个输出就好嘛,后来才想到是用来调整格式的
else //只是他并没有调整好,我做了下修改,现在很整齐了
printf("%d ",day);
Year_days++;
day++;
}
else //不是闰年2月的
while (day = month_day[temp-1]) //输出,同上
{
if( day 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day =10 ) //理由同上
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' ) //输入q退出程序
exit(0);
}
getch();
}
int IsLeapYear( int year ) //判断是否为闰年
{
if ((year %4 == 0) (year % 100 != 0) || //年份能被4整除且不能被100整除 或者 能被400整除的为闰年
(year % 400 == 0) )
return 1;
else
return 0;
}
怎么用C语言编程数字时钟
1、以下例程实现时钟的实时显示基本要求: 1) 自行设计界面,模拟表盘式时钟。要求界面美观,清晰。2)数字同步显示时间信息。
2、例程:
#includegraphics.h
#includemath.h
#includedos.h
#define PI 3.1415926
//屏幕中心的坐标(640X480模式下)
#define mid_x 320
#define mid_y 240
int main()
{ int graphdriver=DETECT,graphmode;
int end_x,end_y;
struct time curtime;
float th_hour,th_min,th_sec;
initgraph(graphdriver,graphmode,"C:\\TC2"); //初始化VGA屏幕模式
setbkcolor(BLACK); //使用黑色的背景色
while(!kbhit(0)) //若有键盘输入,则跳出,即是结束程序
{ setcolor(GREEN); //把画笔设为绿色
circle(mid_x,mid_y,180); //钟的外圆
circle(mid_x,mid_y,150); //钟的内圆
circle(mid_x,mid_y,1); //画出钟的圆心
gettime(curtime); //取得系统当前时间
th_sec=(float)curtime.ti_sec*0.1047197551; //把秒针的角度化为弧度,为以后绘制时方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0; //分针的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0; //时度的弧度,注意整时是12等分的,所时乘的是3.14/180*5
//计算出时针的尾的坐标(时针长70)
end_x=mid_x+70*sin(th_hour);
end_y=mid_y-70*cos(th_hour);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //用红色线画出时针
//计算出分针坐标(分针长110)
end_x=mid_x+110*sin(th_min);
end_y=mid_y-110*cos(th_min);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //用红色画出分针
end_x=mid_x+140*sin(th_sec);
end_y=mid_y-140*cos(th_sec);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //同上,画出秒针,长为140
//画出钟盘上的刻度,刻度长20
line(140,240,160,240); //9点对应的大刻度
line(320,60,320,80); //12点对应的大刻度
line(500,240,480,240); //3点的刻度
line(320,420,320,400); //6点的刻度
line(410,395.7,400,378.4); //5点
line(475.7,330,458.4,320); //4点
line(475.7,150,458.4,160); //2点
line(410,84.3,400,101.6); //1点
line(230,84.3,240,101.6); //11点
line(164.3,150,181.6,160); //10点
line(164.3,330,181.6,320); //8点
line(230,395.7,240,378.4); //7点
sleep(BLUE); //这里应该是打错,停止一秒,应为sleep(1000)
cleardevice(); //清除屏幕上的显示
}
closegraph(); //关闭VGA屏幕,即返回文本方式
return 0;
}
图形时钟用C语言怎么编?
#include graphics.h
#include conio.h
#include math.h
void Draw(int hour, int minute, int second)
{
double a_hour, a_min, a_sec; // 时、分、秒针的弧度值
int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置
int x_hour1,y_hour1,x_min1,y_min1,x_sec1,y_sec1;
// 计算时、分、秒针的弧度值
a_sec = second * 2 * PI / 60;
a_min = minute * 2 * PI / 60 ;
a_hour= hour * 2 * PI / 12 + a_min / 12;;
// 计算时、分、秒针的首末端位置
x_sec = 320 + (int)(120 * sin(a_sec));
y_sec = 240 - (int)(120 * cos(a_sec));
x_min = 320 + (int)(100 * sin(a_min));
y_min = 240 - (int)(100 * cos(a_min));
x_hour= 320 + (int)(70 * sin(a_hour));
y_hour= 240 - (int)(70 * cos(a_hour));
x_sec1= 320 - (int)(15 * sin(a_sec));
y_sec1= 240 + (int)(15 * cos(a_sec));
x_min1= 320 - (int)(10 * sin(a_min));
y_min1= 240 + (int)(10 * cos(a_min));
x_hour1= 320 - (int)(5 * sin(a_hour));
y_hour1= 240 + (int)(5 * cos(a_hour));
// 画时针
setlinestyle(PS_SOLID, NULL, 7);
setcolor(WHITE);
line(x_hour1, y_hour1, x_hour, y_hour);
// 画分针
setlinestyle(PS_SOLID, NULL, 4);
setcolor(LIGHTGRAY);
line(x_min1, y_min1, x_min, y_min);
// 画秒针
setlinestyle(PS_SOLID, NULL, 2);
setcolor(RED);
line(x_sec1, y_sec1, x_sec, y_sec);
}
void main()
{
initgraph(640, 480); // 初始化 640 x 480 的绘图窗口
// 绘制一个简单的表盘
circle(320, 240, 2);
circle(320, 240, 60);
circle(320, 240, 160);
outtextxy(296, 330, " 竹斌");
int x,y;
for(int i=0;i12;i++)
{
x=320+(int)(140*sin(30*i*2*PI/360));
y=240-(int)(140*cos(30*i*2*PI/360));
switch(i)
{
case 0:outtextxy(x-5,y-5,"12");break;
case 1:outtextxy(x-5,y-5,"1");break;
case 2:outtextxy(x-5,y-5,"2");break;
case 3:outtextxy(x-5,y-5,"3");break;
case 4:outtextxy(x-5,y-5,"4");break;
case 5:outtextxy(x-5,y-5,"5");break;
case 6:outtextxy(x-5,y-5,"6");break;
case 7:outtextxy(x-5,y-5,"7");break;
case 8:outtextxy(x-5,y-5,"8");break;
case 9:outtextxy(x-5,y-5,"9");break;
case 10:outtextxy(x-5,y-5,"10");break;
case 11:outtextxy(x-5,y-5,"11");break;
}
}
// 设置 XOR 绘图模式
setwritemode(R2_XORPEN); // 设置 XOR 绘图模式
//画刻度
int a,b,a1,b1,n=0;
for(n=0;n60;n++)
{
a=320+(int)(160 * sin(n*2*PI/60));
b=240-(int)(160 * cos(n*2*PI/60));
a1=320+(int)(150 * sin(n*2*PI/60));
b1=240-(int)(150 * cos(n*2*PI/60));
if(n%5==0)
setlinestyle(PS_SOLID,NULL,5);
else
setlinestyle(PS_SOLID,NULL,1);
line(a1,b1,a,b);
}
// 绘制表针
SYSTEMTIME ti; // 定义变量保存当前时间
while(!kbhit()) // 按任意键退出钟表程序
{
GetLocalTime(ti); // 获取当前时间
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 画表针
Sleep(1000); // 延时 1 秒
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 擦表针(擦表针和画表针的过程是一样的)
}
closegraph(); // 关闭绘图窗口
}
谁能帮我用c语言编写桌面钟表啊!
#includemath.h
#includedos.h
#includegraphics.h
#define CENTERX 320 /*表盘中心位置*/
#define CENTERY 175
#define CLICK 100 /*喀嗒声频率*/
#define CLICKDELAY 30 /*喀嗒声延时*/
#define HEBEEP 10000 /*高声频率*/
#define LOWBEEP 500 /*低声频率*/
#define BEEPDELAY 200 /*报时声延时*/
/*表盘刻度形状*/
int Mrk_1[8]={-5,-160,5,-160,5,-130,-5,-130, };
int Mrk_2[8]={-5,-160,5,-160,2,-130,-2-130, };
/*时针形状*/
int HourHand[8]={-3,-100,3,-120,4, 10,-4,10};
/*分针形状*/
int MiHand[8]={-3,-120,3,-120,4, 10,-4,10};
/*秒针形状*/
int SecHand[8]={-2,-150,2,-150,3, 10,-3,10};
/*发出喀嗒声*/
void Click()
{
sound(CLICK);
delay(CLICKDELAY);
nosound();
}
/*高声报时*/
void HighBeep()
{
sound(HEBEEP);
delay(BEEPDELAY);
nosound;
}
/*低声报时*/
void LowBeep()
{
sound(LOWBEEP);
}
/*按任意角度画多边形*/
void DrawPoly(int *data,int angle,int color)
{
int usedata[8];
float sinang,cosang;
int i;
sinang=sin((float)angle/180*3.14);
cosang=cos((float)angle/180*3.14);
for(i=0;i8;i+=2)
{
usedata[i] =CENTERX+ cosang*data[i]-sinang*data[i+1]+.5;
usedata[i+1]=CENTERY+sinang*data[i]+cosang*data[i+1]+.5;
}
setfillstyle(SOLID_FILL,color);
fillpoly(4,usedata);
}
/*画表盘*/
void DrawClock(struct time *cutime)
{
int ang;
float hourrate,minrate,secrate;
setbkcolor(BLUE);
cleardevice();
setcolor(WHITE);
/* 画刻度*/
for(ang=0;ang360;ang+=90)
{
DrawPoly(Mrk_1,ang,WHITE);
DrawPoly(Mrk_2,ang+30,WHITE);
DrawPoly(Mrk_2,ang+60,WHITE);
}
secrate=(float)cutime-ti_sec/60;
minrate=((float)cutime-ti_min+secrate)/60;
hourrate=(((float)cutime-ti_hour/12)+minrate)/12;
ang=hourrate*360;
DrawPoly(HourHand,ang,YELLOW);/*画时针*/
ang=minrate*360;
DrawPoly(MiHand,ang, GREEN);/*画分针*/
ang=secrate*360;
DrawPoly(SecHand,ang, RED);/*画秒针*/
}
main()
{
int gdriver=EGA,
gmode=EGAHI;
int curpage;
struct time curtime ,newtime ;
initgraph(gdriver,gmode,"c:\\tc");
setbkcolor(BLUE);
cleardevice();
gettime(curtime);
curpage=0;
DrawClock(curtime);
while(1)
{
if(kbhit())
break; /*按任意键退出*/
gettime(newtime); /*检测系统时间*/
if(newtime.ti_sec!=curtime.ti_sec)/*每1秒更新一次时间*/
{
if(curpage==0)
curpage=1;
else
curpage=0;
curtime=newtime;
/*设置绘图页*/
setactivepage(curpage);
/*在图页上画表盘*/
DrawClock(curtime);
/*设置绘图页为当前可见页*/
setvisualpage(curpage);
/*0分0秒高声报时*/
if(newtime.ti_min==0newtime.ti_sec==0)
HighBeep();
/* 59分55至秒时低声报时*/
else if(newtime.ti_min==59
newtime.ti_sec=59)
LowBeep();/*其他时间只发出喀嗒声*/
else
Click();
}
}
closegraph();
}