时钟夹角c语言
1. c语言计算时钟夹角问题
#include
void
main()
{
int
a,b;
float
c,d,e;//上面不用说如晌了吧,既然有小数点,就一定要用浮点数
scanf("%d%d",&a,&b);
c=(a%12+(float)b/60)*30;//a+b/60是时针实际走过的小时数,乘上每小时占得30°,当12点多的时候结果可能碧旁大于360°,%代表取余数
d=(float)b/60*360.0;//分针走的时机小时数b/60,乘上每小时占得360°,算式里不加float的话除法会当整型去余数渣慧锋
if(c
e=d-c;
else//其他的时候c-d
e=c-d;
printf("At
%d:%d
the
angle
is
%.1f
degrees.",a,b,e);//这里%.1f里面的.1代表输出1位小数
}
2. C语言时钟角度(错哪了)
你这里面判断的情况没有考虑清楚
比如说11:返侍05分的时候,你由于一直是用分针的角度去减去时针的角度,所以此时得到了一个负值。然而在负值的情况下还区分为大于180和小于衫散180。这里你没有考虑到。
改完后程序如下:
#include"stdio.h"
int main(){
int a,b;
float c;
scanf("%d %d",&a,&b);
c=(b*6)-(30*a+b/2);
if (c<漏塌吵0) {
c=-c;
}
if (c>180)
{
c=360-c;
printf("At %d:%02d the angle is %.1f degrees.\n",a,b,c);
}
else
printf("At %d:%02d the angle is %.1f degrees.\n",a,b,c);
return 0;
}
3. c语言怎么样编写一个时钟程序
c语言时钟程序代码如下:
#include<windows.h>
#include<math.h>
#define ID_TIMER 1//计时器ID
#define TWOPI (2*3.14159)
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("Clock");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=szAppName;
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows
T"),szAppName,MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(szAppName,TEXT("Analog Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void Setsotropic(HDC hdc,int cxClient,int cyClient)
{
SetMapMode(hdc,MM_ISOTROPIC);
SetWindowExtEx(hdc,1000,1000,NULL);
SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);
SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
}
void RotatePoint(POINT pt[],int iNum,int iAngle)
{
int i;
POINT ptTemp;
for(i=0;i<iNum;i++)
{
ptTemp.x=(int)(pt[i].x*cos(TWOPI*iAngle/360)+pt[i].y*sin(TWOPI*iAngle/360));
ptTemp.y=(int)(pt[i].y*cos(TWOPI*iAngle/360)+pt[i].x*sin(TWOPI*iAngle/360));
pt[i]=ptTemp;
}
}
void DrawClock(HDC hdc)
{
int iAngle;
POINT pt[3];
for(iAngle=0;iAngle<360;iAngle+=6)
{
pt[0].x=0;
pt[0].y=900;
RotatePoint(pt,1,iAngle);
pt[2].x=pt[2].y=iAngle%5?33:100;
pt[0].x-=pt[2].x/2;
pt[0].y-=pt[2].y/2;
pt[1].x=pt[0].x+pt[2].x;
pt[1].y=pt[0].y+pt[2].y;
SelectObject(hdc,GetStockObject(BLACK_BRUSH));
Ellipse(hdc,pt[0].x,pt[0].y,pt[1].x,pt[1].y );
}
}
void DrawHands(HDC hdc,SYSTEMTIME *pst,BOOL fChange)
{
static POINT pt[3][5]={0,-150,100,0,0,600,-100,0,0,-150, 0,-200,50,0,0,800,-50,0,0,-200, 0,0,0,0,0,0,0,0,0,800 };
int i,iAngle[3];
POINT ptTemp[3][5];
iAngle[0]=(pst->wHour*30)%360+pst->wMinute/2;
iAngle[1]=pst->wMinute*6;
iAngle[2]=pst->wSecond*6;
memcpy(ptTemp,pt,sizeof(pt));
for(i=fChange?0:2;i<3;i++)
{
RotatePoint(ptTemp[i],5,iAngle[i]);
Polyline(hdc,ptTemp[i],5);
}
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static int cxClient,cyClient;
static SYSTEMTIME stPrevious;
BOOL fChange;
HDC hdc;
PAINTSTRUCT ps;
SYSTEMTIME st;
switch(message)
{
case WM_CREATE:
SetTimer(hwnd,ID_TIMER,1000,NULL);
GetLocalTime(&st);
stPrevious=st;
return 0;
case WM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
return 0;
case WM_TIMER:
GetLocalTime(&st);
fChange=st.wHour!=stPrevious.wHour||st.wMinute!=stPrevious.wMinute;
hdc=GetDC(hwnd);
Setsotropic(hdc,cxClient,cyClient);
SelectObject(hdc,GetStockObject(WHITE_PEN));
DrawHands(hdc,&stPrevious,fChange);
SelectObject(hdc,GetStockObject(BLACK_PEN));
DrawHands(hdc,&st,TRUE);
stPrevious=st;
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Setsotropic(hdc,cxClient,cyClient);
DrawClock(hdc);
DrawHands(hdc,&stPrevious,TRUE);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
KillTimer(hwnd,ID_TIMER);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
4. 知道几点,怎么求时钟时针,分针,秒针两两间的角度然后用c语言怎么求其cos值谢谢
这个纯粹祥世数学问题,知道角度用系统的math里面的函数就可神宴宽以求出cos的值
cost=cos2π-t
数学公游亮式,你不明白我就蛋疼了,
一圈12个小时360°=>
一个小时30°=>
一分钟时针走过0.5°
一个小时60分钟=>
一分钟6°
(当然这边没涉及到秒)
以0:0为标准位置,
那么角度就是30*小时+0.5*分钟-6*分钟
这个时间是12小时的.你可以后台判断如果是24小时的你那自己减12
5. 钟表问题之夹角公式 怎么做
钟表作为一种常见的生活工具,滚禅给人们的生活带来了很大的便利。在公务员考试中有时候也会以钟表为素材来进行考题的编写,银蔽虽然其出现的频率并不算高,但我们也要引起足够的重视,接下来我们就主要来研究钟表问题中时针和分针的夹角问题。
要计算在某一时刻时针和分针的夹角度数,首先我们要了解以下内容:不论是时针还是分针,转表盘一圈都是360°。时针转动一圈是12小时,所以时针的转动速度为:false;分针转动一圈是1小时,所以分针的转动速度为:false。为了方便计算,我们一般以12:00为参考点来计算各个时刻时针和分针的夹角(12:00时时针和分针的角度都可以看作0°)。
例:若要求3:20时时针和分针的夹角,那么从12:00到3:20,时针走了3小时20分钟,所以时针转动的度数为30°×3+0.5°×20=100°;分针走了三圈零20分钟,所以分针转动的度数(转整圈时分针回到12:00处,故只需计算20分钟转动的度数)为:6°×20=120°。所以3:20时,时针和分针的夹角为120°-100°=20°。
综上所述,我们可得出false(false指小时,false指分钟,其中false为12小时制)时时针与分针的夹角公式false。需要注意的是,若计算出来的结果选项中没有的话,再用false即可。
接下来,我们用两道真题来练习一下:
(2021年河北)张爷爷早晨5点多外出晨练,出门时钟表上的时针和分针的夹角是110度,不到6点进门时,钟表上的时针和分针的夹角还是110度,则张爷爷外出时间是多少分钟?
A.30
B.35
C.40
D.45
【答案】C
【解析】第一步,本题考查钟表问题,用夹角公式解题。
第二步,由题可知,张爷爷出门和回到家时都是5点多,因此只需要根据钟表问题夹角公式计算出5点多时,时针和分针的夹角为110°的两个时刻做差即可。
第三步,根据钟表问题夹大搏尘角公式 ,代入数据可得 ,则 ,计算可得 或 ,做差可得 .
因此,选择C选项。
(2008年云南)在时钟的的表面上,12时30分的时针与分针的夹角是多少度?
A.165°
155°
C.150°
D.145°
【答案】A
【解析】第一步,本题考查钟表问题,用夹角公式解题。
第二步,根据钟表问题夹角公式 ,代入数据可得 ,由于选项中没有该选项,故可用 。
因此,选择A选项。
以上两道题目,从不同的角度对钟表问题的夹角公式进行了考查。相信通过以上内容的学习,大家对钟表问题中求时针和分针的夹角类问题的题目已经跃跃欲试了,接下来就多多练习进行巩固哦!
6. 用C语言写一个程序计算时钟的夹角
#include<stdio.h>
int main()
{int a,b;
float c,d,e,f;
scanf("%d %d",&a,&b);
c=30*(a+b/60.0);
d=6*b;
if(-180<咐梁灶衡扮=c-d&&c-d<=180)
if ((c-d)<=180&&(c-d)>=0)
e=(c-d);
else e=d-c;
else
if(c-d>0)
e=360-(c-d);
else e=360+(c-d);
if(0<=a&&a<渣前=12&&0<=b&&b<=59)
printf("At %d:%02d the angle is %.1f degrees.\n",a,b,e);
else
printf("please putin numbles again");
}
7. c语言时钟代码
#include<graphics.h> /* 引入graphic.h */
#include<math.h> /* 引入math.h */
#include<dos.h> /* 引入dos.h */
#define pi 3.1415926 /*定义pi=3.14159*/
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) /*定义……*/
void init() /*初始化程序*/
{int i,l,x1,x2,y1,y2; /*定义……*/
setbkcolor(1); /*设置颜色*/
circle(300,240,200); /*作园*/
circle(300,240,205);
circle(300,240,5);
for(i=0;i<60;i++) /*循环(算时间)*/
{if(i%5==0) l=15;
else l=5;
x1=200*cos(i*6*pi/180)+300;
y1=200*sin(i*6*pi/180)+240;
x2=(200-l)*cos(i*6*pi/180)+300;
y2=(200-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x,y;
int gd=VGA,gm=2;
unsigned char h,m,s; /*定义*/
struct time t[1];
initgraph(&gd,&gm,"d:\\tc");
init();
setwritemode(1);
gettime(t);
h=t[0].ti_hour;
m=t[0].ti_min;
s=t[0].ti_sec; /*定义时分秒*/
setcolor(7); /*设置颜色*/
d(150,h,30);
setcolor(14);
d(170,m,6);
setcolor(4);
d(190,s,6);
while(!kbhit()) /*获取键盘相应*/
{while(t[0].ti_sec==s)
gettime(t); /*C语言中得到时间的函数*/
sound(400); /*计算时间……*/
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(190,s,6);
s=t[0].ti_sec;
d(190,s,6);
if (t[0].ti_min!=m)
{
setcolor(14);
d(170,m,6);
m=t[0].ti_min;
d(170,m,6);
}
if (t[0].ti_hour!=h)
{ setcolor(7);
d(150,h,30);
h=t[0].ti_hour;
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
}
getch(); /*设置空格后退出*/
closegraph();
}
具体的。。就是套用用几个函数算时间。。
不要对这种很长的东西害怕,其实大部分都是在画这个钟~
加油哦~
8. c语言简单数学时钟(结构体,指针),求大佬帮助
至今为止,在中国历史上有留下记载的四代计时器分别为:日晷、沙漏、机械钟、石英钟。在中国市场上石英钟最热销。
时钟一直以来都是国人钟爱的商品之一。新中国成立以来,国家投入大量资金发展钟表工业,使这一产业得以快速发展,此后,中国的改革开放以及经济全球化发展给中国钟表业带来了繁荣。经过几十年的发展,中国钟表业经历了进料组装-外观件制造-产品开发-创立品牌的发展过程,目前已形成配套齐全的钟表制造工业,除高端机芯外的所有零配件均可加工生产。
现状
从区域格局来看,全国已形成以广州、深圳为龙头的珠三角地区、福建、浙江、江苏、山东、天津等6大钟表主产区;从产量来看,我国已成为世界钟表生产大国,钟表产量稳居世界第一。监测数据显示,2011年,我国钟和表的产量分别达到1.59亿只和1.3亿只。
我国钟表行业发展虽然取得长足的进步,但国内钟表企业及其品牌在国际市场上的信誉度和影响力还微不足道,产量占比虽然已经达到80%以上,但是产值占比不到30%,依然没有话语权和定价权。统计数据显示,2010年从金融危机阴影中走出来的中国钟表行业实现了全面的恢复和增长,全年规模以上企业工业总产值同比增长17.12%,销售收入同比增长23.00%,均达到2008年以来的最高增速,同时利润总额也大幅增长了55.63%。此外,我国钟表出口形势也得到好转,全年共实现出口额30.49亿美元,同比增长24.27%。
9. 时钟程序(C语言)怎么写
具体代码如下:
#include<graphics.h>
#include<math.h>
#include<dos.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;
}