编写程序,从键盘输入正整数n,计算n!并输出n和n!。(要求:分别用while、

2、编写程序,从键盘输入正整数n,计算n!并输出n和n!。(要求:分别用while、
do…while和for 三种循环语句实现,写成三个独立的C源程序)。
提示:n!为计算 n 的阶乘,例如 n=5,则计算 1*2*3*4*5 的值。
注意:如果将结果存放在int 型变量中,输入的n值必须小8,否则,结果超出了整型变量所允许的最大数,也可以考虑将结果存放在long 型的变量中,这样允许输入的n值可以更大一些。

注意:如果将结果存放在int
型变量中,输入的n值必须小8,否则,结果超出了整型变量所允许的最大数
看样子你的系统中sizeof(int)值为2。
#include<stdio.h>
void
t1(int);
void
t2(int);
void
t3(int);
void
main(){
int
n;
printf("n
must
be
more
than
0
and
less
then
8\ninput
n:");
scanf("%d",&n);
if(
0
>=
n
||
8
<=
n
){
printf("n
must
be
more
than
0
and
less
then
8");
return
1;
}
t1(n);
t2(n);
t3(n);
}
void
t1(int
n){
int
sum=1;
int
i
=
n;
while(
1
<
i
){
sum
*=
i;
i--;
}
printf("while
res
is
%d
n
is
%d\n",
sum,
n);
}
void
t2(int
n){
int
sum=1;
int
i
=
n;
do{
sum
*=
i;
i--;
}while(
1
<
i
);
printf("do
while
res
is
%d
n
is
%d\n",
sum,
n);
}
void
t3(int
n){
int
sum=1;
int
i;
for(
i
=
n;
i
>
1;
i--){
sum
*=
i;
}
printf("for
res
is
%d
n
is
%d\n",
sum,
n);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-12
#include<stdio.h>
void main(){
int i,a,sum=1;
scanf ("%d",&a);
for(i=1;i<=a;sum*=i,i++);
printf("n=%d,n!=%d",a,sum);
}

#include<stdio.h>
void main(){
int i,a,sum=1;
scanf ("%d",&a);
i=a;
while(i){
sum*=i;
i--;
}
printf("n=%d,n!=%d",a,sum);
}

#include<stdio.h>
void main(){
int i,a,sum=1;
scanf ("%d",&a);
i=a;
do{
sum*=i;
i--;
}while(1<i);
printf("n=%d,n!=%d",a,sum);
}

速度A

参考资料:改了3次了

本回答被提问者和网友采纳
第2个回答  2008-10-29
注意:如果将结果存放在int 型变量中,输入的n值必须小8,否则,结果超出了整型变量所允许的最大数

看样子你的系统中sizeof(int)值为2。

#include<stdio.h>
void t1(int);
void t2(int);
void t3(int);
void main(){
int n;
printf("n must be more than 0 and less then 8\ninput n:");
scanf("%d",&n);
if( 0 >= n || 8 <= n ){
printf("n must be more than 0 and less then 8");
return 1;
}
t1(n);
t2(n);
t3(n);
}
void t1(int n){
int sum=1;
int i = n;
while( 1 < i ){
sum *= i;
i--;
}
printf("while res is %d n is %d\n", sum, n);
}
void t2(int n){
int sum=1;
int i = n;
do{
sum *= i;
i--;
}while( 1 < i );
printf("do while res is %d n is %d\n", sum, n);
}
void t3(int n){
int sum=1;
int i;
for( i = n; i > 1; i--){
sum *= i;
}
printf("for res is %d n is %d\n", sum, n);
}
第3个回答  2008-10-29
第一部分没有改动的
第二部分改动如下:
#include<stdio.h>
void main(){
int i,a,sum=1;
scanf ("%d",&a);
i=2;
if(i>a) sum=1;
while(i<=a){
sum*=i;
i++;
}
printf("n=%d,n!=%d",a,sum);
}
这样可以减少一次循环
同样,第三部分也可以这样减少一次循环

用while循环编程实现输入整数n,输出n!
1 2 3 4 5 6 7 8 int n=10;\/\/任意输入的值 int i = 1;int sum=i;while(i<=n){ sum *= i;i++;}

用C语言编写程序从键盘输入一个正整数数n,输出n!
编程实现计算n!,也就是n*(n-1)*(n-2)*...*1,可以通过递归函数来实现,具体实现方法:include <stdio.h>int Func(int n){if(n < 2)return 1;else return n*Func(n-1);} void main(){int n =0,m=0;printf("请输入一个正整数:")scanf("%d",&n);m=Func(n);printf("...

c语言怎么写出:“输入一个正整数n,再输入n个整数,输出最小值”的...
1、首先,定义三个整型变量,保存正整数、临时变量和各位数总和。2、给变量总和sum赋值,初值为0。3、接着,输入正整数,保存在变量n中。4、给临时变量赋值,让它的值等于正整数的值。5、用while语句判断,判断的条件为n不等于0。6、条件成立时,求正整数各位上数字的和。7、将正整数中,已求和...

用C语言,求n!,n从键盘输入。(要求分别用WHILE语句,DO-WHILE语句、FOR语 ...
} printf("1!+2!+…+20!=%e\\n",sum);}

...正整数n,求n以内的偶数和,并输出,要求分别用while和do while循环_百...
void main (String args[]){Scanner s=new Scanner(System.in);System.out.println("求正整数以内的偶数和。。。");System.out.println("请输入一位正整数");int n=s.nextInt();int m=n\/2+1;int sum=0;do {sum=(m-1)*(m);} while (sum==n);System.out.println(sum);}} ...

从键盘输入一个正整数n,计算该数的个位数字之和并输出。
输出该数的各位数字之和的源代码如下:include <stdio.h> int fun(int n){ int i;int sum=0;if(n>1000||n<0){ puts("输入的数字超出范围!"); \/\/ 错误信息提示 } else { for(i=2;i<n;i++) \/\/ 循环遍历n,取出因子,并进行累加 { if(0 == n%i){ sum+=i;} } } return...

c语言编程 输入正整数n,求n是几位数
当你输入一个正整数n时,你需要编写一个C语言程序来确定n是几位数。这可以通过计算n的位数来实现。具体来说,你可以使用循环来将n除以10,直到n小于10为止。每次除以10时,计数器加1,最终计数器的值就是n的位数。以下是一个简单的C语言程序,可以实现这个功能:```include <stdio.h> int main(...

Python用while输入整数n,输出n编程
n=int(input("请输入要求累加到的数:"))sum=日for i in range(n+1): #实遍历sum += iprint(sum) 输出:媒介由内部到外部的传递过程。从内部送到外部。一般的输入输出设备有打印机、硬盘、键盘和鼠标。实际上,有些设备只有输入功能

求~编写一个完整的java递归程序,从键盘输入数字n!,程序自用计算n!,并...
param args \/ public static void main(String[] args) { byte[] b = new byte[32];while (true) { try { System.out.println("请输入正整数,获取其阶乘,输入over结束");System.in.read(b);String res = new String(b).trim();if (res.equals("over")) { System.out.println("...

c语言如何输入一个正整数N,再输入N个整数,按从小到大的顺序输出?
void main(){ int num[10000],i,j,temp,N,count=0;\/\/确定数组num的实际大小 printf("请输入一个大于0的整数:");scanf("%d",&N);\/\/限制数字n的值在0到10000之间 while(N<=0||N>=10000){ printf("你输入的数字不在0到10000之间,请重新输入!\\n\\n");printf("请输入一个大于0的整数...

相似回答