㈠ 編寫程序,計算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:上面的代碼是我前些時寫的,所以沒有注釋.
這位兄弟將代碼拿去跑一遍就知道了,結果是正確的