c语言-C语言的循环问题,求解

问题描述

C语言的循环问题,求解
#include
int main()
{
int sign=-1;
double s=0PI;
int i;
for (i=1;1.0/i>=1e-7;i=i+2)
{
sign=-sign;
s=s+1.0/i*sign;
}
PI=s*4;
printf(""i=%dn""i-2);
printf(""PI=%10.8fnn""PI);
return 0;
}
循环结束条件为什么是这个:1.0/i>=1e-7(这个条件是为了约束后面的小数么?)

解决方案

你先搞清楚人家在干吗,应该是计算诸如1-1/3+1/5-1/7+…+1/(2*n+1)的和,
1.0/i>=1e-7 是限制不要超出数值范围,整形,浮点,都有自己的取值范围,超出就报错了

时间: 2024-10-01 16:36:39

c语言-C语言的循环问题,求解的相关文章

C语言初级讲座之循环结构

循环结构是程序中一种很重要的结构.其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止.给定的条件称为循环条件,反复执行的程序段称为循环体.C语言提供了多种循环语句,可以组成各种不同形式的循环结构. while语句 while语句的一般形式为:while(表达式)语句: 其中表达式是循环条件,语句为循环体. while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句.其执行过程可用图3-4表示.统计从键盘输入一行字符的个数. #include <stdio.h> v

define-c语言一个小题目,菜鸟求解。

问题描述 c语言一个小题目,菜鸟求解. #include #define Hello(x) x/(x-1) void main() { int a=1,b=2; printf("%d n",Hello(a-b)); } 程序的输出是2,但是-1/(-2)的结果不是应该为0么?所以我不知道为什么结果为2,求解答. 解决方案 printf("%d n",Hello(a-b));// a-b/(a-b-1) = 1-2/(1-2-1) = 1 + 1 = 2 解决方案二:

c语言-求助一个java语言的一个for循环语句

问题描述 求助一个java语言的一个for循环语句 for(int i=2,j=1; j<10; i=(i==9)?(((++j)/j)+1):(i+1)){ System.out.printf("%d*%d=%2d%c",i,j,i*j, ((i==9)?'n':' ')); } 输出结果是99乘法表. 这个for循环里的++j为什么不能换成j+1啊? 谢谢各位了. 解决方案 ++j是改变变量值的 j+1是不改变变量值的 解决方案二: ++j 等效于j=j+1 你用j+1 原j

C语言如何用for循环构建2*2矩阵

问题描述 C语言如何用for循环构建2*2矩阵 2*2矩阵: 1 2 3 4 很简单的矩阵 不过不用scanf输入 直接用for循环输出 我想的方法是定义一个变量x=1,然后在for循环里面,每一次x++存入数组 代码: #include<stdio.h> int main() { int a[2][2]; int i,j,x=1; for(i=0;i<2;i++) for(j=0;j<2;j++) { a[i][j]=x; x++; } printf("%d "

gotoxy函数出问题-急求!!C语言gotoxy函数实现时效果不理想求解

问题描述 急求!!C语言gotoxy函数实现时效果不理想求解 在做数据结构的作业,要用到光标移动,但是实现时效果不理想,求解,下面举个例子 #include #include int gotoxy(int x int y){ COORD pos = {xy}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄 SetConsoleCursorPosition(hOut pos);} int main(void){ int i

c语言问题-Linux下的C语言程序问题无限循环

问题描述 Linux下的C语言程序问题无限循环 这个程序我在Linux里用gcc编译,然后无限循环,我用ctrl+c但是只能停止循环,却不能退出运行,这是一个问题,还有一个就是为什么它会无限循环?我把for里面中间一个x!=9.9改成x<=9.9还是无限循环,为什么? 解决方案 杂记之C语言之无限循环 解决方案二: 改成<=9.9就不会出现这个情况的, 解决方案三: 亲测,改为<=9.9不是无限循环,用!=是无限循环的原因很简单,float,double的!=不能这么判断,比如你判断 a

c语言-C语言小程序运行错误,求解?

问题描述 C语言小程序运行错误,求解? #include 2 int main() 3 { 4 int i,j; 5 char ch; 6 for(i=1;i<5;i++) 7 { 8 char ='A'+i-1; 9 for(j=1;j<2*i-1;j++) 10 printf("%cn",ch); 11 } 12 return 0; 13 } 14 15 A.c: 在函数'main'中: A.c:8:8: 错误: expected identifier or '(' b

c语言-C语言关于keybd event函数错误求解

问题描述 C语言关于keybd event函数错误求解 解决方案 凑合着用: #include <windows.h> #include"stdio.h" void main() { keybd_event(0x5b,0,0,0); keybd_event('R',0,0,0); keybd_event('R',0,2,0); keybd_event(0x5b,0,2,0); char str[]="notepad"; int i=0; Sleep(10

VB语言一个有关于循环的问题,比较难

问题描述 VB语言一个有关于循环的问题,比较难 如果有一个变量 for x = 0 to 9 ... next 如果有两个变量 for x = 0 to 9 for y = 0 to 9 ... next next 如果有三个变量 for x = 0 to 9 for y = 0 to 9 for z = 0 to 9 ... next next next 请问这种层数不确定的循环怎么写 解决方案 n=3 k=1 for j = 1 to n k = k*10 next for i=1 to k

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步