c语言break一直有一个错误,问一个关于用break跳出循环的有关问题

问一个关于用break跳出循环的问题

直接上代码(自己无聊写着玩的,所知知识不多,代码会有点繁杂):

# include 

int main(void)

{

while(1)

{

int choose;

int i;

char ch;

int a[20] = {1, 1};

for (i = 2; i <= 19; i++)

a[i] = a[i-2] + a[i-1];

printf("请选择:\n1.查看Fibonacci数列第n项\n2.查看Fibonacci数列前n项\n");

scanf("%d", &choose);

switch (choose)

{

case 1:

int n;

printf("请输入你想查看的项数:\n");

scanf("%d", &n);

if (i = n - 1)

printf("第%d项是:%d  \n",n, a[i]);break;

case 2:

int k;

printf("请输入你想查看的项数:\n");

scanf("%d", &k);

for (i = 1; i <= k; i++)

{

printf("%-5d ", a[i]);

if (i%5 == 0)

printf("\n");

}

printf("\n");break;

default:printf("输入有误!\n");break;

}

printf("是否退出(Y/y)?\n");

if((ch = getchar()) == 'y'||(ch = getchar()) == 'Y')

break;

}

return 0;

}

在vc6++中运行的结果是:

-------------------------------------------------------------

请选择:

1.查看Fibonacci数列第n项

2.查看Fibonacci数列前n项

2

请输入你想查看的项数:

13

1     2     3     5     8

13    21    34    55    89

144   233   377

是否退出(Y/y)?

y

请选择:

1.查看Fibonacci数列第n项

2.查看Fibonacci数列前n项

y

请输入你想查看的项数:

1     2     3     5     8

13    21    34    55    89

144   233   377

是否退出(Y/y)?

Press any key to continue-------------------------------------------------------------

我想问的是  为什么要输入两次y才能退出?   求各位指点!!!!

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

# include 

int main(void)

{

char ch = 'a' ;

while(1)

{

int choose;

int i;

int a[20] = {1, 1};

for (i = 2; i <= 19; i++)

a[i] = a[i-2] + a[i-1];

printf("请选择:\n1.查看Fibonacci数列第n项\n2.查看Fibonacci数列前n项\n");

scanf_s("%d", &choose);

switch (choose)

{

case 1:

int n;

printf("请输入你想查看的项数:\n");

scanf_s("%d", &n);

if (i = n - 1)

printf("第%d项是:%d  \n",n, a[i]);break;

case 2:

int k;

printf("请输入你想查看的项数:\n");

scanf_s("%d", &k);

for (i = 1; i <= k; i++)

{

printf("%-5d ", a[i]);

if (i%5 == 0)

printf("\n");

}

printf("\n");break;

default:printf("输入有误!\n");break;

}

printf("是否退出(Y/y)?\n");

ch = getchar();

if(ch  == 'y'

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

ch == 'Y')

{

return 0;

}

}

return 0;

}

感觉应该是你if((ch = getchar()) == 'y'

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

(ch = getchar()) == 'Y')

break;

}不应该这样写。if语句里面没有break吧。。

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

这个是getchar()的问题,一定要注意,去查下getchar用法吧,getchar()是读取标准输入里的下一个字符,而之前scanf_s("%d", &choose);完了有个回车,这个回车正被后边的getchar()获取了。。。lz多规范下代码吧,对齐,换行,复用神马的

printf("是否退出(Y/y)?\n");

getchar();

ch = getchar();

if(ch == 'y'

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

ch == 'Y')

break;

}

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

同上

附代码:

# include 

int main(void)

{

int choose ;

int i ;

char ch ;

int a[20]= {1,1};

int n ;

int k ;

for(i=2; i<=19; i++)

a[i]=a[i-2]+a[i-1];

while(1)

{

printf("请选择:\n1.查看Fibonacci数列第n项\n2.查看Fibonacci数列前n项\n");

scanf("%d",&choose);

getchar();

switch(choose)

{

case 1 :

printf("请输入你想查看的项数:\n");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值