| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1854 人关注过本帖
标题:输入一个整数n,接下来输入n行字符串,对每行的字符串,请将前一半字符移动 ...
只看楼主 加入收藏
易小小木
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-12-11
结帖率:100%
收藏
 问题点数:0 回复次数:3 
输入一个整数n,接下来输入n行字符串,对每行的字符串,请将前一半字符移动后一半字符后面,如果字符总数为奇数,则前一半少一个,后一半多一个处理。
运行代码:
3
abc123       //输入
123abc      //输出
abcd1234    //输入
1234abcd    //输出
123456789   //输入
567891234   //输出
需要用到strlen
搜索更多相关主题的帖子: 字符串 处理 奇数 字符 输入 
2020-12-12 11:43
易小小木
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-12-11
收藏
得分:0 
已经写出
2020-12-12 12:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

void foo( char* s )
{
    size_t n = strlen(s);
    if( n%2 == 0 )
    {
        for( size_t i=0; i!=n/2; ++i )
        {
            char t = s[i];
            s[i] = s[n/2+i];
            s[n/2+i] = t;
        }
    }
    else
    {
        char t = s[0];
        for( size_t i=n/2; i!=0; i=(i+n/2)%n )
            s[(i+n/2+1)%n] = s[i];
        s[n/2+1] = t;
    }
}


main 函数没法写,因为题目没交代字符串最大长度是多少,“每行的字符串”是否包含空格等其它字符。
2020-12-12 13:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
这一道题还可以作弊

程序代码:
void foo( char* s )
{
    size_t n = strlen(s);
    printf( "%.*s%.*s\n", (int)((n+1)/2), s+n/2, (int)(n/2), s );
}
2020-12-12 13:09
快速回复:输入一个整数n,接下来输入n行字符串,对每行的字符串,请将前一半字符 ...
数据加载中...
 
   



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

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