| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 660 人关注过本帖
标题:大学题库:数组排序,求该错
取消只看楼主 加入收藏
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:1 
大学题库:数组排序,求该错
题目:1.从键盘上输入n个数(n<=20)放在一个一维数组中,排序,使其数组中下标为奇数的数由大到小排列,下表为为偶数的数由小到大排列,且下标为奇数的最小数大于下标为偶数的最大数。

思路:用冒泡法将数组先排序,形成升序数列。将数列的前一半的元素从小到大赋值给偶数位,后一半的元素从大到小赋值给奇数位。

程序如下:
#include <stdio.h>
void main()

{
    int n,i,j,t;
    char s1[20],s2[20];

    printf("please input numbers:");

    gets(s1);

    n=strlen(s1);

    for(i=0;i<n-1;i++)      \\冒泡法,已经检查,正确的。
    for(j=0;j<n-i-1;j++)
    {
        if(s1[j]>s1[j+1])
        {
            t=s1[j];
            s1[j]=s1[j+1];
            s1[j+1]=t;
        }
    }

    puts(s1);                                                                           
    for(i=0;i<=(n-1)/2&&s2[2*i+1]!='\0';i++)    \\\程序错误处在此处赋值,比如我输4321,正确的S2输出应该是1423,但是计算机输出却是14232P。请大家帮忙!
                                                    指出错误。另求更好的算法学习!我只会C,是个新手,指针都还没学!
    {

        s2[2*i]=s1[i];
        s2[2*i+1]=s1[n-1-i];

    }

   

    puts(s2);
}
}
搜索更多相关主题的帖子: 大学 元素 
2011-03-05 12:34
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
收藏
得分:0 
回复 4楼 『点点滴滴』
谢谢
2011-03-07 23:09
快速回复:大学题库:数组排序,求该错
数据加载中...
 
   



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

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