当前位置: 代码迷 >> C语言 >> do while循环问题
  详细解决方案

do while循环问题

热度:141   发布时间:2006-07-27 10:51:15.0
do while循环问题

源程序如下:

#include<stdio.h>

void main()
{
int i,j,n;
long int sum=0,temp;
char k;
do
{
{
printf("Please input a number to n:\n");
scanf("%d",&n);
if(n<1)
{
printf("The n must be no less than 1!\n");
break;
}
for(i=1;i<=n;i++)
{
temp=0;
for(j=1;j<=i;j++)
temp+=j;
sum+=temp;
}
printf("The sum of the sequence(%d) is %d\n",n,sum);
scanf("%c",&k);
}while(k='y')

}

请问这个程序为什么不能执行printf("The sum of the sequence(%d) is %d\n",n,sum);语句后的scanf("%c",&k);

do while 循环不能实现?该程序在vc下调试通过,但运行有问题

搜索更多相关的解决方案: temp  sum  int  The  

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

漏了些东西,提示有的,想实现什么功能啊sequence(3)=10?是你想要的么?


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

去除do while循环,该程序实现的是数列求和,1+1+2++1+2+3+......+1+2+3+.....n

我的意思是加上一个循环,计算完一次后,提示你是否还要继续计算,如果是的话,就在计算一次


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

#include<stdio.h>

void main()
{
int i,j,n;
long int sum=0,temp;
char k='y';
do
{

printf("Please input a number to n:\n");
scanf("%d",&n);
if(n<1)
{
printf("The n must be no less than 1!\n");
continue;
}
for(i=1;i<=n;i++)
{
temp=0;
for(j=1;j<=i;j++)
temp+=j;
sum+=temp;
}
printf("The sum of the sequence(%d) is %d\n",n,sum);
getchar(); //fflush(stdin);清除回车
scanf("%c",&k);
}while(k=='y');
getch();

}
楼主真是个粗心大萝卜!


----------------解决方案--------------------------------------------------------
while(k=='y')
看好 这里是==才可以
要不你那个条件就恒成立
----------------解决方案--------------------------------------------------------
scanf("%c",&amp;k);由于你前面输入数字的时候有个回车,这个回车就被这条语句接收了,所以呢,这语句起不了作用的!
----------------解决方案--------------------------------------------------------
细节问题。
楼主可以用输入一个整数代替‘y',while(flag!=0)
楼主的do while();后面缺了分号。
----------------解决方案--------------------------------------------------------

谢谢大家的指导,尤其是4楼和6楼的高人,

我想在请教一下6楼的高人,为什么scanf("%c",&k);由于前面输入数字的时候有个回车,这个回车就会被这条语句接收

谢谢


----------------解决方案--------------------------------------------------------
因为你要接收的是字符,而刚好前面你输出有个换行符。
如果你要输入的是个int就不会出现这样的情况了。
----------------解决方案--------------------------------------------------------

多谢多谢

学到不少东西,nuciewth,多谢了


----------------解决方案--------------------------------------------------------
  相关解决方案