首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于循环语句while的有关问题

2013-04-20 
关于循环语句while的问题#includestdio.hint main(){char a,b,c,kint choice,i1char ch[]{你所得积

关于循环语句while的问题

#include<stdio.h>

int main()
{
char a,b,c,k;
int choice,i=1;
char ch[]={"你所得积分:"};

FILE *fb;
int x;
if((fb=fopen("D:\\积分文本.txt","a+"))==NULL)
{
printf("cannot open file\n");

}
printf("============2013 上半学期 自主学习系统=================\n");

printf("============    积分细则    ==============\n");


printf("a-------------------背诵英语单词50个(5分)\t 如果超额完成任务,加10分\n");
printf("b-------------------学习C语言一小时(3分)\n");
printf("c-------------------上机实验一小时(3分)\n");

while(i==1)
{
printf("请选择:");
scanf("%c",&k);

switch(k)
{
case 'a':
printf("请完成任务...");
x=5;
break;
case 'b':
printf("请完成任务...");
x=3;
break;

case 'c':
printf("请完成任务...");
x=3;
break;
}

printf("你完成任务了吗?");
scanf("%d",&choice);



if(choice==1)
{
fprintf(fb,"%s",ch);
fprintf(fb,"%4d",x);
fprintf(fb,"\n");

}
else
printf("请完成任务!!\n");

printf("是否要继续学习?\n");
scanf("%d",&i);
}

printf("学习结束!\n");
fclose(fb);

return 0;


}



问题:
     第一次运行的时候,一切正常;
     当选择继续学习的时候,编译器同时运行了“请选择”“是否继续学习”这两条语句,导致不能正常运行程序! 求解释,希望提供问题解决办法!谢谢! C
[解决办法]
感觉是缓冲问题。在获得输入后,把输入缓冲清一下。
实现:在 scanf()后面,fflush()一下。
[解决办法]
switch(){

default:...........break; 除了abc还处理其他情况
}

printf("1:完成了 0:未完成.\n");
scanf("%d",&choice);

printf("是否要继续学习?\n");
printf("1:完成了 0:未完成.\n");
scanf("%d",&i);

两个scanf若读取失败直接会导致下面的读取混乱,应该修改完整
[解决办法]
刷新一下输入缓冲
[解决办法]
不用刷缓冲这么麻烦
这里不需要读取回车空格这样的数据 
那么 这样改就够了

        printf("请选择:");
        scanf("%c",&k);
////////////////////////////////////////////////////
        printf("请选择:");
        scanf(" %c",&k);//注意在%前面加一个空格

热点排行