c语言,哪位帮我解释一下这个程序!

来源:百度知道 编辑:UC知道 时间:2024/05/29 12:26:54
这个程序的功能是判断用户输入的字符的个数.
例如输入abcdefgz这七个字母,则会输出7这个数字,表示拥护输入了七个字符.
由于涉及ASCII码!搞得我很晕,看了半天没看懂!
麻烦版帮忙详细解释一下,谢了!

int x;
char i, ans;
ans='y';
do
{
x=0;
printf("\n请输入字符序列:");
fflush(stdin);
do{
i=getchar();
x++;
}while( i !='\n' );
printf("\n输入的字符数为:%d", --x);
printf("\n是否需要输入更多序列 (Y/N) ? ");
ans = getch();
}while(ans =='Y' || ans == 'y');

int x; //int 型变量x,对用户输入字符计数
char i, ans; //char 型变量i, 用于读取用户输入字符序列中的字符;char 型变量ans, 用于读取是否进行下次输入测试判断字符
ans='y'; //ans赋初值 'y'
do //do while 循环,执行循环体,最后判断输入字符为Y 或者 y的时候,继续循环,否则退出循环
{
x=0; //计数重新开始计数,x = 赋初值0
printf("\n请输入字符序列:");
fflush(stdin); //清除输入缓冲区,以免影响实际输入的字符序列
do{ //do while 循环,执行循环体,直到输入回车退出循环
i=getchar(); //读取当前输入字符
x++; //当前字符个数x = x + 1, 如果输入回车,x 在加1之后,退出循环
}while( i !='\n' ); //判断是否输入完毕(回车结束)
printf("\n输入的字符数为:%d", --x); //退出循环时,回车符也参与计数,所以减1才是实际字符序列长度
printf("\n是否需要输入更多序列 (Y/N) ? ");
ans = getch(); //读取字符,用于判断是否输入更多序列
}while(ans =='Y' || ans == 'y'); //如果输入字符 ans 为Y 或者 y 则继续进行下次循环,否则退出循环

这里是用来形成重复输入判断的一个算法。