目录
一、循环语句——while语句
1、while语句
- 一般形式:先判断表达式,在执行循环体
- 注意:循环条件为真的时候执行循环语句,为假的时候跳出循环;
2、while语句例题:
- 《输出1——n之间的数》
- 《sum=1+2+3+……+100》必须初始化sum=0
#include<stdio.h> int main() { int i=1,sum=0; while(i<=100) { sum=sum+i; i++; } /* while(1) { if(i>100) break; sum+=i; i++; } */ printf("sum= %d\n",sum); return 0; }
- 《sum=1-2+3-4+……-100》
//sum=1-2+3-4+……-100 #include<stdio.h> int main() { int i=1,sum=0,t=1; while(i<=100) { sum=sum+t*i; i++; t=-t; } printf("sum= %d\n",sum); return 0; }
- 《sum=1+1/2+1/3+……+1/100》注意:常量、表达式不能进行自增,自减,实数可以做自增、自减;整型、实型变量都可以自增自减
- 《输出26个字母》
二、循环语句——do …… while语句(直到型循环)
1、概念
- 一般形式:先执行循环体,后判断表达式
- 执行过程:
- 执行循环体的语句;
- 计算循环控制表达式的值,如果表达式为真,则返回1
- 如果表达式值为假,则退出循环,执行循环后面的语句
- while后有分号
2、do……while语句例题:
- 《sum=1+2+3+……+100》
- 《输出26个字母》
三、循环语句——for 循环语句
1、概念:
- 一般形式:
- 表达式1:通常表示控制变量初始值
- 表达式2:循环条件
- 表达式3:改变控制变量的值
- 过程:
- 求解表达式1;
- 判断表达式2,2为真执行循环体语句,求解表达式3,判断表达式2;
- 2为假跳出循环
2、for 循环语句例题:
- 《输入正整数n,计算并输出n! 》,注意:阶乘递推公式: i!= (-1) !* i 在C语言中表示:k = k*i
- 《输入正整数n,计算并输出1~n之间所有数的阶乘》
四、三种循环体的区别:
1、循环次数已知,计数控制的循环,用for
2、循环次数未知,while 和 do……while
五、循环结构例题
- 《输入一个整数,计算所含数字的位数》
//输入一个整数,计算所含数字的位数 #include<stdio.h> void main() { int i,k=0; printf("请输入一个整数:"); scanf("%d",&i); do { i=i/10; k++; //计数器 }while(i!=0); printf("位数:%d\n",k); }
- ,《将一个正整数逆序输出》例如n=12345,输出5 4 3 2 1
#include<stdio.h> void main() { int x=12345,k; do { k=x%10; x=x/10; printf("%3d",k); }while(x!=0); }
- 《输入一个正整数n,输出n的逆序数》例如n=1234,则逆序数为4321
#include<stdio.h> void main() { int i=1234,k=0,x; do { x=i%10; i=i/10; k=k*10+x; }while(i!=0); printf("%3d\n",k); }
六、循环嵌套
1、类似
2、执行过程
- 外层循环执行一次,内层循环执行一圈
3、知识点:
- 嵌套的层次不能交叉
- 内外层嵌套循环变量不能重名,循环体内尽量可能不要用循环变量(内层不使用外层的变量)
- 并列结构的循环可以用相同循环变量
- 多条语句要使用复合语句
- 循环非常占用系统资源,嵌套一般不超过3层
- 缩进格式保持层次清晰
七、break 和 continue 语句
1、break 语句
- 作用:用于switch结构和循环结构
- 《//求1+2+3+……+直到和值首次大于10000为止》
//求1+2+3+……+直到和值首次大于10000为止 #include<stdio.h> void main() { int i=1,sum=0; while(1) { sum = sum+i; if(sum>10000) break; i++; } printf("最后一个i=%d\n",i); printf("sum=%d\n",sum); }
2、continue语句
-
作用:结束本次循环,开始下次循环
-
《输出100-200之间不能被3整除的数》
#include<stdio.h> void main() { int i; for(i=100;i<=200;i++) { if(i%3==0) continue; printf("%4d",i); //不执行这条语句 } }
3、知识点:
- break:
- 结束整个循环
- 可以用于switch 和循环语句
- continue:
- 只结束本次循环
- 只用于循环语句
- 出现在循环体中的 if 中
八、循环结构例题
1、简单循环结构例题:
1、《编程打印99乘法表》
#include<stdio.h>
void main()
{
int i,j,z;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++) //for(j=9;j>=i;j--)
printf("%d*%d=%d ",j,i,i*j);
printf("\n");
}
}
2、《***直角三角形123》
#include<stdio.h>
void main()
{
int i,k,n;
printf("请输入直角三角形的直角边边长:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(k=1;k<=i;k++)
printf("*");
printf("\n");
}
}
3、《直角三角形135》
#include<stdio.h>
void main()
{
int i,j,n;
printf("请输入直角三角形的直角边边长:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
4、《直角三角形》
将第一个大for{}循环里边的第二个for{}循环和第一个for{}位置颠倒一下,即可得到如上两个三角形
#include<stdio.h>
void main()
{
int i,k,j,n;
printf("请输入直角三角形的直角边边长:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=n-i+1;k++)
printf("*");
printf("\n");
}
}
5、《等腰三角形》
//等腰三角形
#include<stdio.h>
void main(){
int i,j,k,n;
printf("请输入等腰三角形的高n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i+1;k++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
6、《菱形》
//菱形
#include<stdio.h>
void main()
{
int i,j,k,n;
printf("请输入菱形的高n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=n-1;i>=1;i--)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}