每当您输入一些数据后都要按下回车键,表示输入完成。但是回车也会带来不便,如下列程序:
程序的目的是猜guess的值是多少。
#include <stdio.h>
int main(void)
{
char response;
char guess = 1; /*输入您要猜的数字*/
clrscr();
printf("从1到100中选择一个整数,看是不是guess.\n");
printf("假如正确就输入字母y,假如错误就输入字母n.\n");
printf("Guess 是 %d.\n",guess);
while((response = getchar ()) != 'y')
printf("那么,guess 是 %d?\n",++guess);
printf("就是它!\n");
getch();
return 0;
}
输入的过程如图1。
可见在每次输入n时都进行两次猜测,其中程序读n是第一次否定,读[enter]是第二次否定。
所以对上面的程序做如下修改。
#include <stdio.h>
int main(void)
{
char response;
char guess = 1; /*输入您要猜的数字*/
clrscr();
printf("从1到100中选择一个整数,看是不是guess.\n");
printf("假如正确就输入字母y,假如错误就输入字母n.\n");
printf("Guess 是 %d.\n",guess);
while((response = getchar ()) != 'y')
{
printf("那么,guess 是 %d?\n",++guess);
while(getchar() != '\n') continue; /*跳过输入行的其它部分*/
}
printf("就是它!\n");
getch();
return 0;
}
输入的过程如图2。
内循环除了处理[enter]以外,还能处理诸如no或no way这样的响应。
但他把f的意义看作与n相同,这与您的提示"假如正确就输入字母y,假如错误就输入字母n."有些不同。
为了解决这一缺点,我们用if语句来改进,修改如下:
#include <stdio.h>
int main(void)
{
char response;
char guess = 1; /*输入您要猜的数字*/
clrscr();
printf("从1到100中选择一个整数,看是不是guess.\n");
printf("假如正确就输入字母y,假如错误就输入字母n.\n");
printf("Guess 是 %d.\n",guess);
while((response = getchar ()) != 'y')
{
if('n' == response)
printf("那么,guess 是 %d?\n",++guess);
else
printf("对不起,假如正确就输入字母y,假如错误就输入字母n.\n");
while(getchar() != '\n') continue; /*跳过输入行的其它部分*/
}
printf("就是它!\n");
getch();
return 0;
}
输入的过程如图3。
可见编写交互式程式,应该试着去处理用户可能的输入,以使程序达到预期的目的。
同时要向用户提供清楚的提示。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |