c语言题目 两个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 14:53:43
题目一

#include <stdio.h>
main()
{
int a=5,b=4,c=3,d=2;
if(a>b>c)

printf("%d\n",d);
else if ((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
解释下结果为何为 3

题目2
01 #include "stdio.h"
02 void main()
03 {int i,j;
04 double sum=0,result=1;
05 for(i=1;i<=20;i++){
06 for(j=i;j>0;j--)
07 result*=j;
08 sum+=result;
09 printf("\nthe result is%20.f\n",result);
10 result=1;
11 }
12 printf("\nthe sum is:%20.f\n",sum);
13 }
第10行 result=1; 作用是什么

题目一
#include <stdio.h>
main()
{
int a=5,b=4,c=3,d=2;
if(a>b>c) //这里具体是这样实现的((a>b)>c)先是(a>b)结果是
//一,所以1和c比较,1>c为假,所以不是这个结果
printf("%d\n",d);

else if ((c-1>=d)==1) //c-1>=d结果为1,然后1==1,所以输出
//d+1=3,这就是结果了
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
以上就是结果为什么得3的原因了

题目2
则第十行result=1; 作用是每次执行第六行的for循环时,重新复位值为1。

a>b结果为true,而true并不大于c,所以第一句不成立。
c-1>=d结果为true,true默认等于1,所以第二句成立。
ture=1

if(a>b>c)的意思应该是先进行a和b的判断,得出逻辑值1或0,然后拿1或0和c判断;如果你想表达a和b,a和c判断,可以用if((a>b)&&(a>c));

result=1 的作用应该是使每次执行第6行的循环时,使result 的初值都是1。

第一个问题
a>b>c是个错误的表达,应改为a>b&&b>c 才对,如果硬要求a>b>c的值的话,则是0,所以事实上运行了第二个printf

第二个问题
很显然result的作用是求每个i的阶乘,result=1;是为了把result初始化,不然的话result就还是上个阶乘的值,不过其实这个程序写的太复杂了,只要一个循环就好了

把re