C语言用一维数组,输入学生成绩和姓名,将成绩从高到低排序,对姓名做相应的调整,输出排序后的成绩姓名

C语言用一维数组,输入学生成绩和姓名,将成绩从高到低排序,对姓名做相应的调整,输出排序后的成绩姓名#include<stdio.h>#include<string.h>#... C语言用一维数组,输入学生成绩和姓名,将成绩从高到低排序,对姓名做相应的调整,输出排序后的成绩姓名#include<stdio.h>
#include<string.h>
#define N 3
void main()
{
int i,j,a[N],t;
char b[N];
for(i=0;i<N;i++)
{
scanf("%d\n",&a[i]);
gets(b[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
if(a[j]<a[j+1])
{

t=a[j];
a[j]=a[j+1];
a[j+1]=t;
strcpy(p,b[j]);
strcpy(b[j],b[j+1]);
strcpy(b[j+1],p);

}
}

for(i=0;i<N;i++)
printf("%s%d\n",b+i,a[i]);
}这个哪里错了
展开
 我来答
三天打鱼N
2017-12-06 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:604万
展开全部
一维数组 按你理解应该怎么存储多个名字?
一维char是一个连续的字符串 所以你使用b[i]访问他的时候 只能读取或写入一个字符 而名字是有多个字符组成的。
用一维数组表示字符串是比较麻烦的 你可以先定义一个大的char数组
比如 char b[最大名字个数*10]
然后 再
for(int i=0;i<3;i++){
scanf("%s",&b[i*10]);//每一次循环向后移动10个字符位置
}
然后说一下 你gets(b[i]) 函数应该传char* 也就是字符指针 而不是字符 应该是 &b[i]
再就是没有看到声明p变量
最后查一下排序有没有问题吧
4747哦
2019-06-27 · TA获得超过675个赞
知道小有建树答主
回答量:365
采纳率:73%
帮助的人:72.5万
展开全部
#include<stdio.h>
#include<string.h>
#define NUM 5
main()
{
int i,j;
char name[NUM][10],stmp[10];
float score[NUM],tmp;
printf("输入姓名和成绩:\n");
for(i=0;i<NUM;i++)
scanf("%s%f",name[i],&score[i]);
for(i=0;i<NUM-1;i++)
for(j=i+1;j<NUM;j++)
if(score[i]<score[j])
{tmp=score[i];
score[i]=score[j];
score[j]=tmp;
strcpy(stmp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],stmp);
}
printf("排序为:\n");
for(i=0;i<NUM;i++)
printf("%.10s%f\n",name[i],score[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式