| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8835 人关注过本帖
标题:用冒泡排序对字符串由大到小排不知道哪里出错
只看楼主 加入收藏
Karryu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-5-5
结帖率:90%
收藏
已结贴  问题点数:10 回复次数:12 
用冒泡排序对字符串由大到小排不知道哪里出错
#include <stdio.h>
int main()
{
    int i,j,m;
    int a[10];
    int star();
    printf("请输入这10个学生的成绩\n");
    for(i=0;i<10;i++)
    {scanf("%d",a[i]);}
    for(i=0;i<9;i++)
      for(j=0;j<9-i;j++)
        if(a[i]<a[i+1])
        {m=a[i];
        a[i]=a[i+1];
        a[i+1]=m;
        }
    for(i=0;i<10;i++)
    star();
    return 0;
}
int star()
{printf("**%d**",a[i]);
}


搜索更多相关主题的帖子: include 字符串 star 
2016-05-05 22:35
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:8 
#include <stdio.h>
int main()
{
    int i,j,m;
    int a[10];   
    printf("请输入这10个学生的成绩\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);       //这个地方取地址符&少了
    for(i=0;i<10;i++)
      for(j=i+1;j<10;j++)
        if(a[i]<a[j])
        {
            m=a[i];
            a[i]=a[j];
            a[j]=m;
        }   
    for(i=0;i<10;i++)              //你的函数调用有问题,star函数中没有定义数组a[10],不能用a[i]输出
        printf("%d\t",a[i]);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-5-5 23:12编辑过]

2016-05-05 22:53
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:1 
程序代码:
#include <stdio.h>
int main()
{
    int i,j,m;
    int a[10];
    /*int star();*/
    printf("请输入这10个学生的成绩\n");
    for(i=0;i<10;i++)
    {scanf("%d",&a[i]);}
    for(i=0;i<9;i++)
      for(j=i+1;j<=9-i;j++)
        if(a[j-1]<a[j])
        {m=a[j-1];
        a[j-1]=a[j];
        a[j]=m;
        }
    for(i=0;i<10;i++)
    /*star();*/
      printf("%d ",a[i]);
     printf("\n");
    return 0;
}
/*int star()
{printf("**%d**",a[i]);
}*/

未佩好剑,转身便已是江湖
2016-05-05 23:06
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
如果你非要函数调用,可以把数组在main外面定义
#include <stdio.h>
int star();
int a[10];
int main()
{
    int i,j,m;
 //   int a[10];   
    printf("请输入这10个学生的成绩\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<10;i++)
      for(j=i+1;j<10;j++)
        if(a[i]<a[j])
        {
            m=a[i];
            a[i]=a[j];
            a[j]=m;
        }   
   
        star();
    return 0;
}
int star()
{   
    int i;
    for(i=0;i<10;i++)
        printf("**%d**",a[i]);
}
2016-05-05 23:08
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 3楼 alice_usnet
不行的,循环的次数不对
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-05-05 23:10
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:1 
回复 5楼 wanglianyi1
for(j=i+1;j<=9-i;j++)
应该是
for(j=1;j<=9-i;j++)

未佩好剑,转身便已是江湖
2016-05-05 23:16
Karryu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-5-5
收藏
得分:0 
回复 4楼 wanglianyi1
scanf("%d",&a[i]);       //这个地方取地址符&少了

这个是什么意思?

后面你打出的那个运行的结果是**99****0****0****0……
这是为什么呢
2016-05-05 23:18
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 7楼 Karryu
&是取地址符,你用scanf把数组的元素存入数组,要告诉函数存数据的地方啊,相当于你去朋友家玩,总要知道朋友家的地址才能进入对方的家里,明白了吧。
至于输出***,那不是你想用函数调用吗,我以为你想用***做数据间的间隔呢
你说输出是***99***0**0?
是不是你输入10个成绩的时候,第一个是99,然后后面都是0.这样才会输出你说的结果

[此贴子已经被作者于2016-5-5 23:29编辑过]

2016-05-05 23:26
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 6楼 alice_usnet
2016-05-05 23:30
Karryu
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-5-5
收藏
得分:0 
回复 8楼 wanglianyi1
我知道 就是问那行是存在什么问题了吗? scanf("%d",&a[i])不是就是可以将输入的a[i]依次放进字符串a[10]里了吗
还有**的确是想隔开,我的意思是排序的结果没有显示出来
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-5-5 23:39编辑过]

2016-05-05 23:31
快速回复:用冒泡排序对字符串由大到小排不知道哪里出错
数据加载中...
 
   



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

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