概述
7.c/c++程序员面试宝典-循环语句
在c、c++程序中,不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。例如依次输出一个数组的每一个成员的值,一组被重复执行的语句被称为循环体,循环体能否继续重复循环操作,要取决于循环的终止条件。如果没有达到循环的终止条件,循环就会一直执行。循环语句是由循环体及循环的终止条件两个部分组成的。
面试题61 for循环语句的计算顺序是什么****
面试题62 while循环与do-while循环有什么区别****
面试题63 典型循环语句*****
面试题64 break语句与continue语句有什么区别*****
面试题61 for循环语句的计算顺序是什么****
分析:for语句是c++中最常见的循环语句,也是在程序,特别是算法中经常用到的一种语句,编程者所了解的大部分排序算法就是通过for语句来实现的,它的语法形式如下:
for(initializer; condition; expression) //循环条件
{ statement}
在for语句的语法中,initializer是对每次循环过程中都要修改的变量进行初始化,或者赋给一个起始值。而condition语句是用来控制循环的。当condition为true时,循环执行statement。如果第一次求解condition就得false值,则不执行statement。它就是循环语句的终止条件。expression通常用于修改在initializer中初始化并在condition中检查的变量的值。它在每次循环迭代后都要求解。如果在第一次求解condition就得到false值的话,则不会执行expression语句。
一个使用for语句来实现数字排序的示例代码如下:
#include<cstdlib>
#include<iostream>
using namespace std;
int main()
{
int a[10];
int i,j,t; //定义基本变量和数组
cout<<"请输入10个需要排序的数字:"<<endl;
for(i=0;i<10;i++)
{cin>>a[i];}
cout>>endl;
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;}
}
}
cout<<"排序的结果是:"<<endl; //准备输出结果
for(i=0;i<10;i++)
{cout<<a[i]<<" ";} //循环输出排序结果
cout<<endl;
system("fause");
return EXIT_SUCCESS;
}
以上代码是通过for语句实现了一个冒泡排序,通过循环扫描数组,从第一个开始与后面的值进行比较,如果大于的话就两两互换,最终达到10个数字从小到大排列,并且循环扫描数组输出。冒泡排序是数字排序的最基础算法之一,在后面的算法章节中,会更多地介绍循环在排序算法中的重要作用。
注意:如果循环中需要修改的变量值不需要初始化或者已经初始化了,则可以省略initializer语句。
【答案】for语句的执行顺序是先从左至右执行循环条件语句,如果循环条件语句的判断语句为true,则在循环条件语句执行之后继续执行一次循环执行语句,然后再回到循环条件语句。如果循环语句判断条件为false,则停止循环。
面试题62 while循环与do-while循环有什么区别****
分析:当条件语句值为true时,while语句就反复循环执行语句。while语句的语法形式如下:
while(condition) //condition为循环条件
{statement}
如果条件condition的值为true,执行语句statement语句。当condition求解为false,则不再执行,退出循环。如果第一次求解condition就产生false值,则不执行statement。
do-while语句则会先执行一次执行语句,不论第一次求解condition是否产生false值,do-while语句的语法形式如下:
do
{
statement
}
while(condition) //condition为循环条件
一个使用while语句和do-while语句的示例代码如下:
#include<stdio.h>
void main()
{
int i,j,sum1,sum2;
i=1;
j=1;
sum1=0;
sum2=0;
while(i<101) //循环开始,计算1~100的和
{
sum1+=i;
i++;
}
printf("sum1=%dn",sum1); //输出计算结果
do
{
sum2+=i;
i++;
}
while(i<101); //注意这里的分号不可省略,while和do-while区别之一
printf("sum2=%dn",sum2);
}
一般来说,用while语句和do-while语句来处理同一问题时,如果二者的循环体是一样的,执行结果也会是一样的。但是如果while的条件语句一开始就为假的话,两者执行的结果就不一样了。
注意:通常,循环条件自身或者在循环体内必须做一些相关操作来更改循环条件表达式的值。否则,循环可能永远不会开始或者结束,不结束的循环就是死循环,它可能导致程序最终崩溃。
【答案】while循环与do-while循环的主要区别在于,如果循环条件语句为false,while语句不会执行循环,而do-while保证循环体执行一次。
面试题63 典型循环语句*****
分析:c、c++的典型循环语句包括for循环语句、while循环语句和do-while循环语句,在前面小节中已经做了相关地介绍。示例代码如下:
while循环:
int *source=arr1; //定义整型数组arr1
size_t i=sizeof(arr1)/sizeof(*arr1);
int *dest=new int[i];
while(source!=arr1+i) //while循环
{*dest++=*source++;}
for循环
for(a<string>::size_type ind=0;ind !=svec.size();++ind)
{
cout<<svec[ind];
if(ind+1 !=svec.size())
cout<<"";
}
do-while循环
string rsp;
do //至少会执行一次
{
cout<<"please enter two values:";
int val1,val2;
cin>>val1>>val2;
cout<<"the sum of"<<val1<<"and"<<val2
<<"="<<val1+val2<<"nn"
<<"more?[yes][no]";
cin>>rsp;
}
while(!rsp.empty() && rap[0]!='n');
【答案】c++典型循环语句包括for循环语句、while循环语句和do-while循环语句。其中for循环语句更多的用于需要遍历的情况,而while和do-while循环语句可以用于状态判断并且根据状态执行操作等。
面试题64 break语句与continue语句有什么区别*****
分析:break语句是用于结束最近的while、do while、for或switch语句,并将程序的执行顺序传递给紧接在结束语句之后的语句,示例代码如下:
vector<int>::iteracor iter=vec.begin();
while (iter!=vec.end())
{
if(value==*iter)
{
break; //跳出循环
}
else
{
++iter; //不跳出
}
}
if(iter!=vec.end()) //跳出后从这里开始执行
{... ...}
上面的代码在vector中循环搜索某个特殊值的第一次出现。一旦找到,则通过break退出循环。
continue语句可以让最近的循环语句的当次迭代提前结束。对于while和do while循环,会继续求解循环条件,如果没有达到循环终止条件则会继续执行循环执行语句。而对于for循环,程序则会继续求解for语句头中的expression表达式,示例代码如下:
string inBuf;
while(cin>>inBuf && !inBuf.empty()) //循环条件判断
{
if(inBuf[0] !='_') //嵌套条件判断
{continue;}
else
{... ...}
}
上面的循环每次从标准输入中读入一个单词,如果碰到以下划线开头的单词就进行处理,如果不是,终止当前循环,接着读取下一个单词。
【答案】continue语句只能出现在循环语句中,而break语句可以出现在switch语句中,continue语句不会退出循环,只会终止当次执行循环体并且进入下一次循环体的执行,break语句会退出循环语句。
最后
以上就是霸气台灯为你收集整理的7.c/c++程序员面试宝典-循环语句的全部内容,希望文章能够帮你解决7.c/c++程序员面试宝典-循环语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复