#include<stdio.h>
int main()
{
float a;
while(scanf("%f",&a)!=1)
{
printf("This is wrong!\n");
printf("Please enter another number,such as 2,45,99:\n");
scanf("%f",&a);
continue;
}
printf("%f",a);
return 0;
}
怎么改进使得while退出循环,不用GOTO!
我的目的是输出数字,不输出其他任何字符
抱歉我只有10分了,麻烦各位,谢谢
int main()
{
float a;
scanf("%f",&a);
while(a!=2&&a!=45&&a!=99)
{
printf("This is wrong!\n");
printf("Please enter another number,such as 2,45,99:\n");
scanf("%f",&a);
}
printf("%f",a);
return 0;
}
æ好æä½ çç®çåä¸ä¸ããã
追é®æçç®çæ¯è¾åºæ°åï¼ä¸è¾åºå ¶ä»ä»»ä½å符
追çç»ä¸ªè¾å ¥è¾åºçç
追é®è¾åºå°±æ¯ä¸é¢è¿å¼ å¾
æ é循ç¯ï¼
ææ³è¦çè¾åºæ¯1
é£ä¹è¾å
¥q,w,tå°±åºè¯¥è¿å
This is wrong!
Please enter another number,such as 2,45,99:
ç¶åéæ°è¾å
¥æ°çï¼ç´å°è¾å
¥çæ¯æ°åèéå
¶ä»å符
åªè¦è¾å ¥çæ¯æ°åçè¯ï¼å°±è¾åºæ°åç¶åç»æ¢ç¨åºå¯¹å
追é®å¯¹ï¼å°±æ¯å 为è¿ä¸ªææä¼ç¨å°scanfçè¿åå¼ï¼
ä½å¦æè¿æ ·ç¨äºå¨å¾ªç¯ééæ°è¾å
¥aå¼æä¹ä¸è½å½±åwhile使whileéåºå¾ªç¯ï¼
æ©ï¼é£è¾å ¥çç±»åå°±åºè¯¥æ¯å符类åäºï¼æå¸®ä½ æ³ä¸ä¸å
#include<stdio.h>int main()
{
char a;
scanf("%c",&a);
while(a<'0'||a>'9')
{
printf("This is wrong!\n");
printf("Please enter another number,such as 2,4,5:\n");
scanf("%c",&a);
}
printf("%c\n",a);
return 0;
}
åªè½æ¯0-9è¿10个æ°åï¼å 为æ¯å符类åçããã
åï¼ä¸æ¯è¿ä¸ªææï¼å¯è½æ¯æ表达ä¸æ¸
æ¥ï¼åºè¯¥æ¯æéè¦è¾å
¥çå°±æ¯intæ´åæ°åï¼ç¶åè¾å
¥å
¶ä»ä»»ä½å符æ符å·ä¼è¿å
This is wrong!
Please enter another number,such as 2,45,99:
ç´å°æè¾å
¥intæ´åæ°å为æ¢
ä½ è¾å ¥çæ¯ä½ ç¡®å®çæ°æ®ç±»åï¼ä½ å®ä¹äºintåçï¼ä½ è¾å ¥ä¸ä¸ªå符wè¯å®æ¥éçããã
追é®ååæç¹æ··ä¹±æéæ°è¯´æä¸ï¼
ææ³ç¨whileï¼scanfï¼"%f",&a)!=1)æ¥åé¤floatåï¼floatåæ¯ææ³è¦çå°±ç´æ¥printfäºï¼
ç¶åå®ç°å¨è¿ä¸ªå¾ªç¯ä¸ï¼è½è¿å
¥è¿ä¸ªå¾ªç¯çå°±æ¯å
¶ä»å符ï¼æ¯å¦ç©ºæ ¼ãa,b,e,tççï¼è¾åºä¸¤ä¸ªprintfå®ç°æ示ï¼ç¶åscanféæ°è¾å
¥ï¼å¦æä»ç¶æ¯å
¶ä»å符å继ç»å¾ªç¯ç´å°æ¯floatå为æ¢ã
æçé®é¢æ¯ï¼ä¸ºä»ä¹è¿éä¼é·å
¥æ é循ç¯ï¼è¿éåºè¯¥æä¹è±ç¦»æ é循ç¯ï¼
刚刚有点混乱我重新说明下:
我想用while(scanf("%f",&a)!=1)来剔除float型(float型是我想要的就直接printf了)
然后实现在这个循环中(能进入这个循环的就是其他字符,比如空格、a,b,e,t等等)输出两个printf实现提示,然后scanf重新输入,如果仍然是其他字符则继续循环直到是float型为止。
我的问题是:为什么这里会陷入无限循环,这里应该怎么脱离无限循环?
什么意思,那应该怎么改?
追答while(a!=1)
追问刚刚有点混乱我重新说明下:
我想用while(scanf("%f",&a)!=1)来剔除float型(float型是我想要的就直接printf了)
然后实现在这个循环中(能进入这个循环的就是其他字符,比如空格、a,b,e,t等等)输出两个printf实现提示,然后scanf重新输入,如果仍然是其他字符则继续循环直到是float型为止。
我的问题是:为什么这里会陷入无限循环,这里应该怎么脱离无限循环?
没大懂你啥意思,
当字符串做,大致这样,我没在编译器里做,你试试,可以实现:如果输入非数字就重新输入,输入数字才输出
for(int i=0;i'9')
{
printf("This is wrong!\n");
printf("Please enter another number,such as 2,45,99:\n");
p++;
for(int j=0;j<10000;j++)
scanf("%c",p);
continue;
}
就是我要输入数字,打印数字,遇到字符符号就进入循环,然后重新输入,直到遇到数字,再打印出数字,就这个意思