| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1412 人关注过本帖
标题:数组中添加一个数字(求找错)
只看楼主 加入收藏
看谁都是你
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-10-13
结帖率:57.14%
收藏
已结贴  问题点数:2 回复次数:9 
数组中添加一个数字(求找错)
#include <stdio.h>
int main(int argc, char *argv[])
{
    int a[7],i,j,b,c;
    printf("请输入一个6个数的数组:\n");
    for(i=0;i<6;i++)
        scanf("%d",&a[i]);
    printf("请输入在哪个数字前面加一个数:");
    scanf("%d",&b);
    printf("请输入需要加入的数字:");
    scanf("%d",&c);
    for(i=0;i<7;i++)
    {
        if(a[i]==b)
        {   
            for(j=5;j>i;j--)
            {
                a[j+1]=a[j];   
            }
            a[i]=c;
        }
    }
    for(i=0;i<7;i++)
    printf("%d  ",a[i]);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册




哪里出错了???
搜索更多相关主题的帖子: include 
2016-11-17 15:27
Ted_Ming
Rank: 2
等 级:论坛游民
帖 子:15
专家分:35
注 册:2016-11-2
收藏
得分:0 
#include <stdio.h>
int main(int argc, char *argv[])
{
    int a[7],i,j,b,c;
    printf("请输入一个6个数的数组:\n");
    for(i=0;i<6;i++)
        scanf("%d",&a[i]);
    printf("请输入在哪个数字前面加一个数:");
    scanf("%d",&b);
    printf("请输入需要加入的数字:");
    scanf("%d",&c);
    for(i=0;i<7;i++)
    {
        if(a[i]==b)
        {   
            for(j=5;j>=i;j--)
            {
                a[j+1]=a[j];   
            }
            a[i]=c;
        }
    }
    for(i=0;i<7;i++)
    printf("%d  ",a[i]);
    return 0;
}

a[j+1] = a[j]; i = 1 时, j取不到a[1], 也就没有a[2] = a[1] 这一步替换
2016-11-17 15:35
看谁都是你
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-10-13
收藏
得分:0 
回复 2楼 Ted_Ming
图片附件: 游客没有浏览图片的权限,请 登录注册

可是运行结果是这个哎
???
2016-11-17 15:38
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:2 
回复 楼主 看谁都是你
for(i=0;i<7;i++)
    {
        if(a[i]==b)
        {   
            for(j=5;j>i;j--)    //这里改成j>=i
            {
                a[j+1]=a[j];   
            }
            a[i]=c;
        }
    }
2016-11-17 15:45
看谁都是你
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-10-13
收藏
得分:0 
回复 4楼 yangfrancis
改过之后运行结果如下:




请输入一个6个数的数组:
1 3 4 5 6 7
请输入在哪个数字前面加一个数:3
请输入需要加入的数字:2
1  2  2  2  2  2  2  请按任意键继续. . .



还是有问题

2016-11-17 15:50
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 5楼 看谁都是你
疏忽了,a[i]=c;后面加句break;
2016-11-17 16:00
看谁都是你
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-10-13
收藏
得分:0 
回复 6楼 yangfrancis
感天动地啊
弄了我很久
谢谢大神
2016-11-17 16:05
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:0 
如果输入的数组中存在相同的数字,又该咋办呢?例如在{1,3,4,4,5,6}中,在4前面添加7,该怎办呢?如何在每个4前面添加数字7呢?
2016-11-18 10:55
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
如下代码试试,如果插入的数据和查找的数据相同就会死循环。
程序代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
    int a[15],i,j,k,b,c;
    printf("请输入一个6个数的数组:\n");
    for(k=0;k<6;k++)
        scanf("%d",&a[k]);
    printf("请输入在哪个数字前面加一个数:");
    scanf("%d",&b); 
    printf("请输入需要加入的数字:");
    scanf("%d",&c); 
    for(i=k;i;i--)
    {   //倒着查找防止右移后重复查找
        if(a[i-1]==b)
        {
            for(j=k;j>i-1;j--)a[j]=a[j-1];  //数据右移空出插入位置
            a[i-1]=c;
            k++;                            //插入后总数目增加1个
        }
    }
    for(i=0;i<k;i++)printf("%d  ",a[i]);
    return 0;
}


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

2016-11-18 11:33
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 8楼 纵横阳仔
程序代码:
#include <stdio.h>

#define MAX 20

typedef struct __struct_node
{
    size_t length;
    int data[MAX];
} String;

void display(String *ss)
{
    printf("String:\n");
    for (size_t i = 0; i < ss->length; ++i)
    {
        printf("%d ", ss->data[i]);
    }
    printf("\n");
}

void insert(String *ss, size_t pos, int data)
{
    if (pos < 0) return;
    if (ss->length == MAX) return;
    for (size_t i = ss->length; i > pos; --i)
    {
        ss->data[i] = ss->data[i - 1];
    }
    ss->length += 1;
    ss->data[pos] = data;
}

void insertBefore(String *ss, int beforeItem, int data)
{
    for (size_t i = 0; i < ss->length; ++i)
    {
        if (beforeItem == ss->data[i])
        {
            insert(ss, i, data);
            i += 1;
        }
    }
}

void insertBefore2(String *ss, int beforeItem, int data)
{

    size_t count = 0;
    for (size_t i = 0; i < ss->length; ++i) count += beforeItem == ss->data[i];

    if (ss->length + count > MAX) return;

    ss->length += count;
    for (size_t i = ss->length - 1; count; --i)
    {
        ss->data[i] = ss->data[i - count];
        if (beforeItem == ss->data[i])
        {
            count -= 1;
            ss->data[--i] = data;
        }
    }
}

int main(void)
{
    String ss = {.data={1, 3, 4, 4, 5, 6}, .length = 6};

    display(&ss);

    insertBefore(&ss, 4, 7);

    display(&ss);

    insertBefore(&ss, 4, 4);

    display(&ss);

    insertBefore2(&ss, 4, 7);

    display(&ss);

    insertBefore2(&ss, 4, 4);

    display(&ss);

    return 0;
}


[fly]存在即是合理[/fly]
2016-11-18 11:49
快速回复:数组中添加一个数字(求找错)
数据加载中...
 
   



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

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