C++基础语法:while的使用

前言

      "打牢基础,万事不愁" .C++的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结.

引入

        while的使用是编写代码的基础内容.笔者的记忆力已不如以前,最近遇到了还花了不少功夫,可见是掌握地不够牢固.所以对while的思路和内容做一个归纳,便于以后使用.当然最重要的还是在思路的推导和总结.

while的概览

        while指的是条件循环.即:满足条件在代码块中反复执行,条件不满足则退出. 

        代码格式:

        while(循环条件){        //while的代码块
                语句1;
                语句2;
        }                

        使用while的重点有两个,他们都围绕着while的条件

        1.循环条件的描述                        2.退出循环的条件

        循环条件

        while后跟着的循环条件,是一个返回值为bool类型的表达式.

        例如:        true;                     //bool类型值,可以做表达式

                        a>b;                     //比较表达式,返回值是bool类型

                        ac         //逻辑表达式,返回值是bool类型

                         cin>>a;              //输入语句,他的返回值也是bool类型;成功执行返回true,否则false

        退出循环条件

        如果没有退出循环条件,那么只能是无限循环,这通常是不想被看见的情况

//无限循环1
while(true){
    cout<<"hello"<1){
    cout<<"hello"<

        因此可以作出推导:循环条件中有变量,当变量等于某个值,表达式值为false,退出循环

while的几种应用

        有时候编码内容文字不好表达,简单给个概念,用实际代码来说明.

        1>while遍历字符串

/*while遍历字符串*/
	char p[] = "hello";
	char* pt = p;
	int n = 1;
	while (*pt) {
		cout << "第"<

        C++中如果写 char *pt="hello",编译通不过.在C语言中应该可以.C语言中字符串本质上字符数组,C++中常用string对象表达字符串,string对象实现了begin(),end()等接口函数,被看作"字符容器"

        上面代码中用到了"字符串末尾是空字符''\0"这个特点,当遍历到字符串末尾时,while判定为false,跳出循环.

        2>while遍历容器

/*while遍历容器*/
	list li;
	li.push_back(1);
	li.push_back(2);
	li.push_back(3);
	auto lip = li.begin();
	while (lip!=li.end()) {
		cout << *lip << endl;
		lip++;
	}

         上面代码常用for来写,用到了"迭代器变量(lip)从begin()开始,直到超尾迭代器end()结束,中间的迭代器变量指向容器元素"这个特点.

        3>while和cin(输入流)相结合

        下面代码用输入字符控制while的循环退出 

	char ar;
    int b=0;
	while (cin >> ar && ar != 'q') {    //输入除空白字符(空格,回车,tab)以外的字符,q退出
		cout << "你输入的字符是:" << ar << endl;
		b++;
	}
	cout << "b的值是:" <

        上面代码中cin>>ar表达式,他的返回值也是bool类型.成功输入返回true,否则返回false.

        代码表示:只要不输入q,其他输入进去的字符被显示出来;此外声明的变量b表示输入次数.

        cin有个特点:缓冲流中的空白字符不被识别,比如输入"   3",识别为3,前面的空白字符被丢弃.但cin.get()和cin.getline()会识别空白字符.具体情况可以上网搜索.

        下面代码用输入格式控制while的循环退出         

	    double x, y;
		cout << "输入两个double型数字:" << endl;
		while (cin >> x >> y) {					//输入两个值
			cout << "输入两个值加起来是:" << x + y << endl;
			cout << "格式:数字+空格+数字+空格,其他字母退出" << endl;
		}

         上面代码实现两个double类型值相加,输入"2 3",计算出5;当输入"t t"等不符合格式时,退出循环

//使输入值在范围内
int number;
while(!(cin>>number && number>=1 && number<=6)){    //当输入不符合要求时
    cin.clear();                                    //重置输入
    while(cin.get()!='\n');                         //清除多余输入
    cout<<"请输入1到6之间的整数(含1和6)"<

        上面代码表示必须输入1~6内的一个整数,才可以跳出循环 

        下面是一个嵌套的while        

/*用输入作为while的循环条件的写法*/
	double x, y;
	cout << "输入任意字符继续,按t退出" << endl;
	while (cin >> ar && ar != 'q') {		//输入选择
		cout << "你还在循环中:"  << endl;
		cout << "输入两个double型数字:" << endl;
		while (cin >> x >> y) {					//输入两个值
			cout << "输入两个值加起来是:" << x + y << endl;
			cout << "按其他键退出" << endl;
		}									
		cin.clear();						//注意:一定要用clear,否则直接退出!
		while(cin.get()!='\n');				//注意:这句和上一句一起用,网上说的cin.syc()不行!
		cout << "输入任意字符继续,按t退出" << endl;
	}

         上面代码有个需要注意的地方,从cin从while中跳出来,要将缓冲区做处理,把缓冲区中直到回车符前的部分全部吸收,或者沿用书上叫法-丢弃.不让他影响到下一次的输入.

		cin.clear();						
		while(cin.get()!='\n');				

        这部分相当于C语言中的

int ch;
while((ch=getchar())!='\n');

          4>while和比较表达式结合

        假设现在有两个数组,一个数组有n个值,另一个数组有n+2个值.把一个数组内的值复制到另一个数组当中.----当然这个例子不是太典型,一般用for来完成.

int a[3]={1,2,3};
int length=sizeof(a)/sizeof(int);
int b[length+2];
int num=0;                            //记录元素个数
while(num

小结

        while条件必须是返回值为bool类型的表达式,可用到的表达式有:比较表达式,逻辑表达式,输入表达式cin.表达式里用变量来编写程序员需要的逻辑,逻辑闭环问题解决.

        思路:while→表达式→变量→逻辑

你可能感兴趣的:(C++,c++,开发语言)