设计程序,求S=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值


用DELPHI 做
求S=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值
datarea segment
n dw 3
result dw ?
datarea ends
stack_seg segment
dw 128 dup(0)
tos label word
stack_seg ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,ss:stack_seg
start:
mov ax,stack_seg
mov ss,ax
mov sp,offset tos
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov bx,n
push bx
call fact
pop result

mov dx, result ;result 已经放到DX中了
mov ah,2
int 21h

ret
main endp
fact proc near
push ax
push bp
mov bp,sp
mov ax,[bp+6]
cmp ax,0
jne fact1
inc ax
jmp exit
fact1:
dec ax
push ax
call fact
pop ax
mul word ptr[bp+6]
exit:
mov [bp+6],ax
pop bp
pop ax
ret
fact endp
prognam ends
end start
汇编的
#define N 80

void main(){

int a[N]; /* 保存结果 */
int index; /* 计数器变量 初始值为1 */
int i,j,k,d; /* 循环变量 */
int m=50; /* 求m!; */

a[1]=1;
index=1;

for(i=1;i<N;i++){
for(j=1;j<m;j++) /* 算法步骤2 */
a[i]=a[i]*m;

for(j=1;j<index;j++){
for(k=index-j;k>0;k--)
if(a[k]>10){
a[k+1]+=a[k]/10;
a[k]%=10;
}
}

}
/* 以下巧橡拆的if判如世断为最高位的情况 */
if(a[index]>孝枣9){
a[index+1]=a[index+1]+a[index]/10;
a[index]=a[index]%10;
index++;
}
}
for(d=index;d>0;--d)
printf(“%d\n“,a[d]);
}
c的