《C++从入门到精通》实例--数组
// 范例8-1:数组元素赋值并输出各个元素的值 程序
//实现"数组元素赋值并输出各个元素的值"
//2018.3.5
#include <iostream>
using namespace std;
int main()
{
int array[6], i;
for (i = 0; i < 6; i++)
{
array[i] = 6 - i;
}
for (i = 0; i < 6; i++)
{
cout << array[i] << " ";
}
system("pause");
return 0;
}
//范例8-2:冒泡排序应用 程序
//实现输入8个整数,由小到大排序后输出
//2018.3.5
#include <iostream>
using namespace std;
int main()
{
int sort[8],i,j,t;
cout << "请输入8个整数" << endl;
for (int i = 0; i < 8; i++)
{
cin >> sort[i];
}
for (i = 1; i <= 7; i++)
{
for (j = 0; j < 8 - i; j++)
{
if (sort[j]>sort[j + 1])
{
t = sort[j];
sort[j] = sort[j + 1];
sort[j + 1] = t;
}
}
}
cout << "排序之后的顺序为:" << endl;
for (i = 0; i < 8; i++)
{
cout << sort[i]<<" ";
}
system("pause");
return 0;
}
//范例8-3:选择排序应用
//输入8个整数,由小到大排序后输出
//2018.3.5
#include <iostream>
using namespace std;
int main()
{
int sort[8], i, j, k,t;
cout << "请输入8个整数" << endl;
for (i = 0; i < 8; i++)
{
cin >> sort[i];
}
for (i = 0; i < 7; i++) //选择排序算法开始,8个数需要7次比较
{
k = i; //假设下标为i的元素较小
for (j = i + 1; j < 8; j++) //找到值最小的元素的下标并赋值给k
{
if (sort[j] < sort[k])
k = j;
}
if (k != i) // sort[i]与sort[k]互换
{
t = sort[i];
sort[i] = sort[k];
sort[k] = t;
}
}
cout << "排序之后的顺序为:" << endl;
for (i = 0; i < 8; i++)
{
cout << sort[i] << " ";
}
system("pause");
return 0;
}
//范例8-6:输出Fibonacci数列的前20项
//2018.3.5
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int Fabi[20] = { 1, 1 };
int i;
Fabi[0] = 1;
Fabi[1] = 1;
for (i = 2; i < 20; i++)
{
Fabi[i] = Fabi[i - 1] + Fabi[i - 2];
}
for (i = 0; i < 20; i++)
{
cout << setw(8) << Fabi[i];
if ((i+1) % 4 == 0)
cout << endl;
}
cout << endl;
system("pause");
return 0;
}
c++程序里面经常见到下面的头文件#include <iomanip>,io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)
//范例8-7:计算3个学生个人的平均成绩
//2018.3.5
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float Score[3][3] = { { 85, 95, 88 }, { 95, 78, 92 }, { 71, 83, 80 } };
float sum, ave[3] = {0};
for (int i = 0; i < 3; i++)
{
sum = 0;
for (int j = 0; j < 3; j++)
{
sum = sum + Score[i][j];
}
ave[i] = sum / 3;
}
cout << "三个学生的平均成绩分别为:" << endl;
for (int k = 0; k < 3; k++)
{
cout << setprecision(4) << ave[k] << endl;
}
system("pause");
return 0;
注:
//实例8-8:将矩阵中的元素全部向右平移一列,最后一列移至第1列
// 12 58 9
// 24 37 1
//2018.3.5
#include <iostream>
using namespace std;
int main()
{
int i,j,t;
int a[2][3] = { 12, 58, 9, 24, 37, 1 };
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << "元素全部向右平移一列,最后一列移至第1列后为:" << endl;
for (i = 0; i < 2; i++)
{
t = a[i][0];
a[i][0] = a[i][2];
a[i][2] = a[i][1];
a[i][1] = t;
}
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
//实例8-9:从键盘输入20个整形数据存放至数组array中,求其中的最大值和最小值并输出
//2018.3.5
#include <iostream>
using namespace std;
int main()
{
int array[20];
int i,j,max,min;
cout << "请输入20个整形数据存放至数组array:" << endl;
for (i = 0; i < 20; i++)
{
cin >> array[i];
}
for (j = 0; j < 19; j++)
{
if (array[j]>array[j + 1])
{
max = array[j];
min = array[j+1];
}
else
{
max = array[j+1];
min = array[j];
}
}
cout << "10个数中最大值为:" << max << endl;
cout << "10个数中最小值为:" << min << endl;
system("pause");
return 0;
}
//实例8-10:求一个4*4的整形矩阵对角线元素之和
//2018.3.5
//问题:如果输入个数错误不能报错
#include <iostream>
using namespace std;
#include<iostream>
using namespace std;
int main()
{
int i, j;
int sum1 = 0;
int sum2 = 0;
int a[4][4];
cout << "请输入4*4数组的值:" << endl;
for (i = 0; i<4; i++)
{
cout << "输入第" << i << "行:";
for (j = 0; j<4; j++)
{
cin >> a[i][j];
}
}
for (i = 0; i<4; i++)
{
for (j = 0; j<4; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
for (i = 0; i<4; i++)
{
sum1 = sum1 + a[i][i]; //正对角线之和
}
for (i = 0; i <= 3; i++)
{
sum2 = sum2 + a[i][3 - i]; //反对角线之和
}
cout << "4*4的数组的正对角线为:" << sum1 << endl;
cout << "4*4的数组的反对角线为:" << sum2 << endl;
system("pause");
return 0;
}