| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:比较费解的排序问题
只看楼主 加入收藏
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
收藏
 问题点数:0 回复次数:4 
比较费解的排序问题

#include<stdio.h>
#include<string.h>
//将输入的字符串a,将所有偶数项按下标从大到小放在a的后半部分,
//将所有奇数项按下标从小到大放在a的前半部分,输出a;
//如asdf变为adfs
//请问我的程序为什么不到达到要求?
main()
{
int i,j,n,m;
char a[10],b[10],d[10];
j=0;

gets(a);
n=strlen(a);

for(i=0;i<n;i=i+2){//奇数项
b[j]=a[i];
j++;
}

m=strlen(b);

puts(b);


j=0;
for(i=1;i<n;i=i+2){//偶数项
d[j++]=a[i];
}

m=strlen(d);

for(i=m-1;i>=0;i--)
putchar(d[i]);

}


搜索更多相关主题的帖子: include 字符串 
2007-08-22 18:35
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
你在哪里排序了?

偶学编程,也许本身就是一个错。。。
2007-08-22 18:51
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 

/*---------------------------------------------------------------------------
File name: 比较费解的排序问题.c
Author: HJin (email: fish_sea_bird [at] yahoo [dot] com )
Created on: 8/22/2007 13:22:19
Environment: Windows XP Professional SP2 English +
Visual Studio 2005 v8.0.50727.762

//将输入的字符串a,将所有偶数项按下标从大到小放在a的后半部分,
//将所有奇数项按下标从小到大放在a的前半部分,输出a;
//如asdf变为adfs
//请问我的程序为什么不到达到要求?

If you are allowed to use O(n) space, then this problem
is trivial; if you are only allowed to use O(1) space,
then the problem is challenging.

The code below assumes that you want to use O(n) space.

1234567890
Original string: 1234567890
Transformed string: 1357924680
Press any key to continue . . .

1234 6789
Original string: 1234 6789
Transformed string: 13 792468
Press any key to continue . . .
*/

#include <stdio.h>
#include <stdlib.h>

#define N 100

int main(int argc, char** argv)
{
char a[N];
char aux[N];
int n;
int i;
int j=0;

scanf("%[^\n]", a);
printf("Original string: %s\n", a);

n=strlen(a);

for(i=0; i<n; i+=2)
{
aux[j]=a[i];
++j;
}
for(i=1; i<n; i+=2)
{
aux[j]=a[i];
++j;
}

for(i=0; i<n; ++i)
a[i] = aux[i];

printf("Transformed string: %s\n", a);


return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-23 04:22
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
收藏
得分:0 

#include<stdio.h>
#include<string.h>

main()
{
int i,j,n,m;
char a[10],b[10],d[10];
j=0;

gets(a);
n=strlen(a);

for(i=0;i<n;i=i+2){
b[j]=a[i];
j++;
}
b[j]='\0';//加上

m=strlen(b);

puts(b);


j=0;
for(i=1;i<n;i=i+2){
d[j++]=a[i];
}
d[j]='\0';//加上
m=strlen(d);

for(i=m-1;i>=0;i--)
putchar(d[i]);

}

//Ok了!我的错误在于没理解字符串以'\0'结尾。谢谢~~


一分耕耘,一分收获。
2007-08-23 09:21
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
收藏
得分:0 
版主的很好!

一分耕耘,一分收获。
2007-08-23 09:22
快速回复:比较费解的排序问题
数据加载中...
 
   



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

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