注册 登录
编程论坛 C++教室

我是初学者问个问题,这两个有啥区别?

歪脖儿树下 发布于 2012-04-12 22:02, 351 次点击
#include<stdio.h>
void main()
{
    int i,n,s,a,b;
    s=0;a=1;i=1;b=1;
    printf("please intput n\n");
    scanf("%d",&n);
    while(i<=n)
    {
        i++;
        s=s+a;
        while(b<=i)
        {
            a=a*b;
            b++;
        }
    }
    printf("所得值为%d\n",s);
}




#include<stdio.h>
void main()
{
    int i,n,s,a,b;
    s=0;a=1;
    printf("please intput n\n");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        s=s+a;
        for(b=1;b<=i;b++)
        {
            a=a*b;
        }
    }
    printf("所得值为%d\n",s);
}
6 回复
#2
pangding2012-04-12 22:53
是不是就是 while 和 for 的区别?
#3
歪脖儿树下2012-04-12 22:58
回复 2楼 pangding
第二个跟第一个运行结果不一样!
#4
pangding2012-04-13 22:57
我觉得你应该能想明白。
#5
钟离文扬2012-04-13 23:10
、、应该就是两种循环结构的不同吧、、
#6
ab10349827492012-04-14 16:27
这两个是比较for与while的区别的,
可是第一个少了一些东西,第二个代码中的第二个for循环语句中
开始时对b赋值1;
而第一个中的第二个while循环语句中没有对b赋值1,
所以:把第一个程序改成:
#include<stdio.h>
 void main()
 {
     int i,n,s,a,b;
     s=0;a=1;i=1;b=1;
     printf("please intput n\n");
     scanf("%d",&n);
     while(i<=n)
     {
         
         s=s+a;
     b=1;
         while(b<=i)
         {
             a=a*b;
             b++;
         }
        i++;
     }
     printf("所得值为%d\n",s);
 }
即可;(注意其中的i++是放在while语句中的最下面的而不是开始)
#7
歪脖儿树下2012-04-14 17:21
回复 4楼 pangding
谢谢!已经明白了!
1