| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1427 人关注过本帖
标题:调用函数对字符按大小排序 错在哪了
只看楼主 加入收藏
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
调用函数对字符按大小排序 错在哪了
#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    void  pai(char);//定义排序函数
    char s[10] = { 'a','d','c','h','g' };
    printf("排序前");
    for (i = 0;i < strlen(s);i++)
        printf("%d", s[i]);
    pai(s[10]);
    printf("排序后");
    for (i = 0;i < strlen(s);i++)
        printf("%d", s[i]);
        return 0;
}
void pai(char s[10])
{
    int i, j, k;
    char t;
    for (i = 0;i < strlen(s);i++)
    {
        k = i;
        for (j = 0;j < strlen(s);j++)
            if (s[j]>s[i]) k = j;
        {
            t = s[i];s[i] = s[j];s[j] = s[t];
        }
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: include return 
2016-06-10 08:52
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
收藏
得分:1 
strlen是测字符串长度的函数
2016-06-10 14:26
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
收藏
得分:1 
不好意思之前没仔细看
#include<stdio.h>
#include<string.h>
int main()
{
    unsigned int i;
    void  pai(char x[],int n);//对函数的声明
    char s[10] = { 'a','d','c','h','g' };
    printf("排序前");
    for (i = 0;i < strlen(s);i++)
        printf("%d", s[i]);
    pai(s,10);
    printf("排序后");
    for (i = 0;i < strlen(s);i++)
        printf("%d", s[i]);
        return 0;
}
void pai(char x[],int n)
{
    unsigned int i, j, k;
    char t;
    for (i = 0;i < strlen(x);i++)
    {
        k = i;
        for (j = 0;j < strlen(x);j++)
            if (x[j]>x[i]) k = j;
        {
            t = x[i];x[i] = x[j];x[j] = x[t];
        }
    }
}
2016-06-10 14:45
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
收藏
得分:3 
原来你的选择排序法也错了
#include<stdio.h>
#include<string.h>
int main()
{
    unsigned int i;
    void  pai(char x[],int n);//对函数的声明
    char s[10] = { 'a','d','c','h','g' };
    printf("排序前");
    for (i = 0;i < strlen(s);i++)
        printf("%5c", s[i]);
    printf("\n");
    pai(s,10);
    printf("排序后");
    for (i = 0;i < strlen(s);i++)
        printf("%5c", s[i]);
    printf("\n");
        return 0;
}
void pai(char x[],int n)
{
    unsigned int i, j, k;
    char t;
    for (i = 0;i < strlen(x);i++)
    {
        k = i;
        for (j = k;j < strlen(x);j++)
            if (x[j]>x[i]) k = j;
            if(k!=i)
        {
            t = x[i];x[i] = x[k];x[k] = t;
        }
    }
}
2016-06-10 14:53
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:1 
楼上就是子函数int n多余了,其它没问题。
2016-06-10 17:33
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
楼主的显式错误是函数声明和实体函数定义的形参不一致以及函数形参定义错误,声明是void pai(char),函数参数是字符型变量,函数实体是void pai(char s[10]),是一个数组,并且数组形参不能这样使用。要达到楼主的需求则声明是void pai(char []),函数是void pai(char s[])。
楼主的另一个错误是未搞清字符数组和字符串的区别,不是字符串就不能使用strlen函数。


能编个毛线衣吗?
2016-06-10 17:53
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
真的很谢谢大家
2016-06-10 20:22
快速回复:调用函数对字符按大小排序 错在哪了
数据加载中...
 
   



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

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