找最值

int arr[5]={1,2,3,4,5,6,7,8,9};
int max=0;//suppose it's maximum
for(int i=0;i<9;i++)
{
if(arr[i]>max)
 {
  max=arr[i];
 }
}
cout<<max<<endl;

元素逆置(只是对称的换个个)

int arr[5]={1,7,3,4,2};//we desire to exchange it into 24371
int start=0;//对下标操作,而不是数组!
int end=sizeof(arr)/sizeof(arr[0])-1//结束位置为数组元素减一,因为数组从0开始记下标;
while(start<end)
{
 int tem=arr[start];
 int arr[start]=arr[end];
 int arr[end]=tem;
 start++;
 end--;//what a punchline!
}
for(int i=0;i<5;i++)
{
 cout<<arr[i]<<" ";
}

冒泡排序

外层每跑一圈,内层就跑一整轮(好多步),把当前最大的那个数“沉到底部”。
就像水里的气泡,大的泡泡会一次次被交换推到最后面去。

关键:当内部对比后交换了一次之后,就得到的是新数组。所以for循环推到的下一个数,就是目前最大的数了。

int arr[9]={1,4,7,3,9,2,8,5,6};
for(int i=0;i<9-1;i++)
//代表外面轮次,每次冒泡出来一个最大数,9个数总共要冒8次,因为是从0开始,所以是7次,记为元素个数-1
{
 for(int j=0;j<9-i-1;j++)//代表每一轮需要对比多少次,对比次数=总个数-当前轮次-1
 {
  if(arr[j]>arr[j+1])//如果前比后大,则交换前后
  {
   int tem=arr[j];
   arr[j]=arr[j+1];
   arr[j+1]=tem;
  }
}

二维数组统计考试成绩

#include<string>//string needs ATTENTION!!!
//创建数组
int score[3][3]=
{
 {100,100,100},
 {90,50,100},
 {60,70,80}
};
//使该行的每一列相加,比如00+01+02,这时我们联想到for嵌套两次输出二维数组
string name[3]={"张三","李四","王五"};//用string输出名字,形式与一维数组类似
for(int i=0;i<3;i++)
{
 int sum=0;//不写在内部,是因为外层循环走了一遍之后要清空给下一行相加
 for(int j=0;j<3;j++)
 {
  sum+=arr[i][j];//累加运算符+=
 }
 cout<<name[i]<<"的总分为"<<sum<<endl;
}

更多推荐