C语言学习笔记之(while和do-while循环)

一、while循环

1.语言格式

while(条件)
    循环语句;
	循环语句;

2.其他格式

while(1)	#当条件永远为真时,就会一直循环下去,这也就是死循环
    循环语句;
	循环语句;

3.例子:输入整数n的值,求S=1+2+3+…+n的值。

#include <stdio.h>
int main()
{
       int i,n,S;				 /*定义变量*/
       printf("请输入n的值:");                               /*输出提示语*/
       scanf("%d",&n);			 /*输入n的值*/
       i=1;					 /*给i赋初值*/
       S=0;				 /*给S赋初值*/
       while(i<=n)				 /*循环,当i>n时结束*/
       {
	S+=i;				 /*求和,将结果放入S中*/
	i++;				 /*循环控制变量i加1*/
       }
       printf("S=%d\n",S);		                /*输出S的值*/
       return 0;
}

4.使用while语句输入一串字符,以“#”结束,输出其中小写字母个数、大写字母个数以及数字个数。

#include <stdio.h>
int main()
{
        char c;
        int num1=0,num2=0,num3=0;;
        printf("请输入一串字符以“#”结束:");
        scanf("%c",&c);						/*输入一个字符*/
        while(c!='#')							/*当输入#时,退出循环*/
        {								/*开始循环*/
          if(c>='a'&&c<='z')					/*如果是小写字母num1加1*/
	    num1++;
          else if(c>='A'&&c<='Z')				/*如果是大写字母num2加1*/
	    num2++;
          else if(c>='0'&&c<='9')				/*如果是数字num3加1*/
	    num3++;
          scanf("%c",&c);					/*输入一个字符*/
     }
     printf("小写字母:%d个\n大写字母%d个\n数字%d个\n",num1,num2,num3);
     return 0;
}

二、do-while循环

1.语句格式

do
	循环语句;
	循环语句;
while(条件);	/*注意这里有结束符*/

2.其他格式

do
	循环语句;
	循环语句;
while(1);	/*注意这里有结束符*/ /*当条件永远为真时就是死循环*/

3.例子:用do-while语句求S=1+2+3+…+n的值。

#include <stdio.h>
int main()
{
         int i,n,S;				      /*定义变量*/
         printf("请输入n的值:");	                     /*输出提示语*/
         scanf("%d",&n);			      /*输入n的值*/
         i=1;				      /*给i赋初值*/
         S=0;				      /*给S赋初值*/
         do					      /*开始循环*/
         {
	  S+=i;				      /*求和*/
	  i++;				      /*循环控制变量i加1*/
        }while(i<=n);				      /*当i>n时结束*/
        printf("S=%d\n",S);		                     /*输出S的值*/
        return 0;
}

4.例子:用do-while语句输入一串字符,以“#”结束,输出其中小写字母个数、大写字母个数以及数字个数。

#include <stdio.h>
int main()
{
       char c;
       int num1=0,num2=0,num3=0;;
       printf("请输入一串字符以“#”结束:");
       do{							/*开始循环*/
	scanf("%c",&c);					/*输入一个字符*/
	if(c>='a'&&c<='z')					/*如果是小写字母num1加1*/
                      num1++;
	else if(c>='A'&&c<='Z')				/*如果是大写字母num2加1*/
	        num2++;
	else if(c>='0'&&c<='9')				/*如果是数字num3加1*/
	        num3++;
       }while(c!='#');					/*当输入#时,退出循环*/
       printf("小写字母:%d个\n大写字母%d个\n数字%d个\n",num1,num2,num3);
       return 0;
}

三、while和do-while的区别

特性whiledo-while
判断时机先判断条件,再执行循环体先执行循环体,再判断条件
最少执行次数可能 0 次至少 1 次
语法while (条件) 语句;do 语句; while (条件);
结尾分号不需要特殊分号while(条件); 末尾必须有分号
适用场景循环可能一次都不执行循环至少执行一次,如输入校验、菜单