1.10 面向过程程序设计规范
-
写清楚的注释
-
使用有意义的名字
-
使程序结构清晰
-
使用缩进来表示程序中的控制范围
-
用户交互时能给出有效的提示信息
-
不要直接使用ASC码值。这样会影响程序的可移植性
-
注意整数的溢出
-
尽量少的使用难理解的表示方式
-
在写关系表达式时,不要连用关系运算符
-
使用循环结构时,不管循环体几个语句,最好都用花括号括起来
-
每个函数只做一件事情,不要将多个功能组合在一个函数中
程序举例:菜单结构的设计与实现
#include <string>
#include <iostream>
#include<iomanip>
using namespace std;
#define NMENU 7 //宏定义
#define MAXSIZE 5
string menu[NMENU] = {
"退出【0】", "输入数组元素【1】",
"输出数组元素【2】", "计算最大值【3】",
"计算最小值【4】", "数组元素平均值【5】", "数组元素排序【6】"
};
void dispMenu(string menu[], int n); //显示菜单
void inputArray(int arr[], int n); //输入数组元素的值
void outputArray(int arr[], int n); //输出数组元素的值
int maxValue(int arr[], int n); //计算数组元素的最大值
int minValue(int arr[], int n); //计算数组元素的最小值
int average(int arr[], int n); //计算数组元素的平均值
void sortSel(int arr[], int n); //对数组元素做选择法排序
int average(int arr[], int n); //计算数组元素的平均值
int main( )
{
int myArray[MAXSIZE], res;
int sel = 1;
while (1)
{
dispMenu(menu, NMENU);
cin >> sel;
switch (sel)
{
case 0: return 0;
case 1: inputArray(myArray, MAXSIZE);
break;
case 2: outputArray(myArray, MAXSIZE);
break;
case 3: res = maxValue(myArray, MAXSIZE); cout << "max Value:" << res << endl; break;
case 4: res = minValue(myArray, MAXSIZE); cout << "min Value:" << res << endl; break;
case 5: res = average(myArray, MAXSIZE);cout << "average Value:" << res << endl; break;
case 6: sortSel(myArray, MAXSIZE);
break;
}
}
return 0;
}
//1.函数定义:显示菜单
void dispMenu(string menu[], int n)
{
cout << "根据提示选择相应的操作:" << endl;
for (int i = 0; i < n; i++)
cout << menu[i] << endl;
}
//2.函数定义:输入数组元素的值
void inputArray(int arr[], int n)
{
cout << "输入数组元素的值,以空格分隔" << endl;
for (int i = 0; i<n; i++)
{
cin >> arr[i];
}
}
//3.函数定义:输出数组元素的值
void outputArray(int arr[], int n)
{ cout << "输出数组元素的值:" << endl;
for (int i = 0; i<n; i++)
{
cout << setw(5) << arr[i];
}
}
//4.函数定义:计算数组元素的最大值
int maxValue(int arr[], int n)
{
int maxV = arr[0];
for (int i = 1; i<n; i++)
{
if (arr[i]>maxV)
maxV = arr[i];
}
return maxV;
}
//5.函数定义:计算数组元素的最小值
int minValue(int arr[], int n)
{
int minV = arr[0];
for (int i = 1; i<n; i++)
{
if (arr[i]<minV)
minV = arr[i];
}
return minV;
}
//6.函数定义:计算数组元素的平均值
int average(int arr[], int n)
{
float ave = 0;
for (int i = 1; i<n; i++)
{
ave = ave + arr[i];
}
ave = ave / n;
return ave;
}
//7.函数定义:对数组元素做选择法排序
void sortSel(int arr[], int n)
{
int i, j, k;
int tmp;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (arr[j]>arr[k])
k = j;//标记本趟循环的最大元素所在的下标
if (k != i)
{
//交换arr[i]与arr[k]
tmp = arr[k];
arr[k] = arr[i];
arr[i] = tmp;
}
}
}