这道题本身是错误的,应该把#define N sizeof tbl[0] 改成:#define N sizeof tbl / sizeof t。不然输入的时候就有错误了,具体为什么要这样改自己想想,呵呵,改完之后答案就是下面这个了:
(1) tbl[k].vp
(2) *tbl[j].vp < *tbl[j+1].vp
(3) k=j
(4) k
(5) tbl[k].vn
(6) *tbl[k].vp
在vc6.0下运行测试过的:
#include
#define N sizeof tbl / sizeof tbl[0]
int A,B,C,D,E,F;
struct ele {
char vn;
int *vp;
}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;
void main()
{
int k,j,m;
for (k=0;k
scanf("%d",tbl[k].vp);
}
m=N-1;/*采用冒泡法排序*/
while(m>0)
{
for (k=j=0;j
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
k=j;
}
m=k;/*本框填m-1不给分*/
}
for (k=0;k
printf("\n");
}
#define N sizeof tbl[0]
int A,B,C,D,E,F;
struct ele {
char vn;
int *vp;
}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;
main()
{
int k,j,m;
for (k=0;k<6;k++)
{ printf("Enter data for %c\n",tbl[k].vn);
scanf("%d",tbl[k].vp);
}
m=6-1;/**/
while(m>0)
{
for (k=j=0;j
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
/*t.vp=tbl[j].vp,tbl[j].vp=tbl[j+1].vp,tbl[j+1].vp=t.vp;*/
}
m=m-1;/*m-1*/
}
for (k=0;k<6;k++)
printf("%c(%d)",tbl[k].vn,*(tbl[k].vp)) ;
printf("\n");
}
题目本身就怪怪的,改成这样大家看看。
#include
#define N 6
void main()
{ int A,B,C,D,E,F;
struct ele {
char vn;
int *vp;
}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;
int k,j,m;
for (k=0;k
scanf("%d",&(*tbl[k].vp));
}
m=N-1;/*采用冒泡法排序*/
while(m>0)
{
for (k=j=0;j
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
k=j;
}
m=k;/*本框填m-1不给分*/
}
for (k=0;k
printf("\n");
}
冒泡排序背下来就好了
每次交换要记录交换位置 就是变量k的作用
vp为指针 要引用其所指的变量要加*
这个是经过编译器调试的 若果有不明白的可以给我留言 祝你好运喽
1.&tbl[k]
2.tbl[j]
4.
5.tbl[k].vn
6.tbl[k].vp