| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2901 人关注过本帖
标题:关于指针数组的c语言程序题,请大家帮帮忙看看哪里不对,谢谢!
只看楼主 加入收藏
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
明白你的意思,但是你想下,你给定的数组是6个元素a[0]--a[5],加上你要插入的一个数,除非是覆盖掉原来的一个元素,不然数组就越界了,对吧,所以要考虑好具体如何处理,再写代码。可以把数组长度改为7,这个最简单,但是有一定局限性。另外一种就是用malloc函数;至于插入数据,这个也好处理,一种是把要插入的数据从a[0]开始,与数组元素逐个比较,遇到比它大或者相等的话就放在这个数组元素的位置,然后把后续元素均后移一位。
另外一种就是直接把要插入的数据放到数组最后,然后写一个排序函数,从小到大输出。方法大同小异,或者你也可以想想其他的方法。
你理解了的话可以自己动手试试

[此贴子已经被作者于2016-7-7 14:18编辑过]

2016-07-07 12:28
FATALIZM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-6-28
收藏
得分:0 
#include <stdio.h>

insert(int *p,int d)//[Note] initializing argument 1 of 'int insert(int*, int)'
{
int i,j;
for(i=0;i<6;i++,p++)
{
     if (p[i]<=d)
         {
            for(j=6;j>i+1;j--)
            {
             p[j]=p[i-1];
            }
         }
     p[i]=d;
}

}
main()
{
int *p,a[6]={1,2,4,8,12,14};
int d;
p=a;
printf("请输入一个数");
scanf("%d",&d);
insert( *p, d);//[Error] invalid conversion from 'int' to 'int*' [-fpermissive]
printf("%d",a[6]);

}



我又改了改,还是不对,总是显示我注释的那个错误,大家帮忙再看看吧
2016-07-07 12:38
FATALIZM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-6-28
收藏
得分:0 
回复 11楼 wanglianyi1
好,那我再改改,我也不大知道越界是什么,刚开始学各种不明白,谢谢啊
2016-07-07 12:39
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
回复 6楼 FATALIZM
你试一下这个

#include <stdio.h>

void insert(int a[],int d)
{
   
    int i,j;
    int *p=a;
    i=0;
    while(i<6){
        if(p[i]>=d)
        {
            for(j=6;j>i;j--){
                p[j]=p[j-1];
            }
            p[i]=d;
            break;
        }
        i++;
    }
    if(i==6){
        p[i]=d;
    }
}
int main()
{
    int i;
    int a[7]={1,2,4,6,12,14};
    int d;

    printf("插入前数组:");
    for(i=0;i<6;i++)
        printf("%d\t",a[i]);

    printf("\ninput a number:");
    scanf("%d",&d);
    insert(a,d);

    printf("\n插入后数组:");
    for(i=0;i<7;i++)
        printf("%d\t",a[i]);
    printf("\n");
    return 0;
}
2016-07-07 12:55
FATALIZM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-6-28
收藏
得分:0 
回复 14楼 word123
输出结果是0,不知道为啥,我改了几次都变成零了
2016-07-07 13:17
FATALIZM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-6-28
收藏
得分:0 


#include<stdio.h>
void insert(int *p,int d)
{
    int i =0,j;
    while(p[i]<d)
    {
        i++;
    }
    for(j=6;j>i;j--)
    {
        p[j]=p[j-1];
    }
    p[i] = d;
}
main()
{
    int p[10]={1,3,4,8,15,17};
    int d,i;
    printf("请输入要插入的整数:");
    scanf("%d",&d);
        printf("原序列为:");
    for (i=0;i<6;i++)
    {
        printf("%d",p[i]);
    }
    printf("\n");
printf("新序列为:");
insert(p,d);
for(i=0;i<7;i++)
{
    printf("%d",p[i]);
}
printf("\n");
fflush(stdin);
getchar();
}
又改了一版,还是不行,原题如下:
已知一有序序列1,3,4,8,15,17,要求从键盘输入一个整数,将此整数插入到此有序序列中。要求输出原始数组和插入之后的数组。要求编制函数insert(int *p,int d)实现此功能,在主函数调用此函数。
提示:例如输入整数位7,首先要找到7在整个序列中的位置,然后将7插入到当前位置。
2016-07-07 13:21
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
[quote]以下是引用FATALIZM在2016-7-7 13:21:38的发言:
程序没什么大问题,就是考虑的不全面,
#include<stdio.h>
void insert(int *p,int d)
{
    int i =0,j;
    while(p[i]<d)
    {
        i++;
    }
  if(i<6)
    {
        for(j=6;j>i;j--)
        {
         p[j]=p[j-1];
        }
        p[i] = d;
    }
    else p[6]=d;//比最后一个数大的时候就在最后一位的后一位加上d就行了。
   
}
main()
{
    int p[10]={1,3,4,8,15,17};
    int d,i;
    printf("请输入要插入的整数:");
    scanf("%d",&d);
        printf("原序列为:");
    for (i=0;i<6;i++)
    {
        printf("%d\t",p[i]); //多个‘\t’,输出好看些,也方便你观察,那怕你加几个空格也好。后面也一样
    }
    printf("\n");
printf("新序列为:");
insert(p,d);
for(i=0;i<7;i++)
{
    printf("%d\t",p[i]);
}
printf("\n");
fflush(stdin);
getchar();
}
2016-07-07 13:53
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 13楼 FATALIZM
越界,简单来说就是你定义数组a[5],那么你能赋值和使用的数组元素是a[0]-a[4],一共5个元素,如果你使用了a[5]就会出现错误了
2016-07-07 14:15
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:3 
图片附件: 游客没有浏览图片的权限,请 登录注册


不知道你的为什么不行?
2016-07-07 14:16
FATALIZM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-6-28
收藏
得分:0 
回复 17楼 linlulu001
图片附件: 游客没有浏览图片的权限,请 登录注册
结果一直是这样的,我也不知道为什么
2016-07-07 14:26
快速回复:关于指针数组的c语言程序题,请大家帮帮忙看看哪里不对,谢谢!
数据加载中...
 
   



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

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