1.1 for语句
框架
for(变量初始化;循环运行条件;变量增值)
语句;
或者
for(变量初始化;循环运行条件;变量增值)
{
语句1;
语句2;
语句3;
......
}
提醒:
括号内多语句时要加括号。
例题:
1.输入一个数n,请判断n是否为质数,是的话输出YES,否的话输出NO。
本题的思路为从2一直到n的二次根,判断n是否整除变量i,如果整除了
输出YES,再结束程序,如果一直没有结束,输出NO。然而,1却需要特殊处
理。//1不是质数
你们最爱的代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,n;
cin>>n;
if(n==1)
{
cout<<"NO";
return 0;
}
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
{
cout<<"NO";
return 0;
}
cout<<"YES";
return 0;
}
1.2 while语句
框架
while(循环运行条件)
语句;
或者
while(循环运行条件)
{
语句1;
语句2;
语句3;
......
}
提醒:
如同for,要加括号。
例题:
1.输入2个正整数m、n,输出他们的最小公约数。
本题可以用两种思路:
1.直接枚举,从1一直枚举到min(m,n),判断。
2.使用欧几里得算法(辗转相除),直到为0为止。
代码1(枚举,不推荐):
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int m,n,i=0,t;
cin>>m>>n;
i=min(m,n)-1;
while(i>0)
{
i--;
if(m%i==0&&n%i==0)
{
t=i;
break;
}
}
cout<<n;
return 0;
}
代码2(欧几里得算法):
#include<iostream>
using namespace std;
int main()
{
int m,n,r;
cin>>m>>n;
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
cout<<n;
return 0;
}
1.3 do while语句
框架
do 语句;while(循环运行条件);
或者
do
{
语句1;
语句2;
语句3;
......
}while(循环运行条件);
提醒:
1.do while与while的最大区别是一个是先运行再判断,一个是先判断再运行。所以while可以0次循环,do while至少循环1次。(除开强制跳出)
例题:
1.输入正整数n,求n的各位数字之和。
思路:可以用do while不断进行累加n%10,再将n/10;
简洁的小代码:
#include<iostream>
using namespace std;
int main()
{
int n,t=0;
cin>>n;
do
{
t+=n%10;
n/=10;
}while(n!=0);
cout<<t;
return 0;
}