[C++] 陣列基礎練習題
Basic Array Problems in C++ Programming
本文提供幾個一、二維陣列相關的基礎練習題,其中包括陣列配合指標使用的基本題,以讓讀者熟悉陣列與指標的使用。
宣告一可儲存 5 個整數的陣列,可讓使用者輸入 5 個整數,計算並輸出其平均值
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
double average(int x[ ], int arraySize);
int main( ) {
for (int i = 0; i < maxSize; i++)
{
cout << "輸入第" << i << "個元素整數值:";
cin >> number[i];
}
cout << "陣列元素平均值為:" << average(number, maxSize) << "\n";
return 0;
}
double average(int x[ ], int arraySize)
{
int sum = 0;
for (int i = 0; i < arraySize; i++)
sum += x[i];
return sum/maxSize;
}
輸出結果
宣告一可儲存 5 個整數的陣列,可讓使用者輸入 5 個整數,找出並輸出陣列中最大值
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
int main( ) {
int max_int = 0;
for (int i = 0; i < maxSize; i++)
{
cout << "輸入第" << i << "個元素整數值:";
cin >> number[i];
if ( i == 0 )
max_int = number[i];
else if (number[i] > max_int)
max_int = number[i];
}
cout << "陣列元素中最大值為:" << max_int << "\n";
return 0;
}
輸出結果
以氣泡排序法將輸入的 5 個整數進行由小至大的排序,最後輸出排序前與排序後的陣列元素
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
void bubble_sort(int x[], int arraySize);
int main() {
for (int i = 0; i < maxSize; i++){
cout << "輸入第 " << i << " 個元素整數值:";
cin >> number[i];
}
cout << "排序前的陣列元素為:";
for (int i = 0; i < maxSize; i++)
cout << number[i] << " ";
cout << "\n";
cout << "排序後的陣列元素為:";
bubble_sort(number, maxSize);
for (int i = 0; i < maxSize; i++)
cout << number[i] << " ";
cout << "\n";
return 0;
}
void bubble_sort(int x[], int arraySize)
{
int i, j, temp;
for (i = maxSize - 1; i >= 1; i--) {
for (j = 0; j <= i - 1; j++) {
if (number[j] > number[j + 1]) {
temp = number[j + 1];
number[j + 1] = number[j];
number[j] = temp;
}
}
}
}
或是使用指標
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
void bubble_sort(int x[], int arraySize);
int main() {
for (int i = 0; i < maxSize; i++) {
cout << "輸入第 " << i << " 個元素整數值:";
cin >> *(number+i);
}
cout << "排序前的陣列元素為:";
for (int i = 0; i < maxSize; i++)
cout << *(number + i) << " ";
cout << "\n";
cout << "排序後的陣列元素為:";
bubble_sort(number, maxSize);
for (int i = 0; i < maxSize; i++)
cout << *(number + i) << " ";
cout << "\n";
return 0;
}
void bubble_sort(int x[], int arraySize)
{
int i, j, temp;
for (i = maxSize - 1; i >= 1; i--) {
for (j = 0; j <= i - 1; j++) {
if (*(number+j) > *(number+j+1)) {
temp = *(number + j + 1);
*(number + j + 1) = *(number + j);
*(number + j) = temp;
}
}
}
}
輸出結果
將輸入的 5 個整數,利用指標存入陣列,並求取陣列元素的總和
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
int main() {
int sum = 0;
int i;
for (i = 0; i < maxSize; i++)
{
cout << "輸入第" << i << "個元素整數值:";
cin >> *(number+i);
sum += *(number + i);
}
cout << "陣列總和為:" << sum << endl;
return 0;
}
或是使用指標
#include <iostream>
using namespace std;
const int maxSize = 5;
int number[maxSize];
int main() {
int sum = 0;
int* ptr;
for (ptr = number; ptr < &number[maxSize]; ptr++)
{
cout << "輸入第" << (ptr-number) << "個元素整數值:";
cin >> *ptr;
sum += *ptr;
}
cout << "陣列總和為:" << sum << endl;
return 0;
}
輸出結果
有一個二維陣列,儲存有 5 的學生的國文、英文、數學、物理、化學與總分 (須自行計算) 的成績。試使用指標將這 5 個學生的成績依總分高低,由高至低排列輸出
#include <iostream>
#include <iomanip> // 為了使用 setw()
using namespace std;
const int rowSize = 5;
const int columnSize = 6;
void output(int *pointer[rowSize]);
void bubble_sort(int *pointer[rowSize], int colMaxSize);
int main() {
int score[rowSize][columnSize] = {{45, 56, 88, 63, 79, 0}, // 國文, 英文, 數學, 物理, 化學, 總分
{13, 46, 71, 36, 43, 0},
{95, 76, 77, 63, 66, 0},
{47, 36, 67, 52, 79, 0},
{92, 87, 94, 92, 83, 0}};
int* ptr[rowSize+1];
int i, j;
for (i = 0; i < rowSize; i++)
ptr[i] = score[i];
for (i = 0; i < rowSize; i++)
for (j = 0; j < columnSize; j++)
*(ptr[i] + columnSize - 1) += *(ptr[i] + j);
cout << "排序前:\n\n" ;
output(ptr);
cout << "\n";
cout << "排序後:\n\n";
bubble_sort(ptr, columnSize);
output(ptr);
}
void output(int* pointer[rowSize])
{
int i, j;
cout << setw(5) << "國文" << setw(5) << "英文" << setw(5) << "數學" << setw(5) << "物理"
<< setw(5) << "化學" << setw(5) << "總分" << endl;
cout << setw(5) << "----" << setw(5) << "----" << setw(5) << "----" << setw(5) << "----"
<< setw(5) << "----" << setw(5) << "----" << endl;
for (i = 0; i < rowSize; i++) {
for (j = 0; j < columnSize; j++) {
cout << setw(5) << *(pointer[i] + j) << setw(5);
}
cout << endl;
}
}
void bubble_sort(int* pointer[rowSize], int colMaxSize)
{
int *temp;
int i, j;
for(i = rowSize-1; i >=1; i--)
for (j = 0; j <= i - 1; j++) {
if (*(pointer[j] + colMaxSize-1) < *(pointer[j + 1] + colMaxSize-1)) {
temp = pointer[j+1];
pointer[j + 1] = pointer[j];
pointer[j] = temp;
}
}
}





留言
張貼留言