一道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");
} 展开
本程序为六个整型变量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");
} 展开
4个回答
展开全部
这道题本身是错误的,应该把#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");
}
(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");
}
展开全部
#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");
}
题目本身就怪怪的,改成这样大家看看。
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");
}
题目本身就怪怪的,改成这样大家看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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为指针 要引用其所指的变量要加*
这个是经过编译器调试的 若果有不明白的可以给我留言 祝你好运喽
#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为指针 要引用其所指的变量要加*
这个是经过编译器调试的 若果有不明白的可以给我留言 祝你好运喽
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.&tbl[k]
2.tbl[j]<tbl[j+1]
3.
4.
5.tbl[k].vn
6.tbl[k].vp
2.tbl[j]<tbl[j+1]
3.
4.
5.tbl[k].vn
6.tbl[k].vp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询