一个数组问题,晕
#include<stdio.h>#include<string.h>
main()
{ int a[50][4],i,j,k,t,n,m;
char b[50][20],c[20];
printf(" input the number of students");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("\n Enter the grade:");
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
a[i][3]=a[i][0]+a[i][1]+a[i][2];
printf("%d\n",a[i][3]);
}
for(i=0;i<n;i++) /一维数组表示二维数组/
{ printf("\n Enter the name:");
scanf("%s",&b[i]); ??????
printf("\n");
}
for(i=0;i<=n-1;i++)
{
k=i;
for(j=i+1;j<=n;j++)
if(a[k][3]<a[j][3]) k=j;
t=a[i][3];a[i][3]=a[k][3];a[k][3]=t;
strcpy(c,b[i]);
strcpy(b[i],b[k]);
strcpy(b[k],c);
}
for(i=0;i<n;i++)
{m=i+1;
printf("%d",m);
printf("%s",b[i]);
printf("%d\t",a[i][3]);
printf("\n");
}
}
在打???的地方,有问题:本来b[i]就是一个地址,为什么还要加个&符号,而且用
gets(b[i]);代替scanf("%s",&b[i]);总是出现错误
----------------解决方案--------------------------------------------------------
b[i]是一个数组值了,如果用b数组名就可以,因为它就是数组的起始元素_a[1],也可以用指针
----------------解决方案--------------------------------------------------------
我写scanf("%s",b[i]);很正常啊……
----------------解决方案--------------------------------------------------------
在打???的地方,有问题:本来b[i]就是一个地址,为什么还要加个&符号,而且用
gets(b[i]);代替scanf("%s",&b[i]);总是出现错误
把gets(b[i]) 改成gets(&b[i])就没问题了
数组的首址可以不加地址运算符````给数组的单个元素赋值当然要加喽
----------------解决方案--------------------------------------------------------
LS的,b是个二维数组,其元素是个一维数组,而且可以自动退化为指针,所以无论是gets还是scanf,都是可以不加&的……
----------------解决方案--------------------------------------------------------