分类：电脑/网络-程序设计-C/C++
问题：一个C程序的问题！#include&lt;stdio.h&gt; 
#include <std.h>#include <stdlib.h>int main(int argc, char *argv[]){  int a=10,b;char flang ;  printf("\n 绿灯亮，车等等先！");   do{ printf(" \n 输入:  ");       scanf("%c",&flang);       printf("\n****还要等%d秒****\n",--a);        if(a==0)break;      }whi#include <std.h>#include <stdlib.h>int main(int argc, char *argv[]){  int a=10,b;char flang ;  printf("\n 绿灯亮，车等等先！");   do{ printf(" \n 输入:  ");       scanf("%c",&flang);       printf("\n****还要等%d秒****\n",--a);        if(a==0)break;      }while(flang!=' ');     printf("\n 红灯亮，人等等！\n");  system("PAUSE");    return 0;}每次运行到        printf(" \n 输入:  ");       scanf("%c",&flang);       printf("\n****还要等%d秒****\n",--a);都会被执行两次，不知为什么。请知道的告诉我！谢谢！ 
回答：这个是因为你在Scanf那里要输入一个字符赋给flang。要回车，对不起这个回车被缓存给作为下次scanf的输入值，这就是为什么看上去执行两次。要对他不执行两次，一是选择其他的字符输入函数如getch()（这不回显）等，二，用条件控制回车键和Scanf的输入。反正有很多方法。
给一个改正：
头上加一个#include "string.h"
scanf("%c",&flang)==>flang=getchar();(输入一个字符就执行下一步，回车都省了，不专业的说话，呵呵。）