各位帮帮忙,看看我编的错在哪

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:13:05
#include "stdio.h"
char name(char a[][20],int i)
{
int j;
for(j=0;j<=20;j++)
a[i][j]=' ';
for(j=0;j<=20;j++)
{scanf("%c",&a[i][j]);
if(a[i][j]==' ')break;
}

}
main()
{unsigned long i,j,k,t,number[10];
char a[1][20];
for(i=0;i<10;i++)
{name(a,i);
scanf("%ld",&number[i]);
}
clrscr();
for(k=0;k<9;k++)
for(i=0;i<9;i++)
if(number[i]>number[i+1])
{t=number[i];
number[i]=number[i+1];
number[i+1]=t;
for(j=0;j<=20;j++)
{t=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=t;
}
}

for(i=0;i<10;i++)
{for(j=0;j<=20;j++)
{ printf("%c",a[i][j]);
if(a[i][j]==' ')break;
}
printf(" : ");
printf("%ld&quo

错误不能是小于等于20,应该小于20。还有就是输入数据要注意输入人名后一定要有空格,输入号码最好有回车,不过回车也算人名了。下面是我改的,你可以参考一下,好久没有写代码了,有错误我们再讨论。
#include "stdio.h"
void name(char a[][20],int i)
{
int j;
for(j=0;j<20;j++)/*不应该为小于等于*/
a[i][j]=' ';
for(j=0;j<20;j++)/*不应该为小于等于*/
{
scanf("%c",&a[i][j]);
if(a[i][j]==' ')break;
}
}

main()
{unsigned long i,j,k,t,number[10];
char a[10][20];/*这里定义错了*/
for(i=0;i<10;i++)
{

name(a,i);
scanf("%ld",&number[i]);
}

for(i=0;i<9;i++)
if(number[i]>number[i+1])
{
t=number[i];
number[i]=number[i+1];
number[i+1]=t;
for(j=0;j<20;j++)/*不应该为小于等于*/
{
(char)t=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=(char)t;
}
}

for(i=0;i<10;i++)
{
for(j=0;j<20;j++)/*不应该为小于等于*/
{
printf("%c",a[i][j]);