个人的一些小创作(随便玩玩,由于技术限制,无使用价值)-创新互联

tips

1. 桶排序算法的话,必须会去重,因为它的核心就是把数值与数组的下标对应起来,那如果你有多个相同的数值,那也只能对应同一个数组的下标。然后桶排序算法最后打印的是数组的下标,而不是数组下标对应元素的值。

成都创新互联公司专注于新余企业网站建设,响应式网站开发,商城系统网站开发。新余网站建设公司,为新余等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

2. 也正是因为桶排序的核心在于把数字与数组的下标对应,因此找到要排列的那堆数据的大值十分有必要,这样子创建数组的时候,就可以知道长度应该定为多少了。或者说知道要排序的数据小于等于多少也可以。
3. 再次强调强调一下,桶排序打印的时候打印的是数组的下标,是下标!

4. !=的优先级是要高于=的。
5. a=一个为真的表达式,那么a的值就为1,a=一个为假的表达式,那么a的值就为0。

6. \0与\n我老是经常要搞混,\0是C语言中的字符串结束符,在ACSII字符集中对应空字符NULL,数值为0。而\n是转义字符,是换行符,其对应的ASCII值为10,按下enter键,相当于往输入缓冲区里面放一个\n。 

一个简易的去重排序器

代码

#includeint main()
{
	printf("*****去重排序器*****\n");
	printf("请输入要排序数字的个数:");
	int n = 0;
	scanf("%d", &n);
	//
	int arr[1001] = { 0 };
	int max = 0;
	int tmp = 0;
	//
	printf("请输入%d个你要排序的数字(≤1000):",n);
	int i = 0;
	for (i = 0; i< n; i++)
	{
		scanf("%d", &tmp);
		arr[tmp] = 1;
		if (tmp >max)
		{
			max = tmp;
		}
	}
	//
	int num = 0;
	printf("请选择升序(1)还是降序(2):");
Elon:
	scanf("%d",&num);
	//
	printf("去重排序结果为:");
	if (num == 1)
	{
		for (i = 0; i<= max; i++)
		{
			if (arr[i] == 1)
			{
				printf("%d ", i);
			}
		}
	}
	else if (num == 2)
	{
		for (i = max; i >=0; i--)
		{
			if (arr[i] == 1)
			{
				printf("%d ", i);
			}
		}
	}
	else
	{
		printf("输入有误,重新输入!\n");
		goto Elon;
	}
	return 0;
}

运行结果

一个简易的字符个数计算器

代码

#includeint main()
{
	printf("Enter the character:");
	char str;
	scanf("%c", &str);
	getchar();
	//
	int count = 0;
	int ch = 0;
	printf("Enter the string:");
	while ((ch = getchar()) != EOF)
	{
		if (str == ch)
		{
			count++;
		}
	}
	printf("The number of %c is %d\n", str, count);
}

运行结果

一个简单而简陋的矩阵初等变换器
#includeint is_RSSM(double arr[10][10], int row, int col)
{
	int i = 0;
	int j = 0;
	int num = 0;
	for (i = 0; i< row; i++)
	{
		int count = 0;
		for (j = 0; j< col; j++)
		{
			if (arr[i][j] == 0)
			{
				count++;
			}
			else if (arr[i][j] == 1)
			{
				int k = 0;
				for (k = 0; k< row; k++)
				{
					if ((arr[k][j] != 0) && (k != i))
					{
						return 0;
					}
				}
				break;
			}
			else
			{
				return 0;
			}
		}
		if (i == 0)
		{
			num = count;
		}
		else
		{
			if (count<= num)
			{
				return 0;
			}
			num = count;
		}
	}
	return 1;
}
int is_ESFM(double arr[10][10], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i< row; i++)
	{
		for (j = 0; j< col; j++)
		{
			if (arr[i][j] != 0)
			{
				if ((arr[i][j] != 1) || (i != j))
				{
					return 0;
				}
			}
		}
	}
	return 1;
}
void print(double arr[10][10], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i< row; i++)
	{
		for (j = 0; j< col; j++)
		{
			printf("%5.1lf ", arr[i][j]);
		}
		printf("\n");
	}
}
int main()
{
	printf("*****矩阵初等变换(化为行最简阶梯型矩阵)*****\n");
	printf("输入矩阵的行数与列数:");
	int row = 0;
	int col = 0;
	scanf("%d %d", &row, &col);
	//
	double arr[10][10] = { 0 };
	//
	printf("依次输入矩阵的每个数:\n");
	int i = 0;
	int j = 0;
	for (i = 0; i< row; i++)
	{
		for (j = 0; j< col; j++)
		{
			scanf("%lf", &arr[i][j]);
		}
	}
	//
	printf("有三种矩阵的初等变换可供执行:\n");
	printf("1 (交换行列).输入:  r/c x y         交换x与y两行.\n");
	printf("2 (倍数加减).输入:  r/c z +?- x y   把第z行加上x行的y倍.\n");
	printf("3 (行列乘除).输入:  r/c x *?/ y     把第x行乘以y. \n");
	//
	int num = 0;
	while (1)
	{
		int flag = 0;
		printf("Enter the number:");
		scanf("%d", &num);
		getchar();
		printf("Input the command:");
		char a1;
		int x = 0;
		if (num == 1)
		{
			int y = 0;
			scanf("%c %d %d", &a1, &x, &y);
			//
			if (a1 == 'r')
			{
				for (j = 0; j< col; j++)
				{
					int tmp = arr[x - 1][j];
					arr[x - 1][j] = arr[y - 1][j];
					arr[y - 1][j] = tmp;
				}
			}
			else if (a1 == 'c')
			{
				for (i = 0; i< row; i++)
				{
					int tmp = arr[i][x - 1];
					arr[i][x - 1] = arr[i][y - 1];
					arr[i][y - 1] = tmp;
				}
			}
		}
		else if (num == 2)
		{
			double y = 0;
			int z = 0;
			char key;
			scanf("%c %d %c %d %lf", &a1, &z, &key, &x, &y);
			if (a1 == 'r')
			{
				if (key == '+')
				{
					for (j = 0; j< col; j++)
					{
						arr[z - 1][j] += (arr[x - 1][j] * y);
					}
				}
				else if (key == '-')
				{
					for (j = 0; j< col; j++)
					{
						arr[z - 1][j] -= (arr[x - 1][j] * y);
					}
				}
			}
			else if (a1 == 'c')
			{
				if (key == '+')
				{
					for (i = 0; i< row; i++)
					{
						arr[i][z - 1] += (arr[i][x - 1] * y);
					}
				}
				else if (key == '-')
				{
					for (i = 0; i< row; i++)
					{
						arr[i][z - 1] -= (arr[i][x - 1] * y);
					}
				}
			}
		}
		else if (num == 3)
		{
			double y = 0;
			char key;
			scanf("%c %d %c %lf", &a1, &x, &key, &y);
			if (a1 == 'r')
			{
				if (key == '*')
				{
					for (j = 0; j< col; j++)
					{
						arr[x - 1][j] *= y;
					}
				}
				else
				{
					for (j = 0; j< col; j++)
					{
						arr[x - 1][j] /= y;
					}
				}
			}
			else if (a1 == 'c')
			{
				if (key == '/')
				{
					for (i = 0; i< row; i++)
					{
						arr[i][x - 1] *= y;
					}
				}
				else
				{
					for (i = 0; i< row; i++)
					{
						arr[i][x - 1] /= y;
					}
				}
			}
		}
		else
		{
			printf("输入错误!\n");
		}
		print(arr, row, col);
		if (flag == 0)
		{
			if (is_RSSM(arr, row, col))
			{
				printf("当前矩阵为行最简阶梯型矩阵\n");
				flag++;
			}
		}
		else
		{
			if (is_ESFM(arr, row, col))
			{
				printf("当前矩阵已经是等价标准型矩阵\n");
				break;
			}
		}
	}
	return 0;
}

注:基本上没有任何使用价值,仅作纪念之用,读者见谅!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站题目:个人的一些小创作(随便玩玩,由于技术限制,无使用价值)-创新互联
URL分享:http://scyanting.com/article/dhipoj.html