一道c语言编程题,求高手帮忙,填空题

2024-11-22 20:03:01
推荐回答(4个)
回答(1):

这道题本身是错误的,应该把#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{ printf("Enter data for %c\n",tbl[k].vn);
scanf("%d",tbl[k].vp);
}
m=N-1;/*采用冒泡法排序*/
while(m>0)
{
for (k=j=0;jif (*tbl[j].vp < *tbl[j+1].vp)
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
k=j;
}
m=k;/*本框填m-1不给分*/
}
for (k=0;kprintf("%c(%d)",tbl[k].vn,*tbl[k].vp) ;
printf("\n");
}

回答(2):

#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;jif (*tbl[j].vp<*tbl[j+1].vp)
{
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");
}

题目本身就怪怪的,改成这样大家看看。

回答(3):

#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{ printf("Enter data for %c\n",tbl[k].vn);
scanf("%d",&(*tbl[k].vp));
}
m=N-1;/*采用冒泡法排序*/
while(m>0)
{
for (k=j=0;jif (*tbl[j+1].vp>*tbl[j].vp)
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
k=j;
}
m=k;/*本框填m-1不给分*/
}
for (k=0;kprintf("%c (%d)",tbl[k].vn,*tbl[k].vp) ;
printf("\n");
}
冒泡排序背下来就好了
每次交换要记录交换位置 就是变量k的作用
vp为指针 要引用其所指的变量要加*
这个是经过编译器调试的 若果有不明白的可以给我留言 祝你好运喽

回答(4):

1.&tbl[k]
2.tbl[j]3.
4.
5.tbl[k].vn
6.tbl[k].vp