一.for循环
1.1基本格式:
for(表达式1;表达式2;表达式3)
{
语句块;
}
表达式1:循环变量赋初值
表达式2:终止条件
表达式3:增值或减值
1.2执行顺序:
先执行表达式1,判断表达式2是否成立
成立:进入循环,执行代码块,再执行表达式3,再判断表达式2是否成立
不成立:循环结束
1.3练习:打印所有三位数之间的水仙花数:153==1^3+5^3+3^3
1.先获得所有三位小数 2.判断条件
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=0,b=0,c=0;
for(int i=100;i<1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
return 0;
}
1.4变形
for(i=1;i<5;i++)
{
printf("%d\n",i);
}
printf("i:%d\n",i); //i=5
2.
for(;i<5;i++)
{
printf("%d\n",i);
}
3.
int i=1;
for(;i<5;)
{
printf("%d\n",i);
i++;
}
4.for
1.5嵌套结构
{
for(int j=0;j<3;j++)
{
printf("%d %d\n",i,j);
}
}
练习:1.打印九九乘法表
#include<stdio.h>
int main(int argc, char const *argv[])
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
putchar(10);
}
}
%m.n m:位宽 .n保留n位小数
2.练习:终端输入行数:5
**** 1空格
*** 2空格
** 3
*4
#include<stdio.h>
int main(int argc, char const *argv[])
{int a=0;
printf("qingshuruhanshu:\n");
scanf("%d",&a);
for (int i=a;i>0;i--)
{
for (int j=0;j<a-i;j++)
{
printf(" ");
}
for (int k=0;k<i;k++)
{
printf("*");
}
printf("\n");
}
}
二.while循环
2.1基本结构:
while(终止条件)
{
语句块;
增值或减值;
}
三.do-while
3.1基本结构:
{
代码段;
} while (终止条件);
四.while和do_while区别:
do_while 先执行一次代码段,再判断条件是否成立
while 先判断条件是否成立,再运行代码段
五.循环控制语句
continue 结束本层本次循环,继续下一次循环
return 0 结束整个程序
六.课后练习
即12321是回文数,个位与万位相同,十位与千位相同。
#include <stdio.h>
int main(int argc, char const *argv[])
{
while(1)
{
int num;
printf("shuruyigewuweishu:");
scanf("%d",&num);
getchar();
if(num==0)
{
break;
}
else if(num%10==num/10000&&num/10%10==num/1000%10)
{
printf("huiwenshu:%d\n",num);
}
else
{
printf("bushihuiwenshu:%d\n",num);
}
}
return 0;
}
2.写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 op data2 的值.其中op可以为+、-、*、/四个符号中的任一种(用switch语句实现)
#include <stdio.h>
int main(int argc, char const *argv[])
{
int data1=0,data2=0;
char op=' ';
int a=0;
printf("shuru:\n");
scanf("%d%c%d",&data1,&op,&data2);
switch (op)
{
case('+'):
a=data1+data2;
break;
case('-'):
a=data1-data2;
break;
case('*'):
a=data1*data2;
break;
case('/'):
a=data1/data2;
break;
default:
printf("cuo\n");
break;
}
printf("%d\n",a);
return 0;
}
思路:将输入的两个数a,b中小的数a,依次加1,加到b的值,每次循环判断这个数a是否为偶数,是则累加到sum中
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=0,b=0,c=0;
int sum=0;
printf("ab:\n");
scanf("%d %d",&a,&b);
if(a>b)
{
c=a;a=b;b=c;
}
for(a;a<=b;a++)
{
if(a%2==0)
{
sum=sum+a;
}
}
printf("%d\n",sum);
return 0;
}