int fun(int n){
if(n==2){
return 2
}else{
return fun(n-1)+(n-1)*n
}
}
int main(int argc, char* argv[])
{
printf("fun(3)=%d\n", fun(3))
return 0
}
编写一个递归子程序 计算N! (N)=0)的程序 最好用C语言这样写: #include<stdio.h>long fun(int n)void main() { int nprintf("请输入n的值:\n")scanf("%d",&n)printf("这个数的阶乘是:%d\n",fun(n))} long fun(int n) { if(n==1 || n==0) return 1else return n*fun(n-1)}
采纳哦
用汇编语言编写“计算1+2*3+3*4.+N*(N+1)”的程纳闭序M equ 自行定义,界定循环次数
N equ #2
S equ #1
Start:LDA #(N-1)
Loop:INCA A寄存器值加一
MOV A,B 把A寄存器值放到B寄存器中
INCB
JSR Count 跳转到Count子程序,进行计算
CMPA #M 判断循环条件
BLO loop 小于M的话继续循环
Print:输出
Count:MUL A,B
RTS
对应C代码如下:
#Define M 自行定义,界定循环次数
main()
{
int S=1
int N
for(N=2N<MN++)
{
S+=N*(N+1)
}
printf("d%",S)
}
谁能跟我编写一个程序(C语言)题目是编写一个函数计算sum(n)=1+2+3+。+n(n>=1)int Cal(int n)
{
sum=0
for(int i= 1i<=n++i)
sum+=i
return sum
}
求1×2+2×3+3×4+.+(n-1)×n先提供一个特殊数列的前n项和公式:
1+4+9+16+……+n² = n(n+1)(2n+1)/6
再看题目中的
(n-1)×n = n² - n
因此,
原式= [1+4+9+16+……+n²] - [1+2+3+4+……+n]
=n(n+1)(2n+1)/6 - n(n+1)/2
=n(n+1)(n-1)/3
用汇编语言编写“计源誉算1+2*3+3*4.+N*(N+1)且N*(N+I)<200”的程序
code segment
assume cs:codestart:
mov cx,1
mov ax,2
next:
cmp cx,200
jge exit
inc al
mov bl,al
dec bl
mul bl
add cx,ax
mov ax,0
mov al,bl
inc al
jmp next
exit:
mov al,bl AAM
mov dl,ah
mov bl,al
add dl,30h
mov ah,2
int 21h
mov dl,bl
add dl,30h
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
编写递归程序,计算n! m!看到有人写帖子问如果从m个数组中取N个原始的算法,要求一个是递归的,一个不是递归的。
递归的解法:(比较笨)
void getn(int a[], int b[] , int m, int n, int index,int lastindex)
{
int i = lastindex + 1
if(index == n )
{
int x
for(x = 0 x <</span>n x ++)
{
printf(" %d ",a[b[x]])
}
printf(" ")
return
}
while( i <</span>m)
{
b[index] = i
getn(a,b,m,n,index + 1,i)
i ++
}
}
非递归的解法:
void agen(int a[],int m, int n)
{
int i ,j
int b[100] = {0}
i = j = 0
while(b[0] <</span>m ) {
while( i <</span>m) {
if(j == n - 1 ) {
int x
for( x = 0 x <</span>n x ++) {
printf(" %d ",a[b[x]])
}
printf(" ")
} else {
j ++
}
i ++
b[j] = i
}
do {
j --
b[j] ++
} while(b[j] >= m )
i = b[j]
}
}
测试的主程序:
int main()
{
int a[10] = {0, 1,2,3,4,5,6,7,8,9}
int b[20] ={0}
getn(a,b,10,5,0,-1)
agen(a,10,5)
return 0
}
用PASCAL语言编写一个求1+2+3+.+N的程序var s,i,n:long
begin
write('N=')
readln(n)
s:=0
for i:=1 to n do
s:=s+i
writeln(s)
end.
编写计算(1+2-3+4-5+。-(n-1)+n)的程序你好 我来回答你的问题
其实很好解决 用-1这个特殊的数来做
main()
{ int i,j=1,k=0
for(i=1i<=100i++)
{ j=-1*j
k=j*i+k}
printf("%d",k)
getch()
}
看懂了吗 每回循环j都乘一次-1 也是j就从-1,1,-1,1来回变幻
你再乘以i i不就是正数负数的各一个变一次了吗 对吧?
我的C语言群34811055有什么问题可以加 还有我的QQ415654090
用VB程序编写一个过程来计算1+2+3+4+……+100的值。Dim a As Integer '首项
Dim b As Integer '末项
Dim c As Integer '项数
Dim d As Integer '结果
Public Sub Add()
a = InputBox("首项", "")
b = InputBox("末项", "")
c = InputBox("项数", "")
d = (a + b) * c / 2
MsgBox d
End Sub
Private Sub Form_Load()
Call Add
End Sub
针对这个问题首项=1,末项=100,项数=100
end sub
方法一:用二维数组来编写。
方法二:用自定义函数来编写。
首先,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和。杨辉三角的任意一行都是的二项式系数,n为行数减1。也就是说任何一个数等于这个是高中的组合数。n代表行数减1,不代表列数减1。如:第五行的第三个数就为=6。
先定义一个二维数组:a[N][N],略大于要打印的行数。再令两边的数为1,即当每行的第一个数和最后一个数为1。a[i][0]=a[i][i-1]=1,n为行数。除两边的数外,任何一个数为上两顶数之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]。最后输出杨辉三角。
方法一二维数组代码如下:
#include <stdio.h>#define N 14void main(){ int i, j, k, n=0, a[N][N]/*定义二维数组a[14][14]*/ while(n<=0||n>=13){ /*控制羡型打印的行数不要太大,过大会纳锋造成显示不规范*/ printf("请输入要打印的行数:") scanf("%d",&n) } printf("%d行杨辉三角如下:\n",n) for(i=1i<=ni++) a[i][1] = a[i][i] = 1/*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/ for(i=3i<=ni++) for(j=2j<=i-1j++) a[i][j]=a[i-1][j-1]+a[i-1][j]/*除两边的数外都等于上两顶数之和*/ for(i=1i<=ni++){ for(k=1k<=n-ik++) printf(" ")/*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/ for(j=1j<=ij++) /*j<=i的原因是不输出其它的数,只输出我们想要的数*/ printf("%6d",a[i][j]) printf("\n")/*当一行输出完以后换行继续下一行的输出*/ } printf("\n")}方法二:自定义函数代码:
杨辉三角中的任何一个数都等于一个组合数。
#include <stdio.h>/* * 定义阶乘,在这里可能会想。为什么要用float,当我试第一次的时候, * 如果用int的话,那么在打印行数多了以后就会出错。 * 这是因为阶乘的数比较大,如果用int就不够用了。下同 */float J(int i){ int j float k=1 for(j=1j<=ij++) k=k*j return(k)}float C(int i,int j){ /*定义组合数*/ float k 洞派晌 k=J(j)/(J(i)*J(j-i)) return(k)}void main(){ int i=0,j,k,n/*打印杨辉三角*/ while(i<=0||i>16){ printf("请输入要打印的行数:") scanf("%d",&i) } printf("%d行杨辉三角如下:\n",i) for(j=0j<ij++){ for(k=1k<=(i-j)k++) printf(" ") for(n=0n<=jn++) printf("%4.0f",C(n,j)) printf("\n") } printf("\n\n")}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)