题目要求:
创建一个数组,
实现函数init()初始化数组、
实现函数input()给数组赋值、
实现函数swap()给数组排序、
实现reverse()函数完成数组元素的逆置、
实现empty()清空数组。
要求:自己设计函数的参数,返回值。
思路:
在main()函数中,调用有不同功能的函数完成相应的功能;通过switch语句进行分支,通过while循环控制不断进行不同操作。
创建Menu()函数,列出本程序可以进行的操作,在main()函数中的while循环下不断调用,以供使用者选择。
创建print()函数,用于进行不同功能函数操作后的
创建Init()函数,对数组进行初始化,使用一个for循环,对数组内所有元素赋初值0,再调用一个print()函数输出初始化后的数组。
创建Input()函数,对数组进行赋值,同样使用for循环,用scanf语句从键盘输入,对数组中的所有元素赋值,再调用一个print()函数输出赋值后的数组。
创建Swap()函数,对数组进行排序,使用两个for循环,对数组中的所有元素进行冒泡排序(升序或降序取决于if语句的判断条件),再调用一个print()函数输出排序后的数组。
创建Reverse()函数,对数组进行逆转,使用while循环,对数组中的所有元素进行逆转(进行逆转操作只需将数组中的元素首尾依次调换,即将第一个和最后一个交换,第二个于倒数第二个交换······),再调用一个print()函数输出逆转后的数组。
创建Empty()函数,清空数组,使数组的元素个数为0,再调用一个print()函数输出清空后的数组。
Menu()函数:
void Menu()
{
printf("\t\t\t\t***********************************************\n");
printf("\t\t\t\t*************1、Init 2、Input***************\n");
printf("\t\t\t\t*************3、Swap 4、Reverse*************\n");
printf("\t\t\t\t*************5、Empty 6、Exist***************\n");
printf("\t\t\t\t***********************************************\n");
}
print()函数:
void print(int a[], int n)
{
for (int i = 0; i < n; i++){
printf("%d ", a[i]);
}
printf("\n");
}
Init()函数:
void Init(int a[], int n)
{
int i = 0;
for (i = 0; i < n; i++){
a[i] = 0;
}
printf("输出初始化后的数组:");
print(a, n);
Input()函数:
void Input(int a[], int n)
{
printf("请输入您要输入的数组元素:");
for (int i = 0; i < n; i++){
scanf_s("%d", &a[i]);
}
printf("您输入的数组是:");
print(a, n);
}
Swap () 函数:
void Swap(int a[], int n)
{
int i;
int j;
for (j = 0; j < n - 1 ; j++){
for (i = 0; i < n - j - 1; i++){
if (a[i]>a[i + 1]){
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
printf("输出排序后的数组:");
print(a, n);
}
Reverse()函数:
void Reverse(int a[], int n)
{
int left=0;
int right = n-1;
printf("输出逆转前的数组:");
print(a, n);
while(left<right){
int temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
right--;
}
printf("输出逆转后的数组:");
print(a, n);
}
Empty()函数:
void Empty(int a[], int n)
{
n = 0;
printf("输出初始化后的数组:");
print(a, n);
printf("此时数组为空!");
}
源程序:
#include<stdio.h>
#include<windows.h>
void Menu()
{
printf("\t\t\t\t***********************************************\n");
printf("\t\t\t\t*************1、Init 2、Input***************\n");
printf("\t\t\t\t*************3、Swap 4、Reverse*************\n");
printf("\t\t\t\t*************5、Empty 6、Exist***************\n");
printf("\t\t\t\t***********************************************\n");
}
void print(int a[], int n)
{
for (int i = 0; i < n; i++){
printf("%d ", a[i]);
}
printf("\n");
}
void Init(int a[], int n)
{
int i = 0;
for (i = 0; i < n; i++){
a[i] = 0;
}
printf("输出初始化后的数组:");
print(a, n);
}
void Input(int a[], int n)
{
printf("请输入您要输入的数组元素:");
for (int i = 0; i < n; i++){
scanf_s("%d", &a[i]);
}
printf("您输入的数组是:");
print(a, n);
}
void Swap(int a[], int n)
{
int i;
int j;
for (j = 0; j < n - 1 ; j++){
for (i = 0; i < n - j - 1; i++){
if (a[i]>a[i + 1]){
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
printf("输出排序后的数组:");
print(a, n);
}
void Reverse(int a[], int n)
{
int left=0;
int right = n-1;
printf("输出逆转前的数组:");
print(a, n);
while(left<right){
int temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
right--;
}
printf("输出逆转后的数组:");
print(a, n);
}
void Empty(int a[], int n)
{
n = 0;
printf("输出初始化后的数组:");
print(a, n);
printf("此时数组为空!");
}
void main()
{
int a[50];
int n;
int choose;
printf("请输入数组元素的个数(不大于50个):");
scanf_s("%d", &n);
do{
Menu();
printf("请输入你的选择:");
scanf_s("%d", &choose);
switch (choose){
case 1:
Init(a, n);
break;
case 2:
Input(a, n);
break;
case 3:
Swap(a, n);
break;
case 4:
Reverse(a, n);
break;
case 5:
Empty(a, n);
break;
case 6:
choose = 0;
break;
deflaut:
printf("选择错误请重新选择!");
break;
}
} while (choose);
system("pause");
}
运行结果:
从功能1开始依次执行他的6个功能
来源:https://blog.csdn.net/zz070/article/details/102685666