这个红SP题过水,入门coders可自行食用!
老规矩,先看题目。
显然题目不难理解,就是让我们在看到42之前,输出所有输入的数字。
这题我们讲解两种做法:一个是递归,一个是while的不断输入用法!
代码
一、递归法
(注释版)
1 #include<bits/stdc++.h>//万能头文件 2 using namespace std; 3 int main(){//好习惯,程序从主函数读起 4 int a; 5 cin>>a; 6 if(a!=42) cout<<a<<endl,main();//当a不等于42时,输出a,并无限次递归调用主函数 7 return 0;//返回值0,程序正常退出 8 }
(无注释版)
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int a; 5 cin>>a; 6 if(a!=42) cout<<a<<endl,main(); 7 return 0; 8 }
二、while输入法
(注释版)
1 #include<bits/stdc++.h>//万能头文件 2 using namespace std; 3 int main(){//好习惯,程序从主函数读起 4 int a; 5 while(cin>>a,a!=42) 6 /*while(cin>>a)表示不断输入a,直到程序结束即EOF(End of File) 7 其中用逗号连接两个不同表达式,类似于逻辑且&&*/ 8 cout<<a<<endl; 9 return 0; 10 }
(无注释版)
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int a; 5 while(cin>>a,a!=42) 6 cout<<a<<endl; 7 return 0; 8 }
总结
1. 不断递归调用main(或其他函数)能达到反复执行一内容的效果。
2. while(cin>>a): 不断输入 aa 直至无可读取信息。
3. while( , ): 用逗号表达式连接不同的表达式,类似于逻辑且&&。