A. c語言編程:輸入一個弧度,轉化成度分秒輸出,秒保留一位小數,
#include <stdio.h>
#define PI 3.14
int main (void)
{
int num,gre,min;
float gre1,min1,sec;
printf("輸入一個弧度 ");
scanf("%d",&num);
gre1=num/(float)PI*180;
gre=(int)gre1; //度數取整
min1=(gre1-gre)*60;
min=(int)min1; //分數取整
sec=(min1-min)*60;
printf("%d 弧度等於%d度 %d分 %.1f秒 ",num,gre,min,sec);
return 0;
}
B. c語言 時間函數
c語言時間函數:
1、獲得日歷時間函數:
可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);
如果已經聲明了參數timer,可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:
2、獲得日期和時間函數:
這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?
其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼用localtime()函數在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。
C. GPS模塊獲取的數據轉換成經緯度(度分秒的格式),C語言
3559.10468,N,12009.46619,E
N/S(北緯或南緯):北緯35 度59.10468 分;
E/W(東經或西經):東經120 度9.46619 分;
緯度(格式ddmm.mmmm:即dd 度,mm.mmmm 分);
經度(格式dddmm.mmmm:即ddd 度,mm.mmmm 分);
list和字元串操作就不寫了吧。
D. 如何用C語言編寫一個顯示時間的函數,要求時間顯示精度到毫秒級別。
#include <cstdio>
#include <ctime>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void printTime() {
struct tm t; //tm結構指針
time_t now; //聲明time_t類型變數
time(&now); //獲取系統日期和時間
localtime_s(&t, &now); //獲取當地日期和時間
//格式化輸出本地時間
printf("年-月-日-時-分-秒:%d-%d-%d %d:%d:%d ", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
}
int main(int argc, char** argv) {
printTime();
}
E. c語言度分秒計算
#include "stdio.h"
void deg(double *r)
{double a,b,c;
a=(int)*r;
b=(int)(*r*100)-100*a;//改成這樣就好了,那是系統的問題。//
c=((*r-a)*100-b)*100;
printf("a=%lf,b=%lf\n,c=%lf\n",a,b,c); /*因為數據輸出有問題所以這里加了一句*/
}
main()
{double a,*p;
scanf("%lf",&a);
p=&a;
deg(p);
printf("%lf\n",*p);
}
F. c語言如何計時
C語言中提供了許多庫函數來實現計時功能
下面介紹一些常用的計時函數
1. time()
頭文件:time.h
函數原型:time_t time(time_t * timer)
功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數
用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。
用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。
說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。
2. clock()
頭文件:time.h
函數原型:clock_t clock(void);
功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。
說明:可以精確到毫秒,適合一般場合的使用。
3. timeGetTime()
頭文件:Mmsystem.h引用庫: Winmm.lib
函數原型:DWORD timeGetTime(VOID);
功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。
說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。
4. GetTickCount()
頭文件:windows.h
函數原型:DWORD WINAPI GetTickCount(void);
功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。
說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
頭文件:windows.h
函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。
補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:
在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。
說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。
6. gettimeofday()
Linux C函數。
頭文件:sys/time.h
函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。
timeval的定義為:
structtimeval{
longtv_sec;//秒數
longtv_usec;//微秒數
}
可見該函數可用於在linux中獲得微秒精度的時間。
說明:使用這種方式計時,精度可達微秒。經驗證,在arm+linux的環境下此函數仍可使用。
G. C語言中有沒有用於計時的函數怎麼用
有,CLOCK函數。
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:clock_t clock(void) ; #ifndef _CLOCK_T_DEFINED typedef long clock_t;
#define _CLOCK_T_DEFINED #endif。
可以看到每過千分之一秒(1毫秒),調用clock函數返回的值就加1。
H. C語言時間函數,求解析意思
#include <stdio.h>
#include <time.h>
int main()
{
time_t timep; //時間變數,從1970年1月1日0時起的秒數
struct tm * p; //時間結構,含年月日時分秒星期幾,一年中第幾天,夏時制等成員。年從1900起算,月從0起算,...
time(&timep); // 獲取當前時間,從1970年1月1日0時起的秒數
p = gmtime(&timep); // 獲取UTC時間 結構成員數值們
printf("%d %d %d\n",1900+p->tm_year, 1+p->tm_mon, p->tm_mday); //輸出UTC時間的年月日
p = localtime(&timep); // 獲取本地 時間 結構成員數值們
printf("%d %d %d\n",1900+p->tm_year, 1+p->tm_mon, p->tm_mday); //輸出本地時間年月日
return 0;
}
I. C語言轉化度分秒;;如13°23′34″,是13.3545°
double Fun(int iDu, int iFen, int iMiao)
{
return (double)iDu + iFen / 60.0 + iMiao / 3600.0;
}
J. 怎麼用C語言編寫角度相加減啊,就是度分秒相加減,度和秒過60進1,給個思路或者樣板。。謝謝。
//給你個能運行的
#include<stdio.h>
#include<stdlib.h>
struct DMS
{
int d;
int m;
int s;
};
void todms(DMS* dms)
{
if(dms->s>=60)
{
dms->m=dms->m+dms->s/60;
dms->s=dms->s%60;
}
if(dms->m>=60)
{
dms->d=dms->d+dms->m/60;
dms->m=dms->m%60;
}
}
int main()
{
DMS a={0,0,0},b={0,0,0},c={0,0,0};
printf("請輸入角度a:\n(按度分秒輸入)");
scanf("%d%d%d",&a.d,&a.m,&a.s);
todms(&a);
printf("請輸入角度b:\n(按度分秒輸入)");
scanf("%d%d%d",&b.d,&b.m,&b.s);
todms(&b);
c.d=a.d+b.d;
c.m=a.m+b.m;
c.s=a.s+b.s;
todms(&c);
printf("a的度分秒值為:%d度%d分%d秒\n",a.d,a.m,a.s);
printf("b的度分秒值為:%d度%d分%d秒\n",b.d,b.m,b.s);
printf("a+b度分秒值為:%d度%d分%d秒\n",c.d,c.m,c.s);
return 0;
}