C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计
“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 字符数组输入输出 数组 字符数组与字符串 多维数组在内存中的映像 枚举类型 枚举类型内存空间 结构类型内存空间 数组 枚举类型 结构类型 联合类型 字符数组与字符串 多维数组 冒泡排序 结构数组 C++语言程序设计
编程技能 b C++语言程序设计
(一)字符数组与字符串 C++语言程序设计 #include <iostream> using namespace std; 从键盘输入一行或多行字符串,用字符数组存储,并统计所输入的字符串中26个字母出现的次数。 #include <iostream> using namespace std; void main() { //数组及变量定义; const int N = 80; char buffer[N]; int k =0; const int NUM = 26; int counts[NUM] = {0}; char letters[NUM]; int i = 0; do //循环输入每一行字符 { cout<<"enter a string:\n"; cin.getline(buffer, N,'\n'); //获得一行输入字符串 C++语言程序设计
(一)字符数组与字符串 C++语言程序设计 k = 0; //对于输入的每一行字符,统计字符出现的次数 从键盘输入一行或多行字符串,用字符数组存储,并统计所输入的字符串中26个字母出现的次数。 k = 0; //对于输入的每一行字符,统计字符出现的次数 while (buffer[k] != '\0') { i =tolower( buffer[k]) - 'a'; counts[i]++; k++; //counts[tolower( buffer[k++]) - 'a']++; //用此行可代替前三句 } } while (buffer[0]!='\0'); cout<<"the statistics result:"<<endl; for (i=0; i<NUM; i++) //输出统计结果 letters[i] = (char)('a'+i); if (counts[i]>0) cout<<letters[i]<<": "<<counts[i]<<endl; C++语言程序设计
(二)多维数组 C++语言程序设计 #include <iostream> #include <ctime> 编程实现矩阵转置功能,矩阵行数为M,列数为N,用二维数组表示矩阵。 #include <iostream> #include <ctime> #include <iomanip> using namespace std; void main() { const int M = 5; const int N = 6; int matrix[M][N]; //矩阵 int tMatrix[N][M]; //转置矩阵 srand((unsigned int) time(NULL)); int i, j; C++语言程序设计
(二)多维数组 C++语言程序设计 cout<<"matrix:"<<endl; 编程实现矩阵转置功能,矩阵行数为M,列数为N,用二维数组表示矩阵。 cout<<"matrix:"<<endl; for (i=0; i<M; i++) //生成矩阵 { for (j=0; j<N; j++) matrix[i][j] = rand()%100; //给数组元素赋值 cout<<setw(4)<<matrix[i][j]<<" "; } cout<<endl; cout<<"transpose of matrix:"<<endl; for (i=0; i<N; i++) //得到转置矩阵 { for (j=0; j<M; j++) tMatrix[i][j] = matrix[j][i]; //给数组元素赋值 cout<<setw(4)<<tMatrix[i][j]<<" "; } cout<<endl; C++语言程序设计
(二)多维数组 C++语言程序设计 #include <iostream> #include <iomanip> 编程实现计算两个N阶方阵乘积矩阵的功能,矩阵元素为整形,N=5。 #include <iostream> #include <iomanip> #include <ctime> using namespace std; void main() { const int N = 5; int a[N][N], b[N][N]; //两个相乘的矩阵 int c[N][N]={0}; //乘积矩阵 int i, j, k; srand((unsigned int)time(NULL)); //生成矩阵a和b for(i=0; i<N; i++) //行循环 { for(j=0; j<N; j++) //列循环 a[i][j] = rand() % 100; b[i][j] = rand() % 100; } C++语言程序设计
(二)多维数组 C++语言程序设计 编程实现计算两个N阶方阵乘积矩阵的功能,矩阵元素为整形,N=5。 //计算乘积矩阵c,并显示 for(i=0; i<N; i++) { for(j=0; j<N; j++) for( k=0; k<N; k++) //求c的一个元素 c[i][j] += a[i][k] * b[k][j]; } cout<<"matrix c:"<<endl; cout<<setw(10)<<c[i][j]; cout<<endl; //显示矩阵a,再显示矩阵b cout<<"matrix a:"<<endl; for(i=0; i<N; i++) { for(j=0; j<N; j++) cout<<setw(5)<<a[i][j]; } cout<<endl; cout<<"matrix b:"<<endl; cout<<setw(5)<<b[i][j]; C++语言程序设计
(三)冒泡排序 C++语言程序设计 用冒泡排序法对整型数组中的元素按照从小到大进行排序 for (int pass = 1; pass < arraySize; pass++) for (i = 0; i < arraySize – 1 - pass; i++) if (a[i] > a[i + 1]) { hold = a[i]; a[i] = a[i + 1]; a[i + 1] = hold; } #include <iostream> #include <iomanip> using namespace std; int main() { const int arraySize = 10; int a[arraySize] = { 6, 2, 10, 4, 8, 12, 89, 68, 45, 37 }; int i, hold; cout<<"Data items in original order\n"; for (i = 0; i <arraySize; i++) cout<<setw(4)<<a[i]; C++语言程序设计
(三)冒泡排序 C++语言程序设计 用冒泡排序法对整型数组中的元素按照从小到大进行排序 cout<<"\nData items in ascending order\n"; for (i = 0; i < arraySize; i++) cout<<setw(4)<<a[i]; cout<<endl; return 0; } C++语言程序设计
(四)结构数组 C++语言程序设计 公司有六个员工,把他们按工资由低到高排序。 void main() { Employee temp; #include <iostream> using namespace std; struct Employee { char name[20]; unsigned long id; float salary; }; Employee allone[6]={ {"zhang", 12345, 3390.0}, {"wang", 13916, 4490.0}, {"zhou", 27519, 3110.0}, {"meng", 42876, 6230.0}, {"yang", 23987, 4000.0}, {"chen", 12335, 5110.0} void main() { Employee temp; for(int i=1; i<6; i++) //排序 { for(int j=0; j<=5-i; j++) //一轮比较 { if(allone[j].salary > allone[j+1].salary) { temp=allone[j]; //结构变量的交换 allone[j]=allone[j+1]; allone[j+1]=temp; } for(int k=0; k<6; k++) //输出 cout <<allone[k].name<<" " <<allone[k].id<<" " <<allone[k].salary<<endl; C++语言程序设计