【C语言基础03】while语句的定义、使用、功能、例子、注意事项

1.while语句


while语句用来构成当型循环,多用于解决循环次数事先不确定的问题。形式:

    while(表达式)

        {

            循环体

        }

功能:先判断表达式值的真假,若为真(非零)时,就执行循环体;否则,退出循环结构。

结构:

① 从何处来  ② 到何处去  ③ 如何修改循环变量  ④ 在条件满足情况下做什么事情;

循环的初始值+循环条件+循环体+循环变量的增量+具有唯一真值的表达式

流程:如图所示

注意:

  • while语句中的表达式一般是关系表达式或逻辑表达,也可以是数值表达式或字符表达式,只要其值为真(非0)即可继续执行循环体

  • 循环体语句可以为任意类型,循环体如果包含一个以上的语句,应该用花括号起来,以复合语句的形式出现。如果不用花括号,则while语句的范围只到while后面第一个分号处。

  • 在循环体中应该有使循环趋向于结束的语句,以避免死循环

  • 允许while语句的循环体中包含另一个while语句,从而形成循环的嵌套

例1:输入一行字符,按字母、数字、和其他分成三类,分别统计各类字符的数目('\n’)不在统计范围内。

3个整型变量,为其统计各自数目的计算器

int a,   //字母

int b,   //数字

int c    //其它

算法分析:

    ① 将各位计数器变量值置为0;

    ② 读入字符

    ③ 检查c是否换行符,如果不是,则检查c符合哪种字符条件,并将相应计数器变量的值加1,然后转步骤③循环;如果c是换行符,则结束循环,转为步骤⑤

    ④ 输出结果

#include "stdio.h"
main()
{
	printf("请输入一行字符:\n");
	char c; 
	int a=0,b=0,d=0;
	while((c=getchar())!='\n')
	{
		if(c>='a'&&c<='z'||c>'A'&&c<'Z')
		{
			a++;
		}
		else
		{
			if(c>='0'&&c<='9')
			{
				b++;
			}
			else
			{
				d++;
			}
		}
	}
	printf("字母有:%d\n",a); 
	printf("数字有:%d\n",b);
	printf("符号有:%d\n",d);
	return 0;
}

 例2:输入一正文,统计正文包含的行数、字数、字符数

算法分析:

(1)将标志位state置为初值0,表示字符不在子字,各计数器变量均为0;

(2)读一个字符c,如果不是EOF,则进行:

    ① 字符数+1;

    ② 若c是行数则行数+1;

    ③ 若c是空格符、换行符、制表符,则将标志置为0,表示c字符不在字中;若c为非空白符,如果标志位为0(表示c是字符的第一个字符)则将字数+1,并修改标志位为1(表示当前字符c是一个字中的字符)

    ④ 循环步骤2

    ⑤ 如果c是EOF,则循环结束,转步骤3

(3)输出结果

#include "stdio.h"
#define IN 1
#define OUT 0
main()
{
	int c,nl,nw,nc,state;   //nc:字符数   nl:行数  //nw:字数 
	state=OUT;
	nl=nw=nc=0;
	printf("请输入内容并以ctrl+z为结束:\n");
	while((c=getchar())!=EOF)   //不等于-1,即为真
	{
		++nc;
		if(c=='\n')
		{
			++nl;
		}
		if(c=='\t'||c==' '||c=='\n')
		{
			state=OUT;
		}
		else
		{
			if(state==OUT)
			{
				state=IN;
				++nw;
			}
		}
	} 
	printf("字符数:%d\n",nc);
	printf("行  数:%d\n",nl);
	printf("字  数:%d\n",nw);
	return 0; 
}
发布了11 篇原创文章 · 获赞 13 · 访问量 1810

猜你喜欢

转载自blog.csdn.net/qq_42603841/article/details/97567053