第33节 三种循环语句

一.用while语句实现的程序

#include <stdio.h>
int main()
{
    
    
	int i=1, sum=0;
	while (i<=100)
	{
    
    
		sum += i;
		++i;
	}
	printf("%d\n", sum);
}

二.用do…while语句实现的程序

#include <stdio.h>
int main()
{
    
    
	int i = 1, sum = 0;
	do
	{
    
    
		sum += i;
		++i;
	} while (i <= 100);
	printf("%d\n", sum);
}

三.用for()语句实现的程序

#include <stdio.h>
int main()
{
    
    
	int i = 1, sum = 0;
	for (i = 0; i <= 100; ++i)
	{
    
    
		sum += i;
	}	
	printf("%d\n", sum);
}
运行结果:5050 结果正确
#include <stdio.h>
int main()
{
    
    
	int i = 1, sum = 0;
	for (i = 0; i <= 100; sum += i, ++i);
	printf("%d\n", sum);
}
运行结果:5050 结果正确
#include <stdio.h>
int main()
{
    
    
	int i = 1, sum = 0;
	for (i = 0; i <= 100; ++i, sum += i);
	//多加一次101,结果错误
	printf("%d\n", sum);
}
运行结果:5151 结果有错误

四.for语句使用技巧(不鼓励)

//(1)
int i=1,sum=0;
for(;i<=100;i++)
{
    
    
sum=sum+i;
}
//(2)
int i,sum=0;
for(i=1;;i++)
{
    
    
sum=sum+i;
if (i>=100)
break;
}
//(3)
int i,sum=0;
for(i=1;i<=100;)
{
    
    
sum=sum+i;
i++;
}
//(4)
int i=1,sum=0;
for(;i<=100;)
{
    
    
sum+=i;
i++;
}
//(5)
int i=1,sum=0;
for(;;)
{
    
    
sum=sum+i;
i++;
if(i>100) break;
}
//(6)
int i=1,sum=0;
for(i=1;i<=100;sum+=i,i++);
//(7)
int i=1,sum=0;
for(i=1;i<=100;sum+=i,i+=2);
//(8)
int sum = 0;
for (int i = 0; i <= 100; sum += i, ++i);

五.程序阅读

#include <stdio.h>
int main()
{
    
    
	char c1, c2;
	for (c1 = '0', c2 = '9'; c1 < c2; ++c1, --c2)
	{
    
    
		printf("%c %c\n", c1, c2);
	}
}
#include <stdio.h>
#include <windows.h>    //使用Sleep()函数必须包含windows.h,这种方法只适用于windows
int main()
{
    
    
    int i;
    for (i = 1; i <= 10; i++)
    {
    
    
        Sleep(200);   //等待200毫秒
        printf("■");
    }
    printf("\n");
    return 0;
}
#include <stdio.h>
#include <windows.h>    //使用Sleep()函数必须包含windows.h,这种方法只适用于windows
int main()
{
    
    
    int i;
    printf("安装进度:0%%");  //格式控制串中用%%表示输出一个%
    for (i = 1; i < 100; i++)
    {
    
    
        Sleep(100);
        if (i <= 10)
            printf("\b\b");  //\b表示将输出位置左移一位
        else
            printf("\b\b\b");
        printf("%d%%", i);
    }
    printf("\b\b\bdone!\n");
    return 0;
}

六.实践项目

1.三种循环语句,求1000以内所有偶数的和

#include <stdio.h>
int main()
{
    
    
	int i, sum = 0;
	for (i = 2; i < 1000; i += 2)
	{
    
    
		sum += i;
	}
	printf("%d\n", sum);
}
#include <stdio.h>
int main()
{
    
    
	int i=2, sum = 0;
	while (i<1000)
	{
    
    
		sum += i;
		i += 2;
	}
	printf("%d\n", sum);
}
#include <stdio.h>
int main()
{
    
    
	int i = 2, sum = 0;
	do
	{
    
    
		sum += i;
		i += 2;
	} while (i < 1000);
	printf("%d\n", sum);
}

2.输入n,求 n! 并输出

#include <stdio.h>
int main()
{
    
    
	int n, sum = 1;
	scanf_s("%d", &n);
	for (int i = 1; i <= n; ++i)
	{
    
    
		sum *= i;
	}
	printf("%d\n", sum);
}
本程序在输入的n过大时,会超出整型数据类型表达的范围,产生“溢出”

3.输出1000以内能被3整除且个位数为6的所有整数

解法1:好理解,循环次数多
#include <stdio.h>
int main()
{
    
    
	for (int i = 0; i < 1000; i++)
	{
    
    
		if (i % 3 == 0 && i % 10 == 6)
		printf("%d\n", i);
	}
}
解法2:更优代码,循环次数少
#include <stdio.h>
int main()
{
    
    
	int  i, j;
	for (i = 0; i < 100; i++) 
	{
    
    
		j = i * 10 + 6;
		if (j % 3 == 0)
			printf("%d\n", j); 
	}
}

4.编程序,输入10个整数,找出最大数

#include <stdio.h>
int main()
{
    
    
	int  k, x, max;
	scanf_s("%d", &x);
	max = x;                 
	for (k = 2; k <= 10; k++)  
	{
    
    
		scanf_s("%d", &x);
		if (x > max)        

			max = x;
	}
	printf("Max=%d\n", max);
}

猜你喜欢

转载自blog.csdn.net/m0_51439429/article/details/115190979