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有办法纠正吗?有则分就给你了。 展开
#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有办法纠正吗?有则分就给你了。 展开
4个回答
展开全部
#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.
#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.
展开全部
没有悬赏,我会也不给你说。呵呵。
你的这个程序跟本用不着break,直接结束就可以了。break是用来跳出本次循环的,比如:
while(i<10)
{
A
break;
B
}
先执行A,执行到break时,就直接转下一次循环,而不执行B。还有最常用的是和switch()一起用,如二楼,每一个case后必须加一个break以跳出switch语句。具体用法建议看看C语言的教程。
你把break改成exit(0)吧。还有顺便提醒一下,这么长的一串if改成switch比较好。
你的这个程序跟本用不着break,直接结束就可以了。break是用来跳出本次循环的,比如:
while(i<10)
{
A
break;
B
}
先执行A,执行到break时,就直接转下一次循环,而不执行B。还有最常用的是和switch()一起用,如二楼,每一个case后必须加一个break以跳出switch语句。具体用法建议看看C语言的教程。
你把break改成exit(0)吧。还有顺便提醒一下,这么长的一串if改成switch比较好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以改成switch(choice)
{
case 1:
....
break;
case2:
...
break;
....
...
default
break;
}
你根本就没循环,所以不用break;
{
case 1:
....
break;
case2:
...
break;
....
...
default
break;
}
你根本就没循环,所以不用break;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有悬赏分,不干.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询