当前位置: 代码迷 >> C语言 >> 我写的 一道题
  详细解决方案

我写的 一道题

热度:129   发布时间:2006-06-15 23:45:09.0
我写的 一道题
题目要求是从键盘输入一个数。插入到已按降序排列的数组中,要求按原来的排序规律插入!

main()
{int t,i,j,k,m,p;
int a[10]={10,4,-7,32,14,25,-18,20};
for(j=0;j<7;i++)
for(i=0;i<7-j;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("input a number:\n");
scanf("%d",&k);
for(i=0;i<8;i++)
if(a[i]>=k)m=i
for(p=m;p<9;p++)
{t=k;k=a[p];a[p]=k}
for(i=0;i<9;i++)
ptintf("%d",a[i]);
}
这是我编的,不知错误在那
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-15 16:10:31
龙轩v亚风

等 级:新手上路
威 望:1
帖 子:1073
专家分:0
注 册:2006-4-20
  得分:0 
就缺两个 一个是 m=i;一个是a[p]=k;

最好是 先输入数据!
----------------解决方案--------------------------------------------------------
不仅仅是逗号问题吧,还有很多的错误哦,我按照你的意思把你的程序大致该了一下,运行没有问题!!!
main()
{int t,i,j,k,m,p;
int a[9]={10,4,-7,32,14,25,-18,20};
clrscr();
for(j=0;j<7;j++)
for(i=0;i<7-j;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("input a number:\n");
scanf("%d",&k);
for(i=0;i<8;i++)
if(a[i]<=k)
{m=i;
break;}
for(i=8;i>m;i--)
a[i]=a[i-1];
a[m]=k;
for(i=0;i<9;i++)
printf("%d",a[i]);
}

----------------解决方案--------------------------------------------------------
[回复楼主]
//此处缺头文件
main()
{int t,i,j,k,m,p;
int a[10]={10,4,-7,32,14,25,-18,20};
for(j=0;j<7;i++)//i++应改为j++
for(i=0;i<7-j;i++)
if(a[i]<a[i+1])//这是从大到小排序!
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("input a number:\n");
scanf("%d",&k);
for(i=0;i<8;i++)
if(a[i]>=k)m=i//尾部缺分号。
//以上逻辑错,得到的m不是正确的插入点
for(p=m;p<9;p++)
{t=k;k=a[p];a[p]=k/*缺分号*/}
for(i=0;i<9;i++)
ptintf("%d",a[i]);//应为printf
}
涂色部分问题更大。
----------------解决方案--------------------------------------------------------
语法错误应该自己多看看,自己会改的吧.像少分号这样的事,自己编译的时候可以发现的.
自己上机实现,试着自己改正语法错误,这样才有进步的.
#include"stdio.h"
#define N 10
void sort(int a[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
main()
{
int a[N]={10,4,-7,32,14,25,-18,20};
int i,n,j,t;
printf("input a number(int):");
scanf("%d",&n);
sort(a,8);/*冒泡排序
for(i=7;i>=0;i--)//插入同时移位
{
if(a[i]>n)
a[i+1]=a[i];
else
{
a[i+1]=n;
break;
}
}
i=0;
while(i<9)
printf("%d ",a[i++]);
}
----------------解决方案--------------------------------------------------------
for(i=7;i>=0;i--)//插入同时移位 改为/*插入同时移位*/ 有点小问题习惯了c ++的解释了.不好意思,呵呵!!!!!
----------------解决方案--------------------------------------------------------
if(a[i]>=k)m=i//尾部缺分号。
//以上逻辑错,得到的m不是正确的插入点if(a[i]>=k)m=i//尾部缺分号。
问一下4楼的,为什么m不 是正确的插入点...
----------------解决方案--------------------------------------------------------
谢谢各位了
----------------解决方案--------------------------------------------------------
  相关解决方案