C语言求1/100+2/99+…+1的值

我写的代码是这样的:

img

运行结果是2,总感觉代码怪怪的又不知道哪出问题

代码逻辑没啥问题,问题在数据类型上,你这个i和j是int型的,算出来肯定也是int型的。
你给转一个或者两个就都行了
把你的
sum+=i/j
改成:
sum+=double(i)/j
或者sum+=double(i)/double(j)
就行了
建议用double,结果更精准,你这个题明显算出来小数位是很多的。。。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7527164
  • 这篇博客你也可以参考下:数据结构简单入门/复习(七)-图的代码示例(C语言)
  • 除此之外, 这篇博客: C语言中整型/实型/字符型数据在内存中的存储方式、易错点以及进制转换1中的 总结 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 整型数据分为short \int\long,为了充分利用变量的值的范围,引出unsigned,所以实际上是6种整型变量。在C语言程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。而在将一个整型常量复制给变量时要根据不同整型变量的范围,若范围太大会造成空间浪费,太小则会有数据的“溢出”。整型数据的存储是以二进制的补码形式存储的。

    浮点型变量是由有限的存储单元组成的,因此提供的有效数字总是有限的。在有效位以外的数字将被舍去。浮点型数据在内存中是按照指数形式存储的。

    字符数据在内存中存储的形式是:将一个字符常量放到字符变量里,并不是存字符本身而是字符对应的ASCII码。它们存储的形式类似,因此整型数据与字符型数据之间可以互用