问题引入
在测量数据处理时,有很多角度数据需要计算处理,如控制测量测定的多个角度数据,在此之前有excel表格计算,但由于表格输入数据较复杂,此外网上很难找到度分秒角度的计算器。对此,笔者用C语言编写出关于测量数据处理时角度计算的相关程序。
代码思路
- 选择要计算加法还是减法;
- 获取两个数,将其转换为以秒为单位
- 相减,在用angle函数将其转换为度分秒角度
具体代码
#include <stdio.h>
#include <stdlib.h>
int sum(int i,int j,int k);
void angle(int k);
int main(){
printf("***********************************************欢迎使用角度加减法计算器!***********************************************\n\n\n");
int options;
printf("请选择计算角度的是加法还是减法:\n(1).加法\n(2).减法\n");
scanf("%d",&options);
int degrees_1,minutes_1,seconds_1;
int degrees_2,minutes_2,seconds_2;
int rat;
switch(options){
case 1:
printf("请输入第一个加数(依次输入度、分、秒,用空格隔开,最后回车)");
scanf("%d %d %d",°rees_1,&minutes_1,&seconds_1);
printf("请输入第二个加数(依次输入度、分、秒,用空格隔开,最后回车)");
scanf("%d %d %d",°rees_2,&minutes_2,&seconds_2);
rat = sum(degrees_1,minutes_1,seconds_1) + sum(degrees_2,minutes_2,seconds_2);
printf("%d°%d′%d″+ %d°%d′%d″= ",degrees_1,minutes_1,seconds_1,degrees_2,minutes_2,seconds_2);
angle(rat);
break;
case 2:
printf("请输入减数(依次输入度、分、秒,用空格隔开,最后回车)");
scanf("%d %d %d",°rees_1,&minutes_1,&seconds_1);
printf("请输入被减数(依次输入度、分、秒,用空格隔开,最后回车)");
scanf("%d %d %d",°rees_2,&minutes_2,&seconds_2);
rat = sum(degrees_1,minutes_1,seconds_1) - sum(degrees_2,minutes_2,seconds_2);
printf("%d°%d′%d″- %d°%d′%d″= ",degrees_1,minutes_1,seconds_1,degrees_2,minutes_2,seconds_2);
angle(rat);
break;
default:
printf("输入错误\n程序退出");
break;
}
return 0;
}
int sum(int i,int j,int k){
return k + j*60 + i*60*60;
}
//转换为角度的函数
void angle(int k){
printf("%d°%d′%d″",k/3600,abs(k%3600/60),abs(k%60));
}
运行结果
两数相加
两数相减