C++培训_005_循环

优先级

自增自减:

a++;先用后加。到分后后增加。

++a;先加后用。到分号前就已经增加。

#include"iostream"
using namespace std;
int main()
{
	int a=1;
	int x=a++ + ++a;//分号前。有一个前置++,所以分号前。a为2.
	//因为 x是两个分号前的a相加。x为4.
	//分号后 a为 3.因为分号后 后置++也算上了。 
	cout<<x<<a;
	return 0;
} 

逗号运算符:

int a=3,b;
	b=(1,3,5);//有括号,b为最后一个值,为 5 
	cout<<b<<"   ";
	
	b=1,3,5;//无括号,b为第一个值,为 1 
	cout<<b<<"   ";

#include"windows.h"
#include"iostream"
using namespace std;
int main()
{
	int a,b;
	b=((a=2+3,a/4),a--);//有括号。b 为逗号前的值
	//b=(a=2+3,a/4);//依然有括号,b 为逗号前的值。
	//b=(a=2+3);//所以b为5;
	//a原本为5,在第一行分号前是5.在分号结束后是4. 
	cout<<b<<"   "<<a;
	return 0;
} 

+=,-=,*=,/=

#include"windows.h"
#include"iostream"
using namespace std;
int main()
{
	int m=2,n=5;
	m+=m*=n-=m/=m;//+=,-=,*=,/=是从右向左运算的顺序。
	//一层层拆。
	//m+=m*=n-=(m=m/m);运算后 m为1,n为5.
	//上一层化简:m+=m*=n-=1;再拆第二层
	//m+=m*=(n=n-1);运算后 m为1,n为4.
	//上一层化简:m+=m*=4;再拆第三层
	//m+=(m=m*4);运算后 m为4,n为4.
	//上一层化简:m+=4;再拆第四层
	//m+=4;运算后 m为8,n为4.
	cout<<m<<n;
	return 0;
}

#include"windows.h"
#include"iostream"
using namespace std;
int main()
{
	int a=5,b=2,c=9,d;
	d=0||(c=a+b)&&(c=a-b);
	//d=0||7&&3,先算 d=0||7,为真,再算d=真&&3,d最后为真。
	//三段都参与运算。所以c为3. 
	cout<<d<<c;
	return 0;
} 








循环语句

while(){}

  特点:先判断括号中的值(或者说是判断括号中的条件),值为0,则不执行,非0则循环。到下一次再开始判断。
#include"windows.h"  
#include"iostream"
using namespace std;
int main()  
{     
    int num,temp; 
    cin>>num;
    temp=num;  
    cout<<"输入整数开始循环,输入字母停止循环."<<endl;  
    while(temp==1)  
    {  
        cout<<"*****输入的数字为%d"<<endl;  
        cin>>num;
        temp=(cin>>num);//输入数字,cin返回1.否则返回0.
    }  
    system("pause");  
    return 0;  
}  

将上述代码简化一下:
#include"windows.h" 
#include"iostream"
using namespace std;

int main()  
{     
    int num;   
    while(cin>>num)  
    {  
        cout<<"****输入的数字为<<d"<<endl;
    }  
    system("pause");  
    return 0;  
}  


do{}while();

注意这里有分号,特点是,先做一次,再看while()条件。

来看看下面程序,说说他们执行了几次,特点是什么。

#include"windows.h"  
#include"iostream"
using namespace std;  
int main()  
{     
    int i=0;  
    int sum=0;  
    do  
    {  
        i++;  
        sum+=i;  
    }  
    while(i<100);  
      
    int j=0;  
    int soo=0;  
    while(j++<5)  
    {  
        soo=soo+j;  
    }  
      
    int a=0;  
    int m=0;  
    do  
    {  
        a++;  
        m=m+1;  
    }  
    while(a<0);  
      
    cout<<sum<<endl;  
    system("pause");  
    return 0;  
}  


for( *1号位置* ; *2号位置* ; *3号位置* )

特点:先执行一次1号位置代码,以后1号位置则不再执行,再判断2号位置的条件成立则执行主体的花括号代码。最后执行3号位置代码。然后再进入2号位置判断,再进入花括号,再进入3号位置……
#include"windows.h"  
#include"iostream"
using namespace std;  
int main()  
{     
    int sum=0;  
    for(int i=0;i>-5;i--)  
    {  
        sum++;  
    }  
  
    cout<<sum<<endl;  
    system("pause");  
    return 0;  
} 

break和continue与goto

break,终止本层循环。
continue,跳过本层循环的一次
goto,跳到指定位置。(一般可以用其它来替换它)
#include"windows.h"  
#include"iostream"
using namespace std;  
  
int main()  
{     
    for(int i=0;i<10;i++)  
    {  
        if(i%2==0)  
        {  
            continue;//当可以被2整除,直接跳到下一次循环。  
        }  
        cout<<i<<endl;  
    }  
      
    cout<<"******************************"<<endl;  
      
    for(int i=0;i<10;i++)  
    {  
        if(i%2==0)  
        {  
            break;//当可以被2整除,终止整个循环。  
        }  
        cout<<i<<endl;  
    }  
    system("pause");  
    return 0;  
}  


来看一下goto:
#include"windows.h"  
#include"iostream"
using namespace std;  
int main()  
{     
  
    int x=0;  
    while(x++!=20)  
    {  
        cout<<"本次循环变量为"<<x<<endl;  
        if(x==10)  
        {  
            goto loopA;  
        }  
    }  
    loopB:  
        goto loopD;  
    loopA:  
        cout<<"跳转后的第一行代码"<<endl;  
    loopC:  
        goto loopB;  
    loopD:  
        cout<<"loopD\n"<<endl;  
    system("pause");  
    return 0;  
}  

嵌套

循环里面还有循环,就是循环的嵌套。可以嵌套很多层的。
#include"windows.h"  
#include"iostream"
using namespace std;  
int main()  
{     
  
    for(int i=1;i<11;i++)  
    {  
        int j=1;  
        while(j<11)  
        {  
            cout<<j++<<"\t";  
        }  
        cout<<endl;
    }  
    system("pause");  
    return 0;  
}  


输出乘法表:

#include"windows.h"  
#include"iostream"
using namespace std;
#include"iomanip"//setw()函数的头文件,也是setprecision()的头文件 

int main()  
{     
  
    for(int i=1;i<10;i++)  
    {  
        for(int j=1;j<=i;j++)  
        {  
            cout<<setw(2)<<j<<"*"<<i<<" = "<<j*i;  
        }  
       cout<<endl;
    }  
    system("pause");  
    return 0;  
}

冒泡排序

#include"windows.h"
#include"iostream"
using namespace std;
int main()
{
	
	int a[10];
	
	for(int i=0;i<10;i++)
	{
		cin>>a[i];
	}
	cout<<"****************"<<endl;
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<"   ";
	}
	
	
	for(int i=0;i<10;i++)
	{
		for(int j=i;j<10;j++)
		{
			if(a[i]>a[j])
			{
				int temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
	cout<<"****************"<<endl;
	cout<<"****************"<<endl;
	cout<<"****************"<<endl;
	
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<"   ";
	}
	return 0;
} 

选择排序

#include"windows.h"
#include"iostream"
using namespace std;
int main()
{
	
	int a[10];
	
	for(int i=0;i<10;i++)
	{
		cin>>a[i];
	}
	cout<<"****************"<<endl;
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<"   ";
	}
	
	
	for(int i=0;i<10;i++)
	{
		for(int j=i;j<10;j++)
		{
			int b=i;
			if(a[j]>a[b])
			{
				b=j;
			}
			if(b!=i)
			{
				int temp=a[i];
				a[i]=a[b];
				a[b]=temp;
			}
		}
	}
	cout<<"****************"<<endl;
	cout<<"****************"<<endl;
	cout<<"****************"<<endl;
	
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<"   ";
	}
	return 0;
} 


其他形状的99乘法表

#include"windows.h"  
#include"iostream"
using namespace std;
#include"iomanip"//setw()函数的头文件,也是setprecision()的头文件 

int main()  
{     
	for(int i=1;i<10;i++)
	{
		cout<<setw(4)<<i;
	}
	cout<<endl;
	
	for(int i=1;i<10;i++)
	{
		cout<<"----";
	}
	cout<<endl;
	
    for(int i=1;i<10;i++)  
    {
        for(int j=1;j<10;j++)  
        {  
            cout<<setw(4)<<j*i;
        }  
       cout<<endl;
    }  
    system("pause");  
    return 0;  
}


无乘号三角形乘法表(下三角,上三角的表 同理)

#include"windows.h"  
#include"iostream"
using namespace std;
#include"iomanip"//setw()函数的头文件,也是setprecision()的头文件 

int main()  
{     
	for(int i=1;i<10;i++)
	{
		cout<<setw(4)<<i;
	}
	cout<<endl;
	
	for(int i=1;i<10;i++)
	{
		cout<<"----";
	}
	cout<<endl;
	
    for(int i=1;i<10;i++)  
    {
        for(int j=1;j<=i;j++)  
        {  
            cout<<setw(4)<<j*i;
        }  
       cout<<endl;
    }  
    system("pause");  
    return 0;  
}


if() else if() else 的初步学习

  这是一种选择结构。
  先判断 if() ,再判断 else if() ,其中else if 可能有很多,最后判断 else 遇到第一个判断成立的则进入其中,进入之后其他后来的都不再判断不再执行。
例子:
#include"windows.h"  
#include"iostream"
using namespace std;  
int main()  
{     
    int temp;  
    cin>>temp;  
    if(temp>0)  
    {  
        if(temp%2==0)  
        {   
            cout<<"正偶数"<<endl;  
        }  
        else  
        {  
            cout<<"正奇数"<<endl;  
        }   
    }  
    else if(temp==0)  
    {  
        cout<<"0"<<endl;  
    }  
    else if(temp==-1)  
    {  
        cout<<"-1";  
    }  
    else  
    {  
        cout<<"不等于-1的负整数";   
    }  
    system("pause");  
    return 0;  
}  


判断闰年:

#include"windows.h"  
#include"iostream"
using namespace std;
int main()  
{     
    int year;  
    cin>>year;  
    if(year%4==0&&year%100!=0||year%400==0)  
    {  
        cout<<"闰年"<<ednl;  
    }  
    else  
    {  
        cout<<"不是闰年"<<endl;  
    }  
    system("pause");  
    return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值