创建数组,完成初始化,赋值,排序,清空,逆转操作(C语言)

淺唱寂寞╮ 提交于 2019-12-02 08:52:00

题目要求:
创建一个数组,
实现函数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个功能

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!