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元起,快前往官网查看详情吧