C语言程序没完就退出了,帮我看一下?

来源:百度知道 编辑:UC知道 时间:2024/06/25 02:58:37
帮我看一下这个程序,选择完区域后,比如按1,就出现“对不起,您所选的区域已经满了,是否选择别的区域”,同时也出现了“press any key to continue”这句话,这时无论选择y还是n,都退出了。几位帮我看看该怎么改?
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a[10]={1,1,1,1,1,0,1,1,0,0};
int j,k=-1,choice;
char ans;
printf(" 1--for smoking \n");
printf(" 2--for nonsmoking \n");
printf(" 请输入您要的区域: [1-2]");
scanf("%d",&choice);
if (choice==1) k=0;
else if(choice==2) k=5;
for(j=k;j<k+5;j++)
if(a[j]==0)
{
if(k==0)
printf("您的位置是吸烟区%d号\n",j+1);
else
printf("您的位置是无烟区%d号\n",j+1);
a[j]=1;
exit(0);
}
if(choice==1||choice==2)
{
printf("对不起,您所选的区域已经满了,是否选择别的区域?[y/n]\n");
scanf("%c",&ans);
if(ans=='y')
{
if(a[j]==0)
{
if(j<=4) printf("您的位置是吸烟区%d号\

输入完1后,由于按了回车,回车留在输入缓冲区了,后来被scanf("%c",&ans); 给获取到了
所以。。。

修改如下,添加一句:
#include <iostream>
#include<string>
//#include<vector>
using namespace std;

#include <stdio.h>
#include <stdlib.h>
void main()
{
int a[10]={1,1,1,1,1,0,1,1,0,0};
int j,k=-1,choice;
char ans;
printf(" 1--for smoking \n");
printf(" 2--for nonsmoking \n");
printf(" 请输入您要的区域: [1-2]");
scanf("%d",&choice);
fflush(stdin);///////////////清空一下输入缓冲区
if (choice==1) k=0;
else if(choice==2) k=5;
for(j=k;j<k+5;j++)
if(a[j]==0)
{
if(k==0)
printf("您的位置是吸烟区%d号\n",j+1);
else
printf("您的位置是无烟区%d号\n",j+1);
a[j]=1;
exit(0);
}
if(choice==1||choice==2)
{
printf("对不起,您所选的区域已经满了,是否选择别的区域?[y/n]\n");
scan