| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:abcdefgh->ahcbedgf
只看楼主 加入收藏
wiseley747
Rank: 1
等 级:新手上路
帖 子:22
专家分:8
注 册:2012-8-16
结帖率:100%
收藏
已结贴  问题点数:3 回复次数:5 
abcdefgh->ahcbedgf
程序代码:
#include <stdio.h>
#include <stdlib.h>
void fun(char *s){
    int i, n, k;
    char c;
    n=0;
    for(i=0; s[i]!='\0'; i++)
    n++;
    if(n%2==0)
    k=n-1 ; 
      
    else k=n-2;
    c=s[k] ;
       
    for(i=k-2; i>=1; i=i-2)
    s[i+2]=s[i];
    s[1]=c;
}
int main(){
  char s[80]="abcdefgh";
  printf("\nThe original string is : %s\n",s);

 
  fun(s);

 
  printf("\nThe result is : %s\n",s);
  system("pause");
  return 0;
}
形参s 所指的字符
串为:abcdefgh,执行结果为:ahcbedgf。

else k=n-2;
    c=s[k] ;

何时n=9,k=7, then c=s[7]
c被放入”h”
2012-08-17 10:05
wsj3000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:78
专家分:161
注 册:2009-8-4
收藏
得分:0 
没看懂,你要干嘛?
2012-08-17 10:57
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:0 
没看明白
2012-08-17 11:09
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:2 
不懂楼主的问题是啥意思,我的理解是:
要使n=9,k=7那么肯定要将字符串加一个,而要使加完以后s[7]仍然为"h",则应该加在h后面,如图中的"?"处:
图片附件: 游客没有浏览图片的权限,请 登录注册

附上测试代码,只是加了printf语句,其他逻辑并没有更改:
程序代码:
#include <stdio.h>
#include <stdlib.h>
void fun(char *s)
{
    int i, n, k;
    char c;
    n=0;
    for(i=0; s[i]!='\0'; i++)
    {
        n++;
        printf("n=%d ",n);
    }
    if(n%2==0)
        k=n-1 ;
    else
        k=n-2;
    printf("k=%d ",k);
    c=s[k] ;
    printf("c=\"%c\" <- s[%d]=\"%c\"\n",c,k,s[k]);  
    for(i=k-2; i>=1; i=i-2)
    {
        printf("s=%s ",s);
        s[i+2]=s[i];
        printf("s[%d]<-s[%d], s=%s\n",i+2,i,s);
    }
    s[1]=c;
}
int main()
{
  char s[80]="abcdefgh?";
  printf("\nThe original string is : %s\n",s);
  fun(s);
  printf("\nThe result is : %s\n",s);
  system("pause");
  return 0;
}
2012-08-17 11:15
wiseley747
Rank: 1
等 级:新手上路
帖 子:22
专家分:8
注 册:2012-8-16
收藏
得分:0 
回复 楼主 wiseley747
程序代码:
/*給定程式中,函數fun 的功能是:把形參s 所指字串中下標為奇數的字元右
移到下一個奇數位置,最右邊被移出字串的字元繞重播到第一個奇數位置,下
標為偶數的字元不動(注:字串的長度大於等於2)。例如,形參s 所指的字元
串為:abcdefgh,執行結果為:ahcbedgf。*/


#include <stdio.h>
#include <stdlib.h>
void fun(char *s){
    int i, n, k;
    char c;
    n=0;
    for(i=0; s[i]!='\0'; i++)
    n++;       //n最後為8
    if(n%2==0)
    k=n-1 ;     //k=7
      
    else k=n-2; //這裡說什麼
    c=s[k] ; //這裡說什麼
       
    for(i=k-2; i>=1; i=i-2)
    s[i+2]=s[i]; //將b,d,f右移二位
    s[1]=c;  //將h放去第二個位置
    
}
int main(){
  char s[80]="abcdefgh";
  printf("\nThe original string is : %s\n",s);

 
  fun(s);

 
  printf("\nThe result is : %s\n",s);
  system("pause");
  return 0;
}
else k=n-2; //這裡說什麼
    c=s[k] ; //這裡說什麼
2012-08-17 11:19
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:1 
回复 5楼 wiseley747
你到底想要问什么
else k=n-2; //這裡說什麼
    c=s[k] ; //這裡說什麼
这里其实是这样的:
if(n%2==0)
    k=n-1 ;     //k=7
else
    k=n-2;     //這裡說什麼
c=s[k] ;     //這裡說什麼
就是说如果(n%2==0)不成立,那么就是n是奇数,
k就取n-2
比如n=9,那么k=7
然后把s[k]赋给c
2012-08-17 11:29
快速回复:abcdefgh->ahcbedgf
数据加载中...
 
   



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

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