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

2025年03月24日 18:26
有4个网友回答
网友(1):

#include
#include

#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.

网友(2):

没有悬赏,我会也不给你说。呵呵。

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

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

你把break改成exit(0)吧。还有顺便提醒一下,这么长的一串if改成switch比较好。

网友(3):

你可以改成switch(choice)
{
case 1:
....
break;
case2:
...
break;
....
...
default
break;
}

你根本就没循环,所以不用break;

网友(4):

没有悬赏分,不干.