㈠ 编写程序,计算N!的值(N为键盘输入的一个整数)
代码如下,手乎宽机写的,自己调试下,如果没问题,请采纳,谢谢。
#include <stdio>
#include <stdlib>
void main()
{
int nNum = 0;
int nResult = 0;
printf("岁模亮Please input a number: ");
scanf("%d"码雹, &nNum);
for(;nNum > 0; nNum--)
{
nResult *= nNum;
}
printf("%d! = %d\n", nNum, nResult );
}
㈡ 用java编写程序求n!
importjava.util.Scanner;
publicclassText{
publicstaticvoidmain(Stringargs[]){
System.out.println("请输入n");
Scannersc=newScanner(System.in);
intn=sc.nextInt();
intt=1;
inti=1;
while(i<=n){
t=i*t;
i=i+1;
}
System.out.println("n!="+t);
}
}
//补充,JAVA文件保存时文件名必须和类名相同。
㈢ 用汇编语言如何编写计算n!的程序(利用循环结构程序编写)
;X86汇编_用循环结构编程计算阶乘n!
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
push cs
pop es
Q0:lea dx,Tips
mov ah,9 ;显示提示
int 21h
Q1:mov ah,0
int 16h
cmp al,1bh ;Esc退出
jz exit
cmp al,'0'
jb Q1 ;不是数字重新输入
cmp al,'8';大于8,则产生溢出错误
ja Q1
mov ah,0eh
int 10h
sub al,30h;'0'
or al,al
jnz Q2
mov ax,1 ;0!=1
jmp Q4
Q2:mov ah,0
mov cx,ax
mov al,1
xor dx,dx
Q3:mul cx ;用mul cl算做兄如到6!便出纯启错
loop Q3
Q4:cld
lea di,Result
add di,2
lea bp,Table
mov cx,5
Q5:xor dx,dx
div word ptr [bp]
or al,30h
stosb
mov ax,dx
add bp,2
loop Q5
lea dx,Result ;显示计算结果
mov ah,9
int 21h
jmp Q0
exit:
mov ah,4ch
int 21h
Tips db 'Please Input a Number(0-8),Esc to Quit: ',0dh,0ah,'$' ;提示
Table dw 10000,1000,100,10,1
Result db '!=00000',0dh,0ah,'$'尘孝
code ends
end start
㈣ 编写C++程序,计算n!
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
#include"iomanip.h"
int getn()
{
int n;
cout<<"请输入N!中的N\n";
cin>>n;
while(n<0)
{
cout<<"输入有错!请重新输入!"<<endl;
cin>>n;
}
if(n==0)
exit(1);
return n;
}
int getbitnum(int n)
{
double sum=1.0;
for(int i=1;i<n;i++)
sum+=log10(i);
return (int)sum;
}
char * init(int size)
{
char *pa=new char[size];
if(!pa)
{
cout<<"too large factor of"<<size<<endl;
exit(1);
}
pa[0]=1;
for(int i=1;i<size;i++)
pa[i]=0;
return pa;
}
void calc(char *a,int n)
{
double bitcount=1;
int begin=0;
for(int i=2;i<=n;i++)
{
long and=0;
bitcount+=log10(i);
if(a[begin]==0)
begin++;
for(int j=begin;j<int(bitcount);j++)
{
and+=i*a[j];
a[j]=char(and%10);
and/=10;
}
}
}
void display(char *a,int size)
{
int bit=0;
for(int i=size-1;i>=0;i--)
{
if(bit%60==0)
cout<<endl<<"第"<<setw(3)<<(bit/50+1)<<"个50位:";
cout<<(int)a[i];
bit++;
}
cout<<endl;
}
void main()
{
int n=getn();
int size=getbitnum(n);
char *pa=init(size);
calc(pa,n);
display(pa,size);
delete []pa;
}
楼上的几位代码没有错误,我赞同。但是只能算一些n比较小的阶乘,遇到数字大的就会溢出。楼主可以试试1000的阶乘。我的这个可以算大一点的数
㈤ 如何用c语言编写程序求N!
#include"stdio.h" void maim() {int i,N; long sum=1; printf("请输入N的值); scanf("%d",&N); if(N=0)sum=1; else for(i=1;i<=N;i++) sum*=i; printf("N!=%ld\n",sum); }
㈥ 编写程序,输入n,计算n!(n的阶乘)。
思路:所谓n的阶乘就是从1到n的累积,所以可以通过一个for循环,从1到n依次求积版即可。
参考代权码:
#include<stdio.h>
intmain(){
intn,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)//for循环求累积
s=s*i;
printf("%d ",s);
return0;
}
/*
运行结果:(例如求5的阶乘)
5
120
*/
㈦ 如何用C++编写程序计算n!
#include"iostream.h"x0dx0a#include"math.h"x0dx0a#include"stdlib.h"x0dx0a#include"iomanip.h"x0dx0ax0dx0aint getn()x0dx0a{x0dx0aint n;x0dx0acout<<"请输入N!中的N\n";x0dx0acin>>n;x0dx0awhile(n<0)x0dx0a{x0dx0acout<<"输入有错!请重新输入!"< ㈧ 用C语言编写程序:计算n!
#include<iostream> ㈨ C++编程:从键盘输入一个正整数n,编程计算n!
容我说句实话,楼上两位的代码只能算比较小的阶乘,比如 100! 就算不出了。 ㈩ c语言求n! 1、求n!就是n的阶乘首先打开vc++ 6.0软件,准备一个新的c语言文件,命名为multiply.cpp,然后引入C语言基本库,创建一个main函数:
using namespace std;
int main()
{
int n;
cout<腊让山<"请输入一个正整滑吵数:";
cin>>n;
while(n<=0)
{
cout<<"输入无效,请轮中重新输入:";
cin>>n;
}
int result=1;
for(int i=1;i<=n;i++)
result *= i;
cout<<"n!="<<result<<endl;
return 0;
}
我是用数组来实现大数的阶乘,代码如下:
#include<iostream>
#include<deque> // 利用双端队列保存计算结果的每一位
using namespace std;
int main()
{
deque<int> a;
a.push_back(1);
a.push_back(1);
int n,top = 1;
cout << "Input n: ";
cin >> n;
for(int i = 1; i <= n; i++)
{
for(int j=1; j <= top;j++)
a[j] *= i;
for(int j = 1; j <= top; j++)
{
if(a[j]>10)
{
for(int r = 1; r <= top; r++)
{
int tmp = a[r] / 10;
a[r] = a[r] % 10;
if(r+1 == a.size())
{
if(tmp == 0)
break;
else
{
a.push_back(tmp);
top++;
break;
}
}
a[r+1] += tmp;
}
}
}
}
cout << n <<"! = ";
for(int j = top ; j > 0; j--)
cout << a[j];
cout << endl;
return 0;
}
PS:上面的代码是我前些时写的,所以没有注释.
这位兄弟将代码拿去跑一遍就知道了,结果是正确的