首页 新闻 会员 周边

数字的插入,为什么运行结果不对?

0
[待解决问题]

#include<stdio.h>
int main()
{
int i,a[9];
int opcate,zi;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
printf("请输入位置与数字:");
scanf("%d%d",&opcate,&zi);
for(i=1;i<10-opcate;i++)
{
 a[10-i]=a[9-i];
}
 a[opcate]=zi;
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

Yingyingyang的主页 Yingyingyang | 菜鸟二级 | 园豆:210
提问于:2017-02-27 19:51
< >
分享
所有回答(1)
0
#include <stdio.h>

#define SIZE 10

void array_show(int arr[] , int len);
void array_insert(int arr[] ,int len, int index,int val);

int main()
{    
    int arr[SIZE];
    int i;
    int opcate,val;
    
    printf("请输入%d个数组元素",SIZE-1);
    
    for(i=0;i<SIZE-1;++i)
       scanf("%d",arr+i);
    
    printf("数组元素如下:\n");
    array_show(arr,SIZE-1);
    
    printf("输入插入的索引,和插入的数值");
    scanf("%d %d",&opcate,&val);
    array_insert(arr,SIZE,opcate,val);
    
    printf("数组元素如下:\n");
    array_show(arr,SIZE);
    
    
    
        
    
    return 0;
}




// 打印数组 
void array_show(int arr[] , int len)
{
    for(int i=0;i<len ;++i )
    {
        printf("%d\t",arr[i]);
    }
    printf("\n");
}
//在数组的索引为index 的地方插入值:val 
void array_insert(int arr[] ,int len, int index,int val)
{
    for(int i=len-1;i>index;--i)
    {
        arr[i] = arr[i-1];
    }
    
    arr[index] = val;
    
}

 

 

1、善于使用函数,将问题拆分去做,不要全部逻辑都一股脑的写在main里面。一个大馒头,一次啃一口好,还是一口全吞下好?

2、素组的大小是固定的,你定义了9个容量,不会因为插入一个就增大为10 了,所以你应该预先留一个位置。或者使用动态数组。

 

lulipro | 园豆:273 (菜鸟二级) | 2017-02-27 22:11

谢谢,我懂了!!!

支持(0) 反对(0) Yingyingyang | 园豆:210 (菜鸟二级) | 2017-02-28 12:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册