标题:模糊的指针问题,求高手指点
只看楼主
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
结帖率:100%
 问题点数:0 回复次数:6 
模糊的指针问题,求高手指点
新手入门,麻烦高手给帮我修正一下下程序
多谢
/*通过调用函数指针达到求最大值和排序的目的*/
程序代码:
#include<stdio.h>
#include<string.h>
main()
{
    char max(char *p);
    char px(char *str);
    void fun(char,char (*f)(char *t));
    char a[10],b[10],*p;
    p=b;
    scanf("%s",a);
    scanf("%s",b);
    printf("max=");
    fun(a,max);
    fun(b,px);
    printf("%s",p);
    }
char max(char *p)
    {char m;
        m=*p;
        while(*p++>m)
        {m=*p;}
        return(m);
        }
    char px(char *str)
        {
            int i,j;
           char k;
            for(i=0;i<9;i++)
             for(j=0;j<10-i-1;j++)
               if(str[j]>str[j+1])
            {k=str[j];str[j]=str[j+1];str[j+1]=str[j];}                }
    void fun(char *s,char (*f)(char *t))
            {char m;
                m=(*f)(*s)
                printf("%c",m);
                }
搜索更多相关主题的帖子: 模糊 指针 
2009-10-14 21:50
liuyuling
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-10-14
得分:0 
我是个新手,安你的意思写个差不多的,至于改么我是真蒙,你写的很多地方我看不懂
下面这个超级简陋,先打10个数(必须10个)算个最大值,在打10个数(必须10个)来个从小到大排序,我知道有更好的希望哪位高手来个实用简单的,最好是现成模块。
程序代码:
#include<stdio.h> 
#include<string.h> 
void main() 
{ 
    int max(int *p); 
    int px(int *str); 
    int a[10] ,b[10] , i ; 
     
    for(i=0;i<10;i++) 
        scanf("%d",&a[i]); 
    printf("max=%d",max( a )); 
    getchar(); 
    for(i=0;i<10;i++) 
        scanf("%d",&b[i]); 
 
    px( b ); 
    for(i=0;i<9;i++) 
        printf("%d , ",b[i]); 
} 
    int max(int *p) 
    { 
        int m , c ; 
        m=*p  ; 
      for(c=0; c<9; c++) 
      {   *p++; 
          if(*p>m) 
             m=*p; 
      } 
      return(m); 
    } 
     
    int px(int *str) 
        { 
        int i,j; 
        int k; 
        for(i=0; i<10-1; i++) 
        for(j=0; j<10-i-1; j++) 
        if(str[j]>str[j+1]) 
           {k=str[j]; 
            str[j]=str[j+1]; 
            str[j+1]=k; 
        }                 
    }
2009-10-15 20:03
yutianshangu
Rank: 2
等 级:论坛游民
帖 子:25
专家分:73
注 册:2008-10-12
得分:0 
#include "stdio.h"
void main()
{
    int i=0;
    void max(int *);
    void px(int *);
    void fun(int *,void (*f)(int *));
    int a[10];
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    fun(a,max);
    fun(a,px);
}
void max(int *p)
{
    int i,max;
    max=*p;
    for(i=0;i<10;i++)
    {
        if(*p>max) max=*p;
        p++;
    }
    printf("%d",max);
}
void px(int *p)
{
    int i,j,t;
    for(i=0;i<9;i++)
        for(j=0;j<9-i;j++)
        {
            if(p[j]>p[j+1])
            {
                t=p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
        }
    for(i=0;i<10;i++)
        printf("%3d",p[i]);
 
}
void fun(int *p,void (*f)(int *))
{
    f(p);
}
你看看这个吧。我也不是太会。本来昨天晚上试着按你那个改了一下。实在是改不好。我自己写了一个差不多功能的。你看看不行的话再说吧。
2009-10-16 00:07
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
得分:0 
回复 2楼 liuyuling
谢谢

想象力征服世界
2009-10-17 19:19
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
得分:0 
回复 3楼 yutianshangu
多谢

想象力征服世界
2009-10-17 19:20
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
得分:0 
比较的是数字的话,不能用%s输入。这个是输入字符串的
2009-10-17 19:38
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
得分:0 
楼主加油,你写的代码不是一般的有问题!
2009-10-17 21:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-288573-1-1.html




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

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