c语言-一个入门级C语言编程问题

问题描述

一个入门级C语言编程问题
已知地球的平均半径为6371.393千米,假设在地球的某一纬度上,有两个处于不同经度的点A、B,用C语言编程求出这两点之间的直线距离、这两点在该纬度剖面上切圆的劣弧长度,以及这两点之间的球面距离。
以下是我写的代码。
#include ""stdio.h""
#include ""math.h""
main()
{
double xyztsdlRr=6378.137pi=3.1415926;
scanf(""%lf%lf%lf""&x&y&z);
if((t=fabs(z-y))>180)
t=360-t;
t=2*pi*t/360;
x=fabs(x);
x=2*pi*x/360;
R=r*cos(x);
l=2*R*sin(t/2);
s=R*t;
d=r*t;
printf(""%f%f%fn""lsd);
system(""pause"");
return 0;
}
老师给的参考数据是

北纬0度,东经0度,东经90度——直线距离=9010.510271,纬度切圆劣弧长度=10008.160550球面距离=10008.160550
而我求出来的是,9020.04772710018.75400010018.754000
老师要求尽可能高的精确度
我是哪里出了问题

解决方案

。。。。。
本来我还想帮着答着,一看到什么劣弧长度,我就吓尿了~

解决方案二:
除法那里,如: .../360 .../2 改成 .../360.0 .../2.0 试一下吧

解决方案三:
scanf里面的小数点位或者是定义的double精度不够,,改一下试试

解决方案四:
printf(""%f%f%fn""lsd);
为什么不用高精度实数?

解决方案五:
printf(""%f%f%fn""lsd);
为什么不用高精度实数?

解决方案六:
printf(""%f%f%fn""lsd);
为什么不用高精度实数?

解决方案七:
不知道你问得是什么,是答案和老师给的不一样吗,如果是这个,你看下【已知地球的平均半径为6371.393千米】,你程序中的半径是r=6378.137,半径都不一样,结果能一样吗?

解决方案八:
不知道你问得是什么,是答案和老师给的不一样吗,如果是这个,你看下【已知地球的平均半径为6371.393千米】,你程序中的半径是r=6378.137,半径都不一样,结果能一样吗?

解决方案九:
为什么不用double型。如果精度还不够,可以自己设计一个高精度数据类型

解决方案十:
这就是简单的数学计算问题啊,只需要找到公式如何用C语言表示就行了。http://wenku.baidu.com/link?url=9zSIC6ovvQqDQ6orhloCPav2vOQp-4NZMjTPsPdAWMzFuHjxyY3HStrnksx4CWk-ykC7X5ysoaRvowcLHBPKeUwORKGz4-5qbdex1lT58Xi这里有些简单的数学公式,是否能够满足你的要求。

时间: 2016-08-05
Tags: c语言

c语言-一个入门级C语言编程问题的相关文章

c语言编程-一个实际问题,关于编程的,求思路,谢谢!!

问题描述 一个实际问题,关于编程的,求思路,谢谢!! 问题如下:1.有普通药.抗药.和化药,三种类型的药品:2.有n条处方,每条处方有普药.抗药.化药中的一种类型:3.有m个工作台,每个工作台具备相应药品的属性:4.按照普药.抗药.和化药的顺序定义他们的优先级,化药最高,抗药次之.普药最低,也就是说优先级高的工作台可以配置优先级低的药品:条件:把n条处方合理分配到m个工作台,要求任务量均衡 解决方案 从低优先级的工作台开始分配,尽量平均到每个工作台. 解决方案二: 不明内幕...........

C语言控制台窗口图形界面编程之七 键盘事件

输入事件中的键盘事件通常有字符事件和按键事件,这些事件的附带信息构成了键盘输入的信息,而想要读取这些信息,是要通过API函数ReadConsoleInput来获取的,函数原型如下: BOOL ReadConsoleInput( //读取输入信息 HANDLE hConsoleInput, //句柄 PINPUT_RECORD lpBuffer, //输入事件结构体的指针 DWORD nLength, //要读取的记录数 LPDWORD lpNumberOfEventsRead //用来接受成功读

C语言控制台窗口图形界面编程之一

本系列文章改编自<C语言控制台窗口界面编程(修正版)>.本系列文章会抛弃一些原文中难懂难理解且不常用的部分,并修改了部分样例程序.只为了更加清晰地学习C语言的控制台窗口界面编程.而想要更加深入的了解本系列文章,请阅读<C语言控制台窗口界面编程(修正版)>. <C语言控制台窗口界面编程(修正版)>下载地址:http://download.csdn.net/detail/jzqt_t/7471013 在Windows操作系统下用C语言编写控制台的窗口界面首先要获取当前标准输

开发-用面向对象的语言进行面向过程的编程

问题描述 用面向对象的语言进行面向过程的编程 教研室的项目多为开发MIS,开发过程中采用 结构化的开发方法(结构化的分析+结构化的设计),但是编程却采用.Net平台,使用C#语言,C#语言是一种纯的面向对象的语言呀,在定义类的时候,我们程序员都是自己根据自己的感觉去定义.这样会不会有不妥的地方呀? 解决方案 面向对象的语言天生也是面向过程的语言. 如果你用C#,完全可以定义一个类,然后将所有方法都定义在里面,这样就特异化成了面向过程了. 解决方案二: 所谓特异化,好比等边三角形是正多边形的特例.

java-Java语言程序设计第4章编程练习题1求问

问题描述 Java语言程序设计第4章编程练习题1求问 import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner input = new Scanner(System.in); int data = 0; int positive = 0; int negative = 0; int sum = 0; int count = 0; System.out.pri

分析C语言一个简单程序_C 语言

首先给大家一个简单的例子,让读者有个整体的认识,代码如下: #include <stdio.h> int main() { puts(""); return 0; } 函数的概念 先来看第4行代码,这行代码会在显示器上输出"".前面我们已经讲过,puts 后面要带( ),字符串也要放在( )中. 在C语言中,有的语句使用时不能带括号,有的语句必须带括号.带括号的称为函数(Function) . C语言提供了很多功能,例如输入输出.获得日期时间.文件操作等

C语言 typedef:给类型起一个别名_C 语言

C语言允许为一个数据类型起一个新的别名,就像给人起"绰号"一样. 起别名的目的不是为了提高程序运行效率,而是为了编码方便.例如有一个结构体的名字是 stu,要想定义一个结构体变量就得这样写: struct stu stu1; struct 看起来就是多余的,但不写又会报错.如果为 struct stu 起了一个别名 STU,书写起来就简单了: STU stu1; 这种写法更加简练,意义也非常明确,不管是在标准头文件中还是以后的编程实践中,都会大量使用这种别名. 使用关键字 typede

零基础易语言入门教程(二)之编程思路_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

Go语言面组合式向对象编程基础总结

Go语言的面向对象编程简单而干净,通过非侵入式接口模型,否定了C/C++ Java C#等传统面向对象编程语言的复杂度的必要性,我们发现在Go中即使简单的组合也能达到传统面向对象语言的效果,而且耦合度非常低,按照Go的作者之一也就是C语言的作者之一说的一句话:Go是更好的C语言. 1.Go中任意类型Any即  interface{}类型,也就是空接口,可以赋值为任意类型 2.可以为其他类型 内置类型 不包括指针类型添加相应的方法 但是注意的一点是一定要用别名..进行包装 记住想要 为类型 添加新