main( ) {int i=5; printf("%d\n",sub(i));} sub (int n) {int a; if (n==1) a=1;else a=n+sub(n-1); }

;号后面是 return(a);
答案是15
当n=1时,a不是等于1吗?

void main( )
{
int i=5;
printf("%d\n",sub(i));
}
int sub (int n)
{
int a;
if (n==1)
a=1;
else
a=n+sub(n-1);
return a;
}
n=1时,a=1。对的。
但是你的n是5,递归函数sub的计算就是5+4+3+2+1,返回15。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-24
sub (int n)这个函数是一个递归函数,是求n的一个累加,sub(5)就是求5+4+3+2+1的值,就是15!
第2个回答  2012-02-24
你要的结果是main( ) {int i=5; printf("%d\n",sub(i));} ,这个是主函数,答案当然是15啦。
第3个回答  2012-02-24
原题目是这样的吗?
第4个回答  2012-02-24
注意递归的用法。研究一下递归吧!

main( ) {int i=5; printf("%d\\n",sub(i));} sub (int n) {int a...
void main( ){ int i=5;printf("%d\\n",sub(i));} int sub (int n){ int a;if (n==1)a=1;else a=n+sub(n-1);return a;} n=1时,a=1。对的。但是你的n是5,递归函数sub的计算就是5+4+3+2+1,返回15。

int t=1;printf("%d\\n",(t+5,t++));为什么输出1?
(t+5,t++)是逗号表达式,都好表达式的值是最后一个式子的值。例如(a,b,c,d),此时的逗号表达式的值就是d。所以(t+5,t++)的值等于t++ 因为是后至自加,所以先使用后自加,所以值为1。所以打印的是1

#include<stdio.h> main() { int a=4; printf("%d\\n%d\\n%d\\n%d\\n...
首先printf函数入栈的顺序是从右向左,所以先处理的顺序应该是a--,a++,--a,++a,因此事先进行--a然后进行++a,所以输出的结果应该是4334,我不知道你那个4344怎么来的。正确的顺序应该是:a(4)入栈 a=a-1=3 a(3)入栈 a=a+1=4 a=a-1=3 a(3)入栈 a=a+1=4 a(4)入栈 然后按...

下半年计算机二级c语言基础试题
sub(int x,int y) {x1=x;x=y;y=x1;} 3、#include Main() {int i=5; Printf(“%d ”,sub(i)); } sub(int n) {int a; If(n==1) return 1; a=n+sub(n-1); return (a); } 4、#include Void fun() {static int m; m+=2; printf(“%d ”,m); } Main() {int a; For(...

c语言乘积怎么表达
以下是一个简单的C语言程序,用于计算变量a和b的乘积:c include <stdio.h> int main() { int a = 12;int b = 10;printf("a = %d\\n", a);a = a + 8;printf("a = %d\\n", a);a = a * b;printf("a = %d\\n", a);system("pause");return 0;} 在汇编语言中,乘法...

...return1;if(n>5)return2;}main(){inta=10;printf(sub(a));_百度知...
1)别偷懒 ,不写返回值类型是个坏习惯 2)int sub(int n){ if(n<5)return 0;else if(n>2)return 3;return 1; 这里可以加else 变成 else return 1;if(n>5)return 2; \/\/这句没用 } int main(){ int a=10;printf(sub(a));\/\/ 这里sub(a) =3 ,除非else if(n>2)r...

计算器c语言代码
int a=0; scanf("%d",&a); switch(a) { case 1: {int i=0,j=0,add=0; scanf("%d%d",&i,&j); sum=i+j; printf("add=%d\\n",add); };break; case 2: {int i=0,j=0,sub=0; scanf("%d%d",&i,&j); sub=i-j; printf("sub=%d\\n",sub); };break; case 3: {int i=...

c语言输出所有水仙花数
1、首先需要打开Dev-c++软件,点击“新建源代码”。2、然后按照如图所示填写代码。3、其中:a表示的是水仙花数的百位数,b表示的是水仙花数的十位数,c表示的是水仙花数的个位数,sum表示的是所有累加下来的水仙花数。4、if(sum==a*a*a+b*b*b+c*c*c)这一个程序步骤的作用是在规定查找的范围内...

一个C语言问题,关于if...else..语句:
int sub(int n) \/\/定义这个sub()函数,它接收一个整形变量,{ if(n<5)return 0; \/\/\/如果传递的形参<5则返回0,main()输出一个0 else if(n>12)return 3; \/\/如果传递的形参>12则返回12,main()输出一个12 return 1; \/\/关键就是这一句代码了,若5<= n <=12,则返回1,ma...

关于c语言函数问题,这有段大数的加减代码、、、
因为你这个里面的输入的两个数和结果都是全局变量,所以只要把下面printf的地方取出来就可以了.另外由于减法涉及到负号的问题,所以你要把sign变量申明为全局变量,这样就可以了.

相似回答