| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:请教不知道错在哪里
只看楼主 加入收藏
ouyang111
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:6 
请教不知道错在哪里

#define N 10
main()
{
int a[N+1]; int i,j,t,q,s;
printf("input\n");
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=N-1;j++)
for(i=1;i<=N-j;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=1;i<=N;i++)
printf("%d ",a[i]);

printf("\ninput number:\n");
scanf("%d",&q);
for(i=1;i<=N;i++)
if(q>a[i])
for(s=N;s>=i-1;s--)
a[s+1]=a[s];

a[1]=q;
for(i=1;i<=N+1;i++)
printf("%d ",a[i]);
printf("\n");
}

2007-05-03 02:06
ouyang111
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-17
收藏
得分:0 

上面部分是由大到小把输入的数输出
下面部分是输入一个数如果他大就插在他前面!``
但是输出结果不是预料的那个,不知道错在哪里

2007-05-03 02:11
顶你个肺哦
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2006-9-10
收藏
得分:0 
后半部分的 插入数时有问题
for(s=N;s>=i-1;s--)
a[s+1]=a[s];

a[1]=q;
这题 以前作过 记得后面好象没这么简单
给你找找啊

[此贴子已经被作者于2007-5-3 10:02:06编辑过]


main()                     {......}
2007-05-03 09:59
abcd5200
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2007-4-18
收藏
得分:0 
for(i=1;i<=N;i++)
if(q>a[i])
break;
for(s=0;s<=i-1;s++)
a[s]=a[s+1];

a[i-1]=q;
for(i=0;i<=N;i++)
printf("%d ",a[i]);

*┊..除了睡觉..还是想睡觉..┊*
2007-05-03 12:50
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
[CODE]

#include <stdio.h>
#define N 10

int main (void)
{
int i, a[N], j, key, insert, flag;

printf ("input the array:");
for (i = 0;i < N;i ++)
scanf ("%d", &a[i]);
for (j = 1;j < N;j ++)
{
key = a[j];
i = j - 1;
while (i >= 0 && key > a[i])
{
a[i + 1] = a[i];
i --;
}
a[i + 1] = key;
}
for (i = 0;i < N;i ++)
{
printf ("%-3d", a[i]);
}
putchar('\n');

printf("input the insert number:");
scanf("%d", &insert);
if (insert > a[0])
{
for (i = N;i > 0;i --)
{
a[i] = a[i - 1];
}
a[0] = insert;
flag = 1;
}
else
{
flag = 0;
}
if (flag == 1)
{
for (i = 0;i <= N;i ++)
printf("%-3d", a[i]);
}
else
{
for (i = 0;i < N;i ++)
printf("%-3d", a[i]);
}

return 0;
}

[/CODE]

该学习了。。。
2007-05-03 13:39
zhouzhengbo
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-1
收藏
得分:0 

你在最后插数那里错了,再找到插入位置后该跳出循环!


#define N 10
main()
{
int a[N+2]; int i,j,t,q,s;int flag=0;
printf("input\n");
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=N-1;j++)
for(i=1;i<=N-j;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=1;i<=N;i++)
printf("%d ",a[i]);

printf("\ninput number:\n");
scanf("%d",&q);
/*就是这里,要及时跳出循环*/
for(i=1;i<=N;i++)
{ if(q>a[i])
{ for(s=N;s>i-1;s--)
a[s+1]=a[s];
a[i]=q;
flag=1;
}
if(flag==1)break;
}
for(i=1;i<=N+1;i++)
printf("%d ",a[i]);
printf("\n");
}



[此贴子已经被作者于2007-5-3 14:37:53编辑过]

2007-05-03 14:36
ouyang111
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-17
收藏
得分:0 

哦~~原来自己忘了满足条件时跳出循环

2007-05-03 16:30
快速回复:请教不知道错在哪里
数据加载中...
 
   



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

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