我想知道这个C语言求1到20的阶乘为什么我错了?
在32伟环境下,20的阶乘已经超出int的范围,而i是个int,必然会溢出,结果就是错误的
把i定义成double就行了
#includemain(){int n = 0;double i = 1.0; //doubledouble sum = 0; for (n = 0; n<20; n++){i = i*(n + 1);sum = sum + i;}printf("sum=%lf
", i);return 0;}
你的程序有点乱,也有的错的地方,比如一开始的int unit51()不应该是int main()吗?还有倒数第三行printf("1到20的阶乘和为:
",sum);也是错的,应该改为printf("1到20的阶乘和为:%d
",sum);但是貌似这样最后输出的也只有一个数而不是1到20的阶乘,最后一点,20的阶乘是一个非常大的数,用int根本不行。程序就不给你改了,需要的话我给你写一个。
int 和long表示的范围是一样的,建议类型换成long long,printf处更改为("%lld", sum)
c语言 我想知道我这个求平方根的代码为啥求的平方根都会多加个0.0001...
a = sqrt(2.0)回到你的问题,因为程序语言中小数的表示是不精准的(多个二进制位的表示,存在误差),所以可能会导致这个问题。另外,你的代码本身也有漏洞,如果n=2,真实平方根为1.41421...,那么无论是1.4142还是1.4143都不能使b==n成立,从代码上看应该会进入死循环。
c语言怎么求余数?
在C语言中,求余数可以使用取模运算符 % 来完成。取模运算符 % 用于计算两个数相除的余数,它的语法如下:c复制int result = a % b;其中,a 和 b 是要求余数的两个整数,result 是计算得到的余数。以下是一个示例程序,演示如何使用取模运算符 % 求两个数的余数:c复制#include <stdio.h>i...
用c语言怎样求一个数的位数?
在C语言中,计算一个数的位数是一项常见的操作。位数是指一个数的十进制表示中的数字个数。下面我们将介绍一种简单的方法来计算一个数的位数。这种方法利用了整数除法运算的特性。我们可以通过不断地将待计.算的数除以10,直到商为0为止,每进行一次除法运算就将位数加1。拓展知识:C语言是一门面向...
我是一个C语言初学者,想知道怎么用C语言编写求圆的面积。
int main(){ float s,r,pi; \/\/可以用define函数定义π;pi=3.1415926;scanf("%f",&r);s=pi*r*r;printf("%f",s)}
我想要知道一个c语言程序 计算从出生到现在多少天我是1997年2月14的...
day = 0;hour = 25;minute = 61;while(1970 >= year || year > 2100){printf("请输入出生年份:");scanf("%d", &year);}while(0 > month || month > 12){printf("请输入出生月份:");scanf("%d", &month);}loop = 1;while(loop){printf("请输入出生日:");scanf("%d",...
我想知道怎么用C语言解决输入一个数字求各位数字相加的和
楼主,不用循环似乎不行,要简单可以使用字符数组来接收输入的数字再求和。void main(){ char c[111];int i=0;int a=0;scanf("%s",c);\/\/输入一个数字,在111位之内,还想输入得更大,请把数组改大。while(c[i]!='\\0') \/\/判断是否读到字符串的结尾。{a=a+(c[i]-'0'); \/...
C语言题,答案是5,想知道为什么,求详细过程
第3次循环 b%3 ==1成立,那么执行b=b+3=10,continue是继续回到for循环执行a++,那么此时a=4 第4次循环 b%3 ==1成立,那么执行b=b+3=13,continue是继续回到for循环执行a++,那么此时a=5 第5次循环 注意了 if(b>10)这句话成立了, 那么执行break,循环结束,最后 a = 5 ...
C语言想知道这个题是需要用什么算法数据结构:供水计划
还有一个贪心算法,不知道对不对 include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;class TimeInterval {public:int begin, end;bool operator<(const TimeInterval& another) const {return end > another.end;}};bool cmp(const TimeInterval& a, const...
我想尽快知道这道C语言题的解法
c=getchar(); \/*读入选择*\/ }while(c<'0'||c>'9');return(c-'0'); \/*返回选择*\/ } int Input(Student stud[],int n) \/*输入若干条记录*\/ {int i=0;char sign,x[10]; \/*x[10]为清除多余的数据所用*\/ while(sign!='n'&&sign!='N') \/*判断*\/ { printf("\\t\\t\\t...
一道C语言题目求解,我想知道s,w,t的值分别是怎么得到的
你没有错,每次运算前两个的值都是2,0,但是t的值不是固定的 include"stdio.h"int main(){ int a,b,c;int s,w=0,t;a=-1,b=3,c=3;if(c>0){ s=a+b;\/\/s = 2 } if(a<=0)\/\/a=-1,if条件成立执行 { if(b>0)\/\/if条件不成立,此条语句不执行 { if(c<=0){ w=a-...
烛薇中鑫: #include<stdio.h> void main() { float a,b,s,sum; sum=0; for(a=1;a<=20;a++) { for(s=1,b=1;b<=a;b++) s=s*b; sum=sum+s; } printf("%e\n",sum); }
太和区18065193954: C语言,求1到20阶乘,初学者,求帮助! - ?
烛薇中鑫: #include<stdio.h> int main() { double term=1,sum=0; for(int i=1;i<=20;i++) { term=term*i; sum=sum+term; } printf("%.2lf\n",sum); return 0; }
太和区18065193954: C语言求1 - 20的阶乘之和 - ?
烛薇中鑫: /* sum = 2561327494111820313 Press any key to continue */1 2 3 4 5 6 7 8 9 10 11#include <stdio.h>intmain() {__int64fact = 1,i,sum = 0;for(i = 1; i < 21; ++i) {fact *= i;sum += fact;}printf("sum = %I64d\n",sum);return0; }
太和区18065193954: 求个C语言程序:将1到20的阶乘累加 - ?
烛薇中鑫: #includemain() { double res=1.0; int i; for(i=1;i
太和区18065193954: 跪求:编写c语言程序,求1到20的阶乘之和 - ?
烛薇中鑫: 亲测可用 long jiecheng(int x){ long int i,k=1; for(i=1;i<=x;i++) k=k*i; return k; } int main() { long int j,k=0; int i; for(i=1;i<=20;i++) { j=jiecheng(i); k+=j; } printf("%ld\n",k); } 输出的结果是2561327494111820313 扩展资料: 一个正整数的阶乘(...
太和区18065193954: C语言,算1到20阶乘的和 - ?
烛薇中鑫: s*=i相当于s=s*i,假如某一次循环中i=k(k代表某个自然数),s=S那么执行完s*=i后s=S*k;下一次循环时i=k+1,执行完s*=i后s=S*k*(k+1).而初始情况是i=1,s=1,根据数学归纳法可以推导出s中保存的值是1*2*...*(k+1).
太和区18065193954: 求1到20的阶乘和,,用C语言怎么整,,请高手来看看,,我这个对不??谢了 - ?
烛薇中鑫: 用递归调用吧最简单 int fan(int a) { sum+=20*fan(a-1); } 考试必考,最后用fun(20),但要sum在外面定义就出来了
太和区18065193954: 用c语言编程计算20的阶乘,即20!=1*2*3*…*20的值 - ?
烛薇中鑫: int n = 20;//需要多少的阶乘这里就给多少,也可以用户输入 int temp = 1; for(int j=n;j>1;j--) { temp*=j; } 执行完后,temp就是值了
太和区18065193954: C语言求阶乘的程序怎么编? - ?
烛薇中鑫: #include <stdio.h> void main() { int sum = 1,i = 1,n; printf("please enter a number:\n"); scanf("%d",&n);/输入你要求的数的阶乘 while (i <= n) { sum *= i; i++; } printf("The factorial of %d is %d\n",n,sum); }
太和区18065193954: c语言 1到20的阶乘之和 - ?
烛薇中鑫: i始终大于1,会出现死循环的,同时,20的阶乘相加,那结果会很大的,用int保存不下,得用double类型!示例代码,有问题再用度娘自己搜索吧.. //win7 x64 + vc6.0编译通过 #include<stdio.h> #include "stdlib.h" int main() { double fac(int n...