当前位置: 代码迷 >> C语言 >> 一个数组问题,晕
  详细解决方案

一个数组问题,晕

热度:194   发布时间:2008-05-27 16:54:07.0
一个数组问题,晕
#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]);总是出现错误
搜索更多相关的解决方案: include  Enter  number  

----------------解决方案--------------------------------------------------------
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,都是可以不加&的……
----------------解决方案--------------------------------------------------------
  相关解决方案