一、循环
1.while循环
格式:
while(条件)//条件成立 则执行花括号里面的语句 执行完后 再判断条件是否成立
{
语句;//循环体
}
(1)
例子:
#include<stdio.h>
int main()
{
int i=0;//循环变量i初始化为0
while(i<5)//判断能够进入循环的条件是i<5
{
printf("wa~~\n");
i++;//循环变量增长的幅度
}
return 0;
}
ctrl+c 强制结束当前程序
练习:打印输出26个字母 小写
#include<stdio.h>
int main()
{
int i=0;
while(i<26)
{
printf("%c ",'a'+i);
i++;
}
return 0;
}
练习:敲7
7 14 17 21 27 28 。。。
#include<stdio.h>
int main()
{
int i=1;
while(i<100)
{
if(i%7==0||i%10==7||i/10==7)//70 72
{
printf("%d ",i);
}
i++;
}
printf("\n");
return 0;
}
(2)求和
int x=0;
x = x+1;
x = x+2;
x = x+3;
x = x+4;
x = x+5;
....
x = x+100;
#include<stdio.h>
int main()
{
int x=0;//记录和
int i=0;
while(i<=100)
{
x = x+i;
i++;
}
printf("%d\n",x);
return 0;
}
例子:
#include<stdio.h>
int main()
{
system("clear");//清屏
printf("3\n");
sleep(1);//使程序睡眠1s
system("clear");
printf("2\n");
sleep(1);//使程序睡眠1s
system("clear");
printf("1\n");
sleep(1);//使程序睡眠1s
system("clear");
return 0;
}
练习:1分钟倒计时
#include<stdio.h>
int main()
{
system("clear");
int min=1,sec=0;
printf("%02d:%02d\n",min,sec);
sleep(1);
system("clear");
sec = 59;
min = 0;
while(sec>=0)
{
printf("%02d:%02d\n",min,sec);
sleep(1);
system("clear");
sec--;
}
return 0;
}
2.for循环语句
格式:
for(表达式1;表达式2;表达式3)
{
语句;//循环体
}
表达式1:循环变量赋值
表达式2:循环条件
表达式3:循环变量增长的幅度
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
printf("wa~~~\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=0;i<=100;i++)
{
sum = sum+i;
}
printf("%d\n",sum);
return 0;
}
练习:求和 1+3+5+7...+99
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=100;i+=2)
{
sum = sum+i;
}
printf("%d\n",sum);
return 0;
}
练习: 1-3+5-7+9-11+13-15....+101
#include<stdio.h>
方法1:
int main()
{
int sum1=0,sum2=0;
int i;
for(i=1;i<=101;i+=4)
{
sum1 = sum1 + i;
}
for(i=3;i<=101;i+=4)
{
sum2 = sum2+i;
}
printf("%d\n",sum1-sum2);
printf("%d %d\n",sum1,sum2);
return 0;
}
#include<stdio.h>
int main()
{
int i,sum=0;
int a=-1;//a记录正负
for(i=1;i<=101;i+=2)
{
a = a*(-1);//等价于a=-a
sum = sum+i*a;
}
return 0;
}
例子: 打印图形 每次只能打一个*
*****
*****
*****
for(i=0;i<3;i++)//行数
{
for(j=0;j<5;j++)//列数
{
printf("*");
}
}
练习 :
*
**
***
****
1 1
2 2
3 3
4 4
n n
#include<stdio.h>
int main()
{
int i,j;
int n;
printf("please input row:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)//hang
{
for(j=1;j<=i;j++)//Lie
{
printf("*");
}
printf("\n");
}
return 0;
}
练习:
*
***
*****
*******
1 1
2 3
3 5
4 7
* 2*hang-1
#include<stdio.h>
int main()
{
int i,j;
int n;
printf("please input row:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)//hang
{
for(j=1;j<=2*i-1;j++)//Lie
{
printf("*");
}
printf("\n");
}
return 0;
}
练习:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
1 0
2 1
3 2
4 3
....
#include<stdio.h>
int main()
{
int i,j,k;
int n;
printf("please input row:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)//hang
{
for(j=1;j<=i-1;j++)
{
printf(" ");
}
for(k=0;k<5;k++)
{
printf("* ");
}
printf("\n");
}
return 0;
}
3.continue
练习:1+2+3+。。+100 求和 能整除7的数 不计算在内
#include<stdio.h>
int main()
{
int i=1;
int sum=0;
for(i=1;i<=100;i++)
{
if(i%7!=0)
{
sum = sum+i;
}
}
printf("%d\n",sum);
return 0;
}
另一种做法:
#include<stdio.h>
int main()
{
int i=1;
int sum=0;
for(i=1;i<=100;i++)
{
if(i%7==0)
{
continue;//结束本次循环 直接进入下一次循环 执行i++
}
sum = sum+i;
}
printf("%d\n",sum);
return 0;
}
4.do-while
先执行 再判断
格式:
do
{
语句;//循环体
}while(条件);//分号必须加
如果条件为真 则执行下一轮循环 如果条件为假 则循环结束
主要应用:输入的错误处理 输入冗错
#include<stdio.h>
int main()
{
int a;
do
{
scanf("%d",&a);
}while(a<0||a>10);// 0=<a<=10
return 0;
}
例子:
求和
#include<stdio.h>
int main()
{
int i=0;
int sum=0;
do
{
sum = sum+i;
i++;
}while(i<=100);
printf("%d\n",sum);
return 0;
}
5.无限循环
(1)
while(1)
{
;
}
(2)
for(;;;)
{
}
结束无限循环:ctrl+c
6.break
int main()
{
int i=1;
int sum=0;
for(i=1;i<=100;i++)
{
if(i%7==0)
{
break;//跳出本层循环
}
sum = sum+i;
}
printf("%d\n",sum);
return 0;
}
break:跳出循环或switch语句 break只能用于循环及switch语句
continue:结束本次循环 进入下次循环 不跳出循环
return :结束函数
练习:计算1元人民币兑换成1分 2分 5分的不同兑换方法 输出方法总数
#include<stdio.h>
int main()
{
int one,two,five,count=0;
for(one=0;one<=100;one++)
{
for(two=0;two<=50;two++)
{
for(five=0;five<=20;five++)
{
if(1*one+2*two+5*five==100)
{
count++;
}
}
}
}
printf("%d\n",count);
return 0;
}
练习:
在三位数100-999 中 找到水仙花数
407=4*4*4+0*0*0+7*7*7
153=1*1*1+5*5*5+3*3*3;
153
个位:153%10-->3
十位:153/10 -->15 15%10-->5
百位:153/100-->1
#include<stdio.h>
int main()
{
int x,y,z;
int i;
for(i=100;i<1000;i++)
{
x= i/100;
y = i/10%10;
z = i%10;
if(i==x*x*x+y*y*y+z*z*z)
{
printf("%d\n",i);
}
}
return 0;
}
作业:
1.实现奔跑的H
1 0
2 1
3 2
#include<stdio.h>
int main()
{
system("clear");
int i=0,j;
while(i<20)
{
for(j=0;j<i-1;j++)
{
printf(" ");
}
printf("H\n");
sleep(1);
system("clear");
i++;
}
return 0;
}
升级:小人 跑
O
<H>
I I
#include<stdio.h>
int main()
{
int i,j;
for(i=0;i<=20;i++)
{
for(j=0;j<i-1;j++)
{
printf(" ");
}
printf(" O\n");
for(j=0;j<i-1;j++)
{
printf(" ");
}
printf("<H>\n");
for(j=0;j<i-1;j++)
{
printf(" ");
}
printf("I I\n");
sleep(1);
system("clear");
// while(1);
}
}
2.
*
***
*****
*******
1 1
2 3
3 5
4 7
* 2*i-1
1 3
2 2
3 1
4 0
空格 4-i
#include<stdio.h>
int main()
{
int i,j,k;
int n;
printf("please input row:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<n-i;j++)
{
printf(" ");
}
for(k=0;k<2*i-1;k++)
{
printf("*");
}
printf("\n");
}
return 0;
}