c++入门:数组经典案例(巧用数组找最大值,冒泡排序
·
找最值
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;
}
更多推荐


所有评论(0)