break语句的使用规则,高手请进!

以下程序错在哪里以及如何修改,附加break语句的使用规则。谢谢!#include<stdio.h>main(){intvalue,choice;printf("Conv... 以下程序错在哪里以及如何修改,附加break语句的使用规则。谢谢!
#include <stdio.h>
main()
{
int value,choice;
printf("Convert:\n");
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf(" 3: decimal to octal\n");
printf(" 4: octal to decimal\n");
printf(" 5: octal to hexadecimal\n");
printf(" 6: hexadecimal to octal\n");
printf(" 7: exist\n");
L: printf("Enter your choice: ");
scanf("%d",&choice);
if(choice==1)
{
printf("Enter a decimal value: ");
scanf("%d",&value);
printf("%d in hexadecimal is %x\n",value,value);
}
else if(choice==2)
{
printf("Enter hexadecimal value: ");
scanf("%x",&value);
printf("%x in decimal is %d\n",value,value);
}
else if(choice==3)
{
printf("Enter a decimal value: ");
scanf("%d",&value);
printf("%d in octal is %o\n",value,value);
}
else if(choice==4)
{
printf("Enter a octal value: ");
scanf("%o",&value);
printf("%o in decimal is %d\n",value,value);
}
else if(choice==5)
{
printf("Enter an octal value: ");
scanf("%o",&value);
printf("%o in hexadecimal is %x\n",value,value);
}
else if(choice==6)
{
printf("Enter a hexadecimal value: ");
scanf("%x",&value);
printf("%x in octal is %o\n",value,value);
}
else if(choice==7)
{
printf("SYSTEM IS EXITING......");break;
}
else
printf("Invalid selection\n");
}
改程序的作用在于选择7时程序退出,否则可尽享多次数据类型的转换。“L”是准备用goto的。
注意,悬赏分在采纳答案时给,目的是防止那些乱来的回答,而自己有丢了分。
程序还有一个缺点,就是如果我输入sffd等时,程序会死循环。chichujn有办法纠正吗?有则分就给你了。
展开
 我来答
chichujn
2008-04-10 · TA获得超过663个赞
知道小有建树答主
回答量:1534
采纳率:50%
帮助的人:1107万
展开全部
#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int main(void)
{
int value;
int choice;
int flag = FALSE;
char* input;

printf("Convert:\n");
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf(" 3: decimal to octal\n");
printf(" 4: octal to decimal\n");
printf(" 5: octal to hexadecimal\n");
printf(" 6: hexadecimal to octal\n");
printf(" 7: exist\n");

while(TRUE)
{
printf("Enter your choice: ");
scanf("%s",input);
choice = atoi(input);

switch(choice)
{
case 1:
{
printf("Enter a decimal value: ");
scanf("%s",input);
value = atoi(input);
printf("%d in hexadecimal is %x\n",value,value);
break;
}
case 2:
{
printf("Enter hexadecimal value: ");
scanf("%s",input);
value = atoi(input);
printf("%x in decimal is %d\n",value,value);
break;
}
case 3:
{
printf("Enter a decimal value: ");
scanf("%s",input);
value = atoi(input);
printf("%d in octal is %o\n",value,value);
break;
}
case 4:
{
printf("Enter a octal value: ");
scanf("%s",input);
value = atoi(input);
printf("%o in decimal is %d\n",value,value);
break;
}
case 5:
{
printf("Enter an octal value: ");
scanf("%s",input);
value = atoi(input);
printf("%o in hexadecimal is %x\n",value,value);
break;
}
case 6:
{
printf("Enter a hexadecimal value: ");
scanf("%s",input);
value = atoi(input);
printf("%x in octal is %o\n",value,value);
break;
}
case 7:
{
printf("SYSTEM IS EXITING......");
flag = TRUE;
break;
}
default:
printf("Invalid selection\n");
}
if(flag)
break;
}
getch();
return(0);
}
==========================
输入非法字符死循环是肯定的,因为C没有字符检查,可以自己写一个字符检查函数.快下班了,回去之后写一个.
==========================
偷懒用了了atoi函数,对于非法输入直接转0.
ptfyb
2008-04-10 · TA获得超过385个赞
知道答主
回答量:223
采纳率:0%
帮助的人:126万
展开全部
没有悬赏,我会也不给你说。呵呵。

你的这个程序跟本用不着break,直接结束就可以了。break是用来跳出本次循环的,比如:

while(i<10)
{
A
break;
B
}
先执行A,执行到break时,就直接转下一次循环,而不执行B。还有最常用的是和switch()一起用,如二楼,每一个case后必须加一个break以跳出switch语句。具体用法建议看看C语言的教程。

你把break改成exit(0)吧。还有顺便提醒一下,这么长的一串if改成switch比较好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd_knowledge
2008-04-10 · TA获得超过156个赞
知道答主
回答量:244
采纳率:0%
帮助的人:180万
展开全部
你可以改成switch(choice)
{
case 1:
....
break;
case2:
...
break;
....
...
default
break;
}

你根本就没循环,所以不用break;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blend985
2008-04-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:8407
采纳率:50%
帮助的人:3276万
展开全部
没有悬赏分,不干.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式