当前位置: 代码迷 >> C语言 >> 刚学循环的菜鸟做不来作业
  详细解决方案

刚学循环的菜鸟做不来作业

热度:306   发布时间:2006-10-01 15:28:02.0
刚学循环的菜鸟做不来作业

/*输入一个数子a,实现1*2*3.....(a-1)*a.计算结束后输出是"否要继续(Y/N)"如果选择Y,则会继续叫你输入一个数,然后再继续计算,用 while循环,高手帮我看看我下面哪里要改正*/
#include<stdio.h>

void main()
{
int a;
int b=1;
char c='Y';
while(c=='Y')
{
printf("请输入一个整数:");
scanf("%d",&a);
}
while(a>0)
{
b=b*a;
a=a-1;
}
printf("%d\n",b);

printf("是否愿意继续(Y/N)");
fflush(stdin);
scanf("%c",&c);
}

搜索更多相关的解决方案: 计算  void  include  

----------------解决方案--------------------------------------------------------
首先 ANSI C 规定 main函数的返回值必须是int

接着
while(c=='Y')
{
printf("请输入一个整数:");
scanf("%d",&a);
}
是死循环

----------------解决方案--------------------------------------------------------
前边应当是这样
int b=1;
char c;
printf("please select 'y',or 'n'\n");
scnaf("%c",&c);
while(c=='Y')
----------------解决方案--------------------------------------------------------
以下是引用lansite2006在2006-10-1 15:28:02的发言:

/*输入一个数子a,实现1*2*3.....(a-1)*a.计算结束后输出是"否要继续(Y/N)"如果选择Y,则会继续叫你输入一个数,然后再继续计算,用 while循环,高手帮我看看我下面哪里要改正*/
#include<stdio.h>

void main()
{
int a;
int b=1;
char c='Y';
while(c=='Y')
{
printf("请输入一个整数:");
scanf("%d",&a);
//删掉这里的大括号
b=1;
while(a>0)
{
b=b*a;
a=a-1;
}
printf("%d\n",b);

printf("是否愿意继续(Y/N)");
fflush(stdin);
scanf("%c",&c);
}

}


----------------解决方案--------------------------------------------------------

输出结果要求是:
请输入一个整数:X
XXX
是否愿意继续(Y/N):Y
请输入一个整数:X
XXX
是否愿意继续(Y/N):Y
一直这么循环下去如果输出N则结束:



----------------解决方案--------------------------------------------------------
谢谢版主老大,成功了,还想请问一下前面b赋值已经是1了为什么后面还要赋值一下,请版主老大回答一下!!谢谢
----------------解决方案--------------------------------------------------------
因为你每次计算阶乘时的初值总是1,当然你不可能把上次计算的阶乘当作这一次的初值吧.

比如你第一次计算了3!此时b=6
如果你不把b重新赋为1,那下次算阶乘就把6也乘进去了.
----------------解决方案--------------------------------------------------------
  相关解决方案