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

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。 

一个简易的去重排序器

代码

#include <stdio.h>
int 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;
}

运行结果

  

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

代码

#include <stdio.h>
int 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);
}

 运行结果

 一个简单而简陋的矩阵初等变换器

#include <stdio.h>
int 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;
}

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

絕知此事要躬行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值