| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 992 人关注过本帖
标题:[原创]30分钟全对的送80[高手莫笑]
只看楼主 加入收藏
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
 问题点数:0 回复次数:12 
[原创]30分钟全对的送80[高手莫笑]
30分钟内全对送80.做了,但是一个空都没对我也送他10.送完即止(没功劳有苦劳,但是要认真哦.呵呵,应该很少人连一个空都做不吧.认真点看。不是很难的) 函数说明: 函数void rcr(int a[],int n,int k)的功能是:将数组a中的元素a[0]~a[n-1]循环向右平移k个位置。为了达到总移动次数不超过n的要求。每个元素都必须只经过一次移动到达目标位置,在函数rcr中用如下算法实现:首先备份a[0]的值,然后计算机应移动到a[0]的元素的下标p,并将a[p]的值移至a[0];接着计算应该移动到a[p]的元素下标的q,并将a[q]的值移至a[p];依次类推,直到将a[0]的备份的值移到正确位置。 若此时移到的下标元素个数已经为n,则结束;否则,在备份a[1]的值,然后计算应该移到的a[1]的元素下标p,并将a[p]的值移至a[1];接着计算应该移动到a[p]的元素下标q。并将a[q]的值移至a[p];依次类推,直到将a[1]备份的值移到正确位置。 若此时移动到的元素个数已经为n,则结束;否则从a[2]开始。重复上述过程,直至将所有元素有移动到目标位置为止。 例如,数组a中的6个元素,图3-4所 示,循环向右平移2个位置后的元素的排列情况。如图3-5所示。
图片附件: 游客没有浏览图片的权限,请 登录注册
#include<stdio.h> void rcr(int a[],int n,int k) {int i,j,t,temp,count; count=0; k=k%n; if(______(1)________) {i=0; while(count<n) {j=i;t=i; temp=a[i]; while((j=(________(2)_______)!=i) {a[t]=a[j]; t=_________(3)________; count++; } ______(4)_________=temp; count++; _______(5)_______; } } } 答案在后面
搜索更多相关主题的帖子: 函数 
2005-05-08 11:41
lycnsc
Rank: 1
等 级:新手上路
帖 子:243
专家分:0
注 册:2005-3-27
收藏
得分:0 
80RMB?
2005-05-08 11:45
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
答案如下:
#include&lt;stdio.h&gt;
void rcr(int a[],int n,int k)
{int i,j,t,temp,count;
 count=0;           //记录移动元素的次数
  k=k%n;
  if(k!=0)       //如果k是n的倍数,则无须移动
  {i=0;
   while(count&lt;n)
    {j=i;t=i;
     temp=a[i];         //备份a[i]的值
  while((j=(j+k+n)%n)!=i)
    {a[t]=a[j];   /*移动相关元素,直到计算出a[i]应该移动到的目标位置*/     
     t=j;
  count++;
    }
    a[j]=temp;
    count++;
        i++;
    }
  }
}
main()
{int i,a[6]={41,25,38,47,65,76};
 rcr(a,6,2);
for(i=0;i&lt;6;i++)
  printf("%d\t",a[i]);
}


生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-05-08 11:48
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
晕了。我还没把答案贴出来。你小子就回复了。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-05-08 11:49
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-4-25
收藏
得分:0 
while((j=(j+k+n)%n)!=i)
该是j-k+n吧

/bbs/showimg.asp?BoardID=5&filename=2005-4/2005427111228529.jpg" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://bbs./bbs/showimg.asp?BoardID=5&filename=2005-4/2005427111228529.jpg');}" onmousewheel="return imgzoom(this);" alt="" /> 欢迎加入C语言QQ群698156 我们都是菜鸟乃至新手 坚信有一天定能展翅高飞 因为有着努力的决心 衷心盼望你的到来 让我们一起进步
2005-05-09 10:20
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 
运行结果不对吧?也向你师傅学习学习,上机试验了再发

2005-05-10 11:47
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 
#include<stdio.h> void rcr(int a[],int n,int k) {int i,j,t,temp,count,m; count=0; //记录移动元素的次数 k=k%n; if(k!=0) //如果k是n的倍数,则无须移动 {i=0; while(count<n) {j=i;t=i; temp=a[i]; //备份a[i]的值 while((j=(j-k+n)%n)!=i) { a[t]=a[j]; /*移动相关元素,直到计算出a[i]应该移动到的目标位置*/ t=j; count++; } a[t]=temp; count++; i++; } } } void main() {int i,a[6]={41,25,38,47,65,76}; rcr(a,6,2); for(i=0;i<6;i++) printf("%d\t",a[i]); } 错误有两处,第一处楼上已经指出,第二处在红笔处

2005-05-10 12:16
LastHeaven
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-4-8
收藏
得分:0 
呵呵~~  就做一道题 郁闷

您所拨打的用户正在革命中。。。请您稍候再拨。。。 坚强依然!永不言苦!永不言败!睇透基础C语言先!—— 编程编程再编程! 嘎嘎
2005-05-10 12:29
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
   我晕了。你竟然上机运行。够毒的。我送分给你~~~~~~~workhard。我佩服你那种求真的精神。你找到一个。魂找了一个.

[此贴子已经被作者于2005-5-11 9:37:40编辑过]



生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-05-11 07:08
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
   各位都认真做了。我没理由不送分了。只是workhard是上机运行.所以送的少点。魂有没上机我不清楚。不过他那个是关键性的一步.所以我送分多。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-05-11 09:43
快速回复:[原创]30分钟全对的送80[高手莫笑]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042922 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved