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

程序说明本程序为六个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出他们的名和值,如某次A、B、C、D、E、F的输入值为3、2、5、7、4、6,则程序将输出... 程序说明
本程序为六个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出他们的名和值,如某次A、B、C、D、E、F的输入值为3、2、5、7、4、6,则程序将输出:D(7)F(6)C(5)E(4)A(3)B(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<N;k++)
{ printf("Enter data for %c\n",tbl[k].vn);
scanf("%d",__(1)__);
}
m=N-1;/*采用冒泡法排序*/
while(m>0)
{
for (k=j=0;j<m;j++)
if (__(2)___)
{
t=tbl[j];
tbl[j]=tbl[j+1];
tbl[j+1]=t;
___(3)___;
}
m=__(4)__;/*本框填m-1不给分*/
}
for (k=0;k<N;k++)
printf("%c(%d)",_(5)___,____(6)__) ;
printf("\n");
}
展开
 我来答
CSharpB
2009-03-19
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
这道题本身是错误的,应该把#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 <stdio.h>
#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<N;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;j<m;j++)
if (*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;k<N;k++)
printf("%c(%d)",tbl[k].vn,*tbl[k].vp) ;
printf("\n");
}
微充正5760
2009-03-19
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
#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<m;j++)
if (*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");
}

题目本身就怪怪的,改成这样大家看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暖柠檬D2
2009-03-19 · 超过13用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:25.2万
展开全部
#include<stdio.h>
#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<N;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;j<m;j++)
if (*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;k<N;k++)
printf("%c (%d)",tbl[k].vn,*tbl[k].vp) ;
printf("\n");
}
冒泡排序背下来就好了
每次交换要记录交换位置 就是变量k的作用
vp为指针 要引用其所指的变量要加*
这个是经过编译器调试的 若果有不明白的可以给我留言 祝你好运喽
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凯旋归风
2009-03-19
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
1.&tbl[k]
2.tbl[j]<tbl[j+1]
3.
4.
5.tbl[k].vn
6.tbl[k].vp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式