冒泡排序排多个字符串

1.冒泡排序排多个字符串

思路:

1.使用一个二维数组来存放字符串,一行代表一个字符串
2.对一行的字符串进行冒泡排序,排完这一行之后对下一行排序。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define S 3      //行数
#define N 10     //列数

Exchage(char *p, char *q)//交换两个字符
{
	char tmp = *p;
	*p = *q;
	*q = tmp;
}

void Sort(char arr[S][N])
{
	int x = 0;
	while(x < S)
	{
		int j = 0;
		int i = 0;
		int y = strlen(arr[x]);//计算这个字符串的长度
		for(i = 0; i < y-1; i++)//冒泡排序
		{
			for(j = 0; j < y-i-1; j++)
			{
                                if(arr[x][j] >arr[x][j+1])//如果第一个字符大于第二个字符,交换这两个字符
				{
					Exchage(&arr[x][j],&arr[x][j+1]);
				}
			}
		}
		x++;//下一行
	}
}

int main()
{
	char a[S][N] = {"asddfg","WERTDFG","DRFCFGHJ"};
    int i = 0;
	Sort(a);

	for(i = 0; i < S; i++)
	{
		printf("%s\n", a[i]);
	}
	system("pause");
	return 0;
}

2.使用main函数实现一个整数计算器,程序可以接受三个参数
列如 :命令行参数输入:text.exe -a 1 2
执行1+2输出3

#include<stdio.h>
#include<stdlib.h>

int Add(int x, int y)
{
	return x+y;
}
int Sub(int x, int y)
{
	return x-y;
}
int Mul(int x, int y)
{
	return x*y;
}
int Div(int x, int y)
{
	return x/y;
}

int main(int argc, char* argv[], int *envy)
{
        int z = 0;
	int a = atoi(argv[2]);
        int b = atoi(argv[3]);
	if(argc != 4)
	{
		printf("参数有误");
		return 0;
	}
	switch(*(argv[1]+1))//读取命令行参数-a中的a
	{
		case 'a':
			z = Add(a,b);
		break;
		case 'b':
			z = Sub(a,b);
		break;
		case 'c':
			z = Mul(a,b);
		break;
		case 'd':
			z = Div(a,b);
		break;
		default: printf("没有找到"); break;
	}
		
	printf("%d", z);
	system("pause");
	return 0;

}

猜你喜欢

转载自blog.csdn.net/ksaila/article/details/80205072