noip第三弹 循环语句

本文探讨了noip中循环语句的使用,重点比较了for循环和while循环。作者倾向于使用while循环,并给出了两种循环的示例。通过具体的代码解释,展示了如何实现无限循环以及不同条件下的循环次数控制。

循环语句包括for循环和while循环。其中两个可以互相转换。(个人更推荐while循环)

while循环

最简单的while(1)即为无限循环

#include <iostream>
using namespace std;
int main(){
while(1){//其中在计算机中 1 即为真, 0 即为假。真就是做的意思,假就是不做的意思。
printf("hello world\n");
}
return 0;
}

输出为
hello world
hello world
hello world
hello world

然后还可以这样操作。

#include <iostream>
using namespace std;
int main(){
int i=0while(i<3){
printf("hello world\n");
i++;
}
return 0;
}

这就是循环三次:
当i=0的时候i<3成立,循环一次
当i=1的时候i<3成立,循环一次
当i=2的时候i<3成立,循环一次
当i=3的时候i<3不成立,退出循环
结束

其中括号内也可以加输入也就是输入一个数循环一次,再输入一个循环一次,例如

#include <iostream>
using namespace std;
int main(){
int i=0int a[10];
while(cin>>a[i]){
cout<<a[i]+1;
i++;
if(i>=3){
break;
}
}
return 0;
}

先介绍着三种


for循环

for 循环较为简单一点,就只有一种写法

#include <iostream>
using namespace std;
int main(){
int a[10];
for(int i=0;i<20;i++){//大多数时候用i,j,k作为临时的变量。
	cout<<"hello world";
}
return 0;
}

或者也可以在for外面声明i

#include <iostream>
using namespace std;
int main(){
int i;
int a[10];
for(i=0;i<10;i++){//大多数时候用i,j,k作为临时的变量。
	cout<<"hello world";
}
return 0;
}

如果你不需要终止,无限循环直到某种条件再结束循环时,可以写成

for(int i=0;;i++)

记住分号一定还是这么两个
如果你i每次加2或3或。。。时

int n=23;
for(int i=0;i<100;i+=n)

当你在循环内会加很奇怪的一些数,例如

#include <iostream>
using namespace std;
int main(){
int i;
int a[10]={1,2,45,23,1,56,3,7,254,25};
for(i=0;i<110;){
	i+=a[i%10];
}
return 0;
}

如果有哪里没看懂希望评论,感谢。。。

请根据题目编写分割代码的函数题目背景 NOIP2017 提高组 D1T2 题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序,于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。 A++语言的循环结构如下: F i x y 循环体 E 其中F i x y表示新建变量 i(变量 i 不可与未被销毁的变量重名)并初始化为 x, 然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环,否则不进入。每次循环结束后 i 都会被修改成 i+1,一旦 i 大于 y 终止循环。 x 和 y 可以是正整数(x 和 y 的大小关系不定)或变量 n。n 是一个表示数据规模的变量,在时间复杂度计算中需保留该变量而不能将其视为常数,该数远大于 100。 E 表示循环体结束。循环体结束时,这个循环体新建的变量也被销毁。 注:本题中为了书写方便,在描述复杂度时,使用大写英文字母 O 表示通常意义下 Θ 的概念。 输入格式 输入文件第一行一个正整数 t,表示有 t(t≤10)个程序需要计算时间复杂度。 每个程序我们只需抽取其中 F i x y 和 E 即可计算时间复杂度。注意:循环结构允许嵌套。 接下来每个程序的第一行包含一个正整数 L 和一个字符串,L 代表程序行数,字符串表示这个程序的复杂度,O(1) 表示常数复杂度,O(n^w) 表示复杂度为 n w ,其中 w 是一个小于 100 的正整数,输入保证复杂度只有 O(1) 和 O(n^w) 两种类型。 接下来 L 行代表程序中循环结构中的F i x y或者 E。 程序行若以F开头,表示进入一个循环,之后有空格分离的三个字符(串)i x y, 其中 i 是一个小写字母(保证不为n),表示新建的变量名,x 和 y 可能是正整数或 n ,已知若为正整数则一定小于 100。 程序行若以E开头,则表示循环体结束。 输出格式 输出文件共 t 行,对应输入的 t 个程序,每行输出 Yes 或 No 或者 ERR,若程序实际复杂度与输入给出的复杂度一致则输出 Yes,不一致则输出 No,若程序有语法错误(其中语法错误只有: ① F 和 E 不匹配 ②新建的变量与已经存在但未被销毁的变量重复两种情况),则输出 ERR。 注意:即使在程序不会执行的循环体中出现了语法错误也会编译错误,要输出 ERR。 输入输出样例 输入 #1复制 8 2 O(1) F i 1 1 E 2 O(n^1) F x 1 n E 1 O(1) F x 1 n 4 O(n^2) F x 5 n F y 10 n E E 4 O(n^2) F x 9 n E F y 2 n E 4 O(n^1) F x 9 n F y n 4 E E 4 O(1) F y n 4 F x 9 n E E 4 O(n^2) F x 1 n F x 1 10 E E 输出 #1复制 Yes Yes ERR Yes No Yes Yes ERR
最新发布
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值