(3)引入循环机制
C语言中可以使用while循环,语法格式如下:
while(条件){
语句块
}
或者使用do...while循环,语法格式如下:
do{
语句块
}while (条件)
通过循环,在玩家输入错误数字的情况下,给玩家重新输入的机会,而不是直接退出程序。
dp@dp:~/cquick % cat guessnum.c
#include <stdio.h>
int main(){
int mynum;
int ispass=0;
while (!ispass){
printf("你好,请输入一个数字:");
scanf("%d",&mynum);
if (mynum>500 ||mynum<1){
ispass=0;
printf("数字仅限于1-500之间,请重新运行本程序!\n");
}
else{
ispass=1;
printf("\n你输入的数字是:%d\n",mynum);
}
}
}
编译并运行:
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,请输入一个数字:1234
数字仅限于1-500之间,请重新运行本程序!
你好,请输入一个数字:-12
数字仅限于1-500之间,请重新运行本程序!
你好,请输入一个数字:88
你输入的数字是:88
上述程序中的while的条件中使用了“!”,它表示逻辑非。
上述程序中的while的条件中使用了“!”,它表示逻辑非。
也可以用do...while来实现它:
#include <stdio.h>
int main(){
int mynum;
int ispass=0;
do{
printf("你好,请输入一个数字:");
scanf("%d",&mynum);
if (mynum>500 ||mynum<1){
ispass=0;
printf("数字仅限于1-500之间,请重新运行本程序!\n");
}
else{
ispass=1;
printf("\n你输入的数字是:%d\n",mynum);
}
} while (!ispass);
}
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,请输入一个数字:8889
数字仅限于1-500之间,请重新运行本程序!
你好,请输入一个数字:12
你输入的数字是:12
观察上面2个程序可看出,使用了ispass这个变量做为是否退出循环的依据,也可以不使用ispass,直接通过break语句退出循环(注意,只能退出break语句本身所在的那层循环),
#include <stdio.h>
int main(){
int mynum;
int ispass=0;
while(1){
printf("你好,请输入一个数字:");
scanf("%d",&mynum);
if (mynum>500 ||mynum<1){
printf("数字仅限于1-500之间,请重新运行本程序!\n");
}
else{
printf("\n你输入的数字是:%d\n",mynum);
break;
}
}
}
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,请输入一个数字:8788
数字仅限于1-500之间,请重新运行本程序!
你好,请输入一个数字:66
你输入的数字是:66
dp@dp:~/cquick %