有没有大佬帮忙看看这段C语言代码有啥问题

有没有大佬帮忙看看这段C语言代码有啥问题

#include<graphics.h>
#include<time.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
#define PI 3.1415926
#define UP 72/上移↑键:添加数字时钟/
#define DOWN 80/下移↓键:去除数字时钟/
#define ESC 27/Esc键:退出系统/
// Clock.cpp : Defines the entry point for the console application.

#include “stdafx.h”

struct linetime
{
int X1,Y1,X2,Y2; //线段起点坐标和终点坐标
};
linetime line1[15]; //时针、分针、秒针及时间刻度线的起止点坐标
void ClockLine();
void DigitalClock(int x,int y,int r);
int keyhandle(int key,int flag);
double h,m,s; /全局变量:小时、分、秒/
double angle;
int maxx,maxy,r;

int main(int argc, char* argv[])
{
int driver,mode=0;
driver=DETECT; /自动检测显示设备/
initgraph(&driver,&mode,""); /初始化图形系统/
maxx=getmaxx(); //获取DOS控制台的宽度
maxy=getmaxy(); //获取DOS控制台的高度
if(maxx>maxy)
r=maxy/2;
else
r=maxx/2;
ClockLine(); //画时间刻度线
DigitalClock(maxx/2,maxy/2,r); //画时针、分针、秒针
closegraph(); /关闭图形系统/
return 0;
}

void ClockLine()
{
char buffer2[4];
int i;
setcolor(6); /设置当前画线颜色/
setlinestyle(0,0,3); //线宽为3
circle(maxx/2,maxy/2,r); //画模拟时钟外圆
for(i=3;i<15;i++) //计算并画出12条小时刻度线
{
setcolor(4);
setlinestyle(0,0,1);
angle=i30PI/180;
line1[i].X1 =int(r0.9cos(angle)+maxx/2);
line1[i].Y1 =int(r0.9sin(-angle)+maxy/2);
line1[i].X2 =int(rcos(angle)+maxx/2);
line1[i].Y2 =int(r
sin(-angle)+maxy/2);
line(line1[i].X1 ,line1[i].Y1 ,line1[i].X2 ,line1[i].Y2 );//画时间刻度线
sprintf(buffer2,"%d",int(15-i));
outtextxy(line1[i].X1 ,line1[i].Y1 ,buffer2);//输出刻度数字
}
}

void DigitalClock(int x,int y,int r)
{
time_t rawtime;
struct tmtimeinfo;
int k=0,flag=0;
char buffer1[10];
for(;😉
{
if(kbhit()) //检测键盘是否输入有误
{
k=getch(); //获取键值
flag=keyhandle(k,flag);//根据键值设定标识
}
time(&rawtime);
timeinfo=localtime(&rawtime);//获取当前系统时间
h=timeinfo->tm_hour ;
m=timeinfo->tm_min ;
s=timeinfo->tm_sec ;
if(flag==1)
{
setcolor(6);
setlinestyle(0,0,2);
sprintf(buffer1,"%d:%d:%d",int(h),int(m),int(s));
outtextxy(x-22,y
2-70,buffer1);//输出数字时间
}
setcolor(4);
setlinestyle(0,0,4);/设置当前时针画线宽度和类型/
angle=2PI/12(15-(h+m/60));
line1[0].X1=x;
line1[0].Y1=y;
line1[0].X2=int(r * 0.4 * cos(angle)+line1[0].X1);
line1[0].Y2=int(r * 0.4 * sin(-angle)+line1[0].Y1);
line(line1[0].X1,line1[0].Y1,line1[0].X2,line1[0].Y2);
setcolor(2);
setlinestyle(0,0,2);/设置当前分针画线宽度和类型/
angle=2 * PI/60 * (75-(m + s/60));
line1[1].X1 =x;
line1[1].Y1 =y;
line1[1].X2 =int(r * 0.6 * cos(angle)+line1[1].X1 );
line1[1].Y2 =int(r * 0.6 * sin(-angle)+line1[1].Y1 );
line(line1[1].X1 ,line1[1].Y1 ,line1[1].X2 ,line1[1].Y2 );
setcolor(1);
setlinestyle(0,0,1);/设置当前秒针画线宽度和类型/
angle=2 * PI/12 * (75-s)/5;
line1[2].X1 =x;
line1[2].Y1 =y;
line1[2].X2 =int(r * 0.8 * cos(angle)+line1[2].X1 );
line1[2].Y2 =int(r * 0.8 * sin(-angle)+line1[2].Y1 );
line(line1[2].X1 ,line1[2].Y1 ,line1[2].X2 ,line1[2].Y2 );
Sleep(1000); //定时1秒
setcolor(0);
setlinestyle(0,0,4); /设置当前画线宽度和类型,擦除上一次的时针/
line(line1[0].X1 ,line1[0].Y1 ,line1[0].X2 ,line1[0].Y2 );
setlinestyle(0,0,2); /设置当前画线宽度和类型,擦除上一次的分针/
line(line1[1].X1 ,line1[1].Y1 ,line1[1].X2 ,line1[1].Y2 );
setlinestyle(0,0,1); /设置当前画线宽度和类型,擦除上一次的秒针/
line(line1[2].X1 ,line1[2].Y1 ,line1[2].X2 ,line1[2].Y2 );
if (flag== 1)
{
setcolor(0);
setlinestyle(0,0,2);
outtextxy(x-22,y*2-70,buffer1);//擦除数字时钟
}
if(flag==2)
{
return;//退出
}
}
}
int keyhandle(int key,int flag) /键盘控制/
{
switch(key)
{
case UP:flag=1; //显示数字时钟
break;
case DOWN:flag=0; //去除数字时钟
break;
case ESC:flag=2; //退出系统
break;
}
return flag;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值