自己写代码的错误总结(持续更新)

1. while循环常常忘了变量自增。

2. 字符串快速排序遇到的问题:

我遇到的问题:字符串排序直接调用的是整形数组的快速排序方法。
 字符串一个元素是一个字符类型的,只占有一个字节,如果调用的是整形的排序,每个元素是int型,要占用4个字节,对每个元素交换时会破坏元素的结构,可能导致乱码
 比如,本来交换一个字节长度的元素,而错误的交换了两个四字节的元素,导致了错误!!

字符串使用快速排序一定要注意排序函数中输入字符串的类型!!

3. 交换两个数时引入了中间变量,这个错误容易在排序时出现!

char a[]="abca";
char temp;
temp=a[0];
swap(&a[1],&temp);
puts(a);
输出的是aaca;

为什么呢?因为交换的是temp和a[1];而不是用a[0]与a[1]交换;

交换后,temp=a[1]=b;  a[1]=temp=a; a[0]并没有改变!

在选择排序中,

void SelectSort2(char *s, int n)
{
	int i,j,k;
	char temp;
	for(i=0;i<n-1;i++)
	{
		temp = s[i];
		k = i + 1;
		for(j=i+2; j<n; j++)
			if(s[j]<s[k])
				k=j;
		if(s[k]<s[i])
		{
			swap(&s[k],&temp);
		}
	}
}
以上代码因为在交换过程中引入了中间变量,不能达到交换s数组的效果;

应该把temp变量去掉,并改为swap(&s[k],&s[i]);

4. 

printf("%.1lf\n",100);
输出的是0.0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值