| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 609 人关注过本帖
标题:用malloc开辟动态存储单元,输入三个整数,按从小到大输出
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
已结贴  问题点数:5 回复次数:4 
用malloc开辟动态存储单元,输入三个整数,按从小到大输出
#include <stdio.h>
#include <stdlib.h>

main()
{int t,*p1,*p2,*p3;
 p1=(int *)malloc(sizeof(int));
 p2=(int *)malloc(sizeof(int));
 p3=(int *)malloc(sizeof(int));
 scanf("%d%d%d",&p1,&p2,&p3);
 printf("(1)*p1=%d,*p2=%d,*p3=%d\n",*p1,*p2,*p3);
 if (*p1>*p2){t=*p1;*p1=*p2;*p2=t;}
 if (*p1>*p3){t=*p1;*p1=*p3;*p3=t;}
 printf("(2)*p1=%d,*p2=%d,*p3=%d\n",*p1,*p2,*p3);
 system("PAUSE");
 return 0;
}
这程序有点傻,compile 可以过去,但是运行不出结果,scanf以后就出错了。我这样的scanf的表达不对吗?请高手指正。
搜索更多相关主题的帖子: return system include 存储 return system include 存储 
2011-07-07 21:41
wjm22
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:118
注 册:2011-7-5
收藏
得分:1 
试下不用地址运算符
2011-07-07 22:18
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
你往指针里面输入数据 当然出错了  按楼上说的把取地址去掉

                                         
===========深入<----------------->浅出============
2011-07-07 22:22
weiwei555
Rank: 5Rank: 5
来 自:中国
等 级:职业侠客
帖 子:179
专家分:323
注 册:2011-3-4
收藏
得分:1 
p1已经表示地址了,所以不必加地址符
2011-07-07 22:26
小乙哥
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2011-5-30
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define D 100

int main(void)
{
    char a[N] = {'\0'};
    char *p[D] = {NULL};
    int i = 0;
    int m = 0;
    char *ps = NULL;
    bool f = false;

    printf("请输入任意个整数,再按一次回车结束:\n");

    while((*fgets(a, N, stdin) != '\n') && i < N)
    {
        p[i] = (char *)malloc(strlen(a) + 1);
        if(p[i] == NULL)
        {
            printf("内存不足!\n");
            return 1;
        }
        strcpy(p[i++], a);
    }
    m = i;
    while(!f)
    {
        f = true;
        for(i = 0; i < m-1; i++)
        {
            if(atoi(p[i]) > atoi(p[i+1]))
            {
                f = false;
                ps = p[i];
                p[i] = p[i+1];
                p[i+1] = ps;
            }
        }
    }
    printf("排序后的输出:\n");
    for(i = 0; i < m; i++)
    {
        printf("%d\n", atoi(p[i]));
        free(p[i]);
        p[i] = NULL;
    }
    
    return 0;
}

我帮你改了一下,可以输入任意个整数,并且改一改就可以变成任意类型的排序

[ 本帖最后由 小乙哥 于 2011-7-7 23:50 编辑 ]
2011-07-07 23:21
快速回复:用malloc开辟动态存储单元,输入三个整数,按从小到大输出
数据加载中...
 
   



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

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