C++语法基础回顾
循环结构
循环结构for; while; do while
循环与判断不同
flowchart
st=>start: if(判断条件)
e=>end:>
op1=>operation: 条件
cond=>condition: Yes or No?:
io=>inputoutput: ok
para=>parallel: end
st->op1->cond
cond(yes)->io->e
cond(no)->e
flowchart
st=>start: while(cricle条件)
e=>end:>
op1=>operation: judge条件
cond=>condition: Yes or No?:
io=>inputoutput: ok
para=>parallel: end
op2=>operation: situation
st->op1->cond
cond(yes)->io->op2->op1
cond(no)->e
flowchart
st=>start: do
e=>end:>
op1=>operation: context
cond=>condition: while(Yes or No?:)
io=>inputoutput: ok
para=>parallel: end
op2=>operation: situation
st->op1->cond
cond(yes)->io->op2->op1
cond(no)->e
while类似于下买票后上车
do while类似于先上车后买票
for循环不同
基本思想:把控制循环次数的变量从循环体中剥离
for(1-int-statemenr: 2-condition-5:4-expression)
{
3-statement
}
int-statement 可以是声明语句、表达式、空语句,一般用来初始化循环变量;
condition 是条件表达式,和while中的条件表达式作用一样;可以空,空语句表示true;
expression 一般负责修改循环变量,可以为空。
先前的执行循序是1-2-3-4,之后的顺序是3-4-5
while循环的特点
while(cin >>N && N ) //表示cin读到0或N=0时结束循环
while(cin>>N ,N)//逗号表达式,最后一个输出的是N,N不能为0
while(scanf("%d%d",A,N) != -1)//scanf输入也会有中止符EOF=-1 ,如果读到-1即循环结束
while(~scanf("%d%d", A, N))//~表示取反
while循环处了循环条件,可以加入其它
输入和逻辑判断的加入,与for循环似乎更加相似
习题回顾
1.726. 质数
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
cin >>n;
while(n--)
{
int x;
cin >>x;
bool is_prime = true;
for(int i = 2; i * i <= x; i++){
if(x % i ==0) is_prime = false;
}
if(is_prime) printf("%d is prime\n", x);
else printf("%d is not prime\n", x);
}
return 0;
}
该题是判断质数(偶数没差别),控制循环次数,循环结构调整为 i< x / i ,这里最大是i2 = x, 即只要循环到i即可;
对于质数x % i = 0即可;
对于偶数判断情况不同:
1.if( n % i != 0)
2 if(i != n / i & n / i < n) //;排除平方数以及n/i的另一个除数。
最后就是bool的运用,可以简便很多
2.716. 最大数和它的位置
#include<iostream>
using namespace std;
int main()
{
int max_value = 0;
int position = 0;
for(int i = 1; i<= 100; i++)
{
int a;
cin >>a;
if(a > max_value)
{
max_value = a;
position = i;
}
}
cout << max_value<<'\n'<<position<<endl;
return 0;
}//刚开始并没有想到要存储最大值,位置,需要在不断的判断过程中,找到最大值,找到位置(学习思路) 需要不断进行更新,替换。