天天看點

C語言 - 數組冒泡排序 與 switch嵌套

題目:輸入10個數字,然後用一個菜單控制(傳回後),菜單有兩個内容,一個是把那10個數字按順序排列,還有一個就是顯示那10個數字。
           
#include <stdio.h>
#include <stdlib.h>

void shengxu(int * a)
{
	int i, j, temp;

	for(i=0; i<10; i++)
	{
		for(j=i; j<10; j++)
		{
			if(*(a+j)< *(a+i))
			{
				temp = *(a+j);
				*(a+j) = *(a+i);
				*(a+i) = temp;
			}
		}
	}
}

void jiangxu(int * a)
{
	int i, j, temp;

	for(i=0; i<10; i++)
	{
		for(j=i; j<10; j++)
		{
			if(*(a+j)> *(a+i))
			{
				temp = *(a+j);
				*(a+j) = *(a+i);
				*(a+i) = temp;
			}
		}
	}
}

int main(void)
{
	int a[10];
	int i, x, xx;

	for(i=0; i<10; i++)
	{
		scanf("%d", &a[i]);
	}

	printf("1、把數組内容按順序排列\n");
	printf("2、重新顯示數組内的元素\n");

	scanf("%d", &x);

	switch(x)
	{
		case 1:	
		{
			printf("    1、升序排列\n");
			printf("    2、降序排列\n");
			scanf("%d", &xx);
			switch(xx)
			{
				case 1:
					{
						shengxu(a);
						for(i=0; i<10; i++)
						{
							printf("%d->", a[i]);
						}
						break;
					}
				case 2:
					{
						jiangxu(a);
						for(i=0; i<10; i++)
						{
							printf("%d->", a[i]);
						}
						break;
					}
			}
			break;
		}
		case 2:
		{
			for(i=0; i<10; i++)
			{
				printf("%d->", a[i]);
			}
			break;
		}
	}

	printf("\n");
	system("pause");
	return 0;
}
           
/*
------------在VC++ 6.0 顯示結果為:------------
45 78 12 45 6 87 1 45 12 89
1、把數組内容按順序排列
2、重新顯示數組内的元素
1
    1、升序排列
    2、降序排列
1
1->6->12->12->45->45->45->78->87->89->
請按任意鍵繼續. . .
*/
           

繼續閱讀