网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月19日
漏签
0
天
c语言吧
关注:
790,150
贴子:
4,288,423
看贴
图片
吧主推荐
视频
游戏
1
2
3
4
5
6
7
下一页
尾页
100
回复贴,共
7
页
,跳到
页
确定
<<返回c语言吧
>0< 加载中...
大家把自己觉得经典的算法写进来
只看楼主
收藏
回复
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
大家把自己觉得经典的算法写进来 不要全部程序 只要算法就行了 样简单明了 谢谢支持````` 比如
1:交换算法 交换a,b 设置中间变量t {t=a,a=b,b=t}
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
2:排序算法 a,b,c大到小排序
if(a<b) {t=a,a=b,b=t};
if(a<c) {t=a,a=c,c=t};
if(b<c) {t=b,b=c,c=t};
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3:3个数求最大值 可以用交换,然后输出最大的,还有一种简单点的
max=a>b?a:b
if(c>a) max=c
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
4:多个数排序(10个)可以用冒泡法(书上有),这里介绍一种不同的
for(i=0;i<+9;i++)
for(j=0;j<=9;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
5:倒着输出法
for(i=0,j=9;i<j;i++;j--)
{t=a[i];
a[i]=a[j];
a[j]=t;
}
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
6:移位算法,意思是1 2 3 4 5 左移一位变成2 3 4 5 1
右移一位变成5 1 2 3 4
左:t=a[0]/*把第一个数提出来*/
for(i=0;i<=4;i++)
a[i-1]=a[i]; /*把a[i]赋值个前一个数*/
a[4]=t; /*最后一个数*/
右:
t=a[4]; /*把最后一个数提出来*/
for(i=3;i>=0;i--)
a[i+1]=a[i];
a[0]=t;
璐村惂鐢ㄦ埛_007Wb1R馃惥
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
由于时间有限就写这些了`...还有好多,以后慢慢写 对新手有些小小的帮助吧```希望大家也都来贡献自己的想法,经验造福新手(其实我也是菜鸟(:
61.186.154.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
两个数交换,不设新变量
a=a+b;
b=a-b;
a=a-b;
219.216.78.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好象5楼有点问题啊!!for(i=0,j=9;i<j;i++;j--) 是不是要改为
for(i=0,j=9;i<j;i++,j--) !是吗??高手说话啊!!
221.198.76.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复6楼
#define j 4//数组元素数
int a[j]
for(i=0;i<j;i++)
a[i]=a[i]+a[j-i];
a[j-i]=a[i]-a[j-i];
a[i]=a[i]-a[j-i]
j--
//活用5楼算法 颠倒数组元素值
欢迎访问我的论坛
http://60.30.243.50/stbbs
勤劳的蜗牛
路人
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
交换两个数字的顺序
cha(int a,int b)
{a=a+b;
b=a-b;
a=a-b;
}
sadhorse
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
求3个数a,b,c中的最大:
max=a>b?(a>c?a:c):(b>c?b:c)
sorc
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
int a,b;
a=a+b;
b=a-b;
a=a-b;
这样可能会出错
比如在32位环境下int型占4个字节也就是a最大为2147438647
16位环境下int型占2个字节 最大值为32767
a+b可能会超出这个范围
欢迎光临 开发者论坛
http://60.30.243.50/stbbs
elva6401
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
无临时变量的交换两数函数 漏洞揭密
有一个巧妙的数值swap函数是这样写的:
void swap (int& a, int& b)
{
a=a+b; //防止溢出,漏洞1。
b=a-b;
a=a-b;
}
之所以要这样而不用中间变量,据说是因为原来的计算机内存容量小,所以能节约的地方要尽量节约。具体的原因我这里不想去考证了,我要说的是,在这个看似简单而巧妙的函数中暗藏着危机。
这个危机是由形参中变量的引用带来的。我们知道C++中引入的“引用”,实际上就是变量的别名,也就是说允许一个内存单元对N个变量名。那么对该swap函数的调用:
swap (a, a); //漏洞2。
会造成函数作如下的解释:
a=a+a;
a=a-a;
a=a-a;
很显然,这样不会得到正确的结果。我们想要的结果本来应该是交换后结果不变(采用中间变量的方法得到的结果就是如此),但是实际的结果是a=0?很明显,我们采用这个函数的前提是a和b不能是同一个变量。
……
218.19.34.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
elva6401分析得非常好
其实这只是一些高手在闹着玩而已,实际上不会有人用这种算法
因为翻译成机器码时这种算法明显增长了程序的字节数
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示