| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 309 人关注过本帖
标题:C语言分析,还望大侠不吝赐教
只看楼主 加入收藏
我是俊杰哥
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-10-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
C语言分析,还望大侠不吝赐教
#include<stdio.h>
#include<string.h>
int n,ans,i,j;
char s[100];
char get(int i)
{
 if (i<n)
  return s[i];
 else
  return s[i-n];
}
int main()
{
 scanf("%s",s);
 n=strlen(s);
 ans=0;
 for(i=1;i<=n-1;i++)
 {
  for (j=0;j<n-1;j++)
   if (get(i+j)<get(ans+j))
   {
    ans=i;
    break;
   }
   else if (get(i+j)>get(ans+j))
    break;
 }
 for (j=0;j<=n-1;j++)
  printf("%c",get(ans+j));
 printf("\n");
}
输入:CBBADADA后为什么能够输出:ACBBADAD?
请高手每一步都详细解答,小弟不胜感激。小弟正满腔热忱学C语言,但不知道怎么学。我才初二,这个程序出自C语言的哪些语法?还望不吝赐教。
搜索更多相关主题的帖子: return include 不胜感激 能够 
2012-10-13 20:02
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:15 
首先要清楚ans值的变化;
首先知道n的值为8;
然后再一步一步的分析,ans的值变化是1,3,5,7
也就是说ans的最后值是7;
然后在对数组s[]其中的元素进行输出,但它不是按照一般的顺序进行输出,而是按照get(ans+j)这个函数给它设定好的顺序进行输出,可以知道ans的此时值为7,带入函数,可以知道要输出s[i],到后来就知道用下面的规则进行输出,其实你到第二个字符输出时,你就可以知道,下面该怎样输出了。
有点罗嗦,嘿嘿 不要见怪!

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-13 21:07
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:5 
你的路才刚开始,先确定是否掌握了FOR(),IF(),FUN()等相关知识,从此程序中慢慢体会这些知识的执行情况,结果其实不是那么重要,你花一周,或一月去了解,反复看书和此程序,这个过程应该是最重要的。培养兴趣是关键。祝早成才。

www.qunxingw.wang
2012-10-13 22:03
快速回复:C语言分析,还望大侠不吝赐教
数据加载中...
 
   



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

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