菜鸟求助问题

liumt88 2003-10-18 02:46:49
现有一题需要各位高手帮忙,期限为今天晚上前给予解答,谢谢。
题目如下:现有一个包含若干个(不少于10个)元素的整型数组,数组中的元素按照从小到大的顺序排列.现要求用户输入一个数字,将该数插入到整型数组中,要求插入后的整型数组中的元素仍然保持从小到大的顺序.(其中最后一个元素为空,即a[10]不用付值)
最好用10个元素的数组来做。
我自己也写了个,发现有点问题,不能达到题目的要求,望各位高手给于指点,谢谢!
#include <stdio.h>
void main()
{
int num[10]={1,2,3,4,5,6,7,86,92};
int i,j,p=0;
printf("插入数字前的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
printf("请输入一个数:\n");
scanf("%d",&p);
for(i=0;p>=num[i];i++);

for(j=9;i<j;j--)
{
num[j]=num[j-1];
num[i]=p;
}
printf("插入数字后的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
}
我是刚学c的,请多多帮助,谢谢!

...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cccloveyf 2003-10-18
  • 打赏
  • 举报
回复
类似的程序,以前数据结构课时编的,可以参考一下,呵呵:
#include <stdio.h>
void insert(int,int);
#define maxsize 10
struct
{
int data[maxsize];
int last;
}list;

void main()
{
int i,num=1;list.last=9;
for(i=0;i<list.last;i++)
{
list.data[i]=num;
num+=2;
}
for(i=0;i<list.last;i++)
printf("%d ",list.data[i]);
printf("\ninsert:");
scanf("%d",&num);
for(i=0;i<list.last;i++)
if(num<list.data[i])
break;
insert(i,num);
for(i=0;i<list.last;i++)
printf("%d ",list.data[i]);
}

void insert(int i,int num)
{
int j;
for(j=list.last;j>i;j--)
list.data[j]=list.data[j-1];
list.data[i]=num;
list.last++;
}
danpianji2002 2003-10-18
  • 打赏
  • 举报
回复
有一点问题,就是最后的书不负值,默认为0,当你输入一个比92大的数时就出现问题了后面再也没有更大的数,就溢出了
liumt88 2003-10-18
  • 打赏
  • 举报
回复
谢谢以上2位大哥,小弟分数有限,只能给这么多了,谢谢!
danpianji2002 2003-10-18
  • 打赏
  • 举报
回复
只有一点问题
num[i]=p是最后的一步不应该放到循环里面
把括号去掉就行了:
#include <stdio.h>
void main()
{
int num[10]={1,2,3,4,5,6,7,86,92};
int i,j,p=0;
printf("插入数字前的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
printf("请输入一个数:\n");
scanf("%d",&p);
for(i=0;p>=num[i];i++);

for(j=9;i<j;j--)
num[j]=num[j-1];
num[i]=p;
printf("插入数字后的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
}
pxwzd123 2003-10-18
  • 打赏
  • 举报
回复
对你的程序稍作改动,可以了
#include <stdio.h>
void main()
{
int num[10]={1,2,3,4,5,6,7,86,92};
int i,j,p=0;
printf("插入数字前的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
printf("请输入一个数:\n");
scanf("%d",&p);
for(i=0;p>num[i];i++);

for(j=9;j>i;j--)
{
num[j]=num[j-1];
}
num[i]=p;

printf("插入数字后的数组:\n");
for(i=0;i<=9;i++)
printf("%d\n",num[i]);
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧