编程-初学者关于C++的一个疑问

问题描述

初学者关于C++的一个疑问

今天在学校做上机课,编写了一个输入圆半径然后计算圆的周长面积以及对应球体体积的小程序。本来只是小试牛刀,没想到出了一个百思不得其解的问题,代码如下:

#include <stdio.h>
#include <iomanip>
#include <iostream>

using namespace std;

int main()
{
    const double pi = 3.14;
    double r;
    double c;
    double s;
    double v;
    cout << "Please input a number to be the radius: ";
    cin >> r;
    c = 2 * pi * r;
    s = pi * r * r;
    v = 4 / 3 * pi * r * r * r; //注意此行
    cout << c << endl;
    cout << s << endl;
    cout << v << endl;
    system("pause");
    return 0;
}

此时输出的v值似乎自动忽略了前面的 4/3……如果将4改成4.0或者3改成3.0则输出正常!百思不得其解,求大神解答~~

解决方案

因为没有给4和3数据类型,默认的4,3都是整形,所以相除的话,结果是1,1*任何数都是它本身,所以没用
加上4.0,或者3.0以后表示把它强制转换为浮点型,所以结果是小数

解决方案二:

c++中规定整数与整数相除,结果是一个整数;浮点数与整数,整数与浮点数,浮点数与浮点数相除,结果都是浮点数。4与3都是整数,所以4/3 = 1;

解决方案三:

4/3会被认为是一个整除操作,结果就是1了。
4.0/3会被认为是一个除法操作,结果会出来小数。
所以,千万不要随便让两个整数类型相除,除非你确定是需要整除。

时间: 2024-11-03 21:13:59

编程-初学者关于C++的一个疑问的相关文章

《C语言编程初学者指南》一1.8 调试C程序

1.8 调试C程序 如果你的程序编译了,然后退出了或在执行中出现异常,程序中一定存在一个错误(一个bug).我们将要花费很多的时间来找到并删除这些bug.本小节介绍了帮助你开始这一工作的一些技巧.然而,请记住,调试是计算机科学,同样也是一门艺术,当然,你的编程实践越多,调试也就变得越容易!往往一个程序编译和执行得很好,但总是产生你意料之外的或者不想要的结果.例如,如下的程序的编译和执行没有错误,但是输出却是无法读懂的,或者说不是我所期望的,其输出如图1.11所示. include <stdio.

《C语言编程初学者指南》一1.1 安装和配置Cygwin环境

1.1 安装和配置Cygwin环境 要学习C编程,所需的所有东西只不过是一台计算机.一款文本编辑器.C库和一个C编译器.在整个本书中,我们使用一款简单的文本编辑器来编写C程序.和很多高级的编程语言(如Visual Basic或C#)不同,C语言并不需要一个高级的图形化用户界面(graphical user interface,GUI).实际上,一个复杂的.功能丰富的界面,可能会让想要学习编程的初学者分心.他们很容易去关注漂亮界面的那些细枝末节,而不是关注诸如变量和循环这样的基本的编程概念,而这些

《C语言编程初学者指南》一第1章 C编程入门

第1章 C编程入门 C语言编程初学者指南 欢迎阅读本书.C 编程语言是培养你的编程职业技能和爱好的一门优秀的基础语言.不管你是计算机专业的学生.自学成才的程序员,或者是一名资深的软件工程师,学习C语言都能够给你丰富的概念知识并培养实践技能,从而很好地帮助你理解其他的计算机相关主题(包括操作系统概念.内存管理和其他高级的编程语言). 在整个本书中,我将引导你学习一系列的示例,这些示例设计来讲解C编程的基础知识.我假设读者没有C编程的经验,也不了解计算机科学的基本概念.阅读本书不需要任何的经验(包括

《C语言编程初学者指南》一2.7 使用编程惯例和风格

2.7 使用编程惯例和风格 你的程序就是你本人的一种反射,并且,源代码应该显示出一种流畅且一致的风格,从而引导阅读者查看整个算法和程序流程.就像是提供交通功能的桥梁一样,风格可以让结构工程师和游客都感受到其美学价值. 你应该坚持一种让自己和其他人能够很容易地阅读代码的风格和惯例.一旦你选择了一种编程风格并且习惯了它,重要的是要保持一致性.换句话说,要坚持它,在同一个程序之中,不要为变量交叉使用命名惯例或者混合使用缩进风格. 在学习如何编程的时候,你至少应该专门考虑两个领域,以开发出一种一致的编程

《C语言编程初学者指南》一导读

前言 C语言编程初学者指南 C语言是一种强大的基于过程的编程语言,它于1972年由Dennis Ritchie在贝尔实验室发明.C语言最初是开发来用于UNIX平台的,但却已经扩展到很多其他的系统和应用中.C语言还影响了很多其他的编程语言,例如C++和Java. 编程初学者,特别是那些进入计算机科学和工程专业学习的人,需要构建有关操作系统.硬件和应用程序开发概念的牢固基础知识.很多的学院教授学生学习如何用C编程,从而使他们能够学习高级概念以及在C的基础上建立起来的其他语言. 学习C语言的很多学生也

利用excel vba编程在窗体上画一个六边形

  利用excel vba编程在窗体上画一个六边形.这篇教程是向朋友们分享利用excel vba编程在窗体上画一个六边形方法,教程很不错,适合新手来学习,推荐大家来看看吧. 步骤1 打开excel表格,进入vbe窗口. 插入模块. 在模块1内编程,声明4个函数.1个结构,并编写一句显示窗体的程序--"画". 插入窗体. 这是插入的窗体,调整大小如图. 双击窗体进入编程界面,编写窗体单击事件触发的程序,调用模块1里声明的4个函数.1个结构编写程序. 关闭vbe窗口,在excel表格界面启

关于web服务器的一个疑问,谢谢大家

问题描述 关于web服务器的一个疑问,谢谢大家 看到一段话,"虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability)......",我有个疑问,我们常用的tomcat服务器不就支持事务处理和数据库连接池吗?还是我的理解有问题呢??谢谢大家 解决方案 web服务器越精简越好,越精简才能越通用,同时保持高效.tomcat没有你说的事务处理.数据库连接池等,那

c语言-从键盘输入每小时登录网络的用户数到一个有24个整型元素的数组中。编程以如下格式显示一个报告

问题描述 从键盘输入每小时登录网络的用户数到一个有24个整型元素的数组中.编程以如下格式显示一个报告 从键盘输入每小时登录网络的用户数到一个有24个整型元素的数组中.编程以如下格式显示一个报告: ? 时间? 登录人数? 所占比例 ?0:00 – 1:00 ?1 0.3 ?1:00 – 2:00 ?2 0.7 ?- ?10:00 - 11:00 ?27 9.0 ?11:00 - 12:00 ?28 9.3 - ?23:00 - 0:00 ?8 2.7 ?最大登录人数28发生在11:00到12:00

algorithm-关于leetcode上的Implement Strstr()的一个疑问

问题描述 关于leetcode上的Implement Strstr()的一个疑问 问题 : https://oj.leetcode.com/problems/implement-strstr/ 我的解答: int strStr(char *haystack, char *needle) { if (!*needle) return 0; if (!*haystack) return -1; char* ph, *pn; ph = haystack; for (int i = 0;*ph; ++i