优先级
自增自减:
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;
}