求解一道C语言基础编程题。

根据要求编写程序。(要求在重要语句或变量后加简短的注释!!)1、某系有新生60人,为校运会队列排队,要求排列顺序从矮到高。编写一完整的程序,使得其运行后,能接收用户从键盘... 根据要求编写程序。(要求在重要语句或变量后加简短的注释!!)
1、某系有新生60人,为校运会队列排队,要求排列顺序从矮到高。编写一完整的程序,使得其运行后,能接收用户从键盘上输入的每个新生的高度,并将这些数据排序后按题目要求的格式输出。
注: 1).学生编号从1-60,按顺序输入,排序算法可以自选
2).输出为排队之后的队列顺序, 从矮到高输出
3).数据的输入输出和排序,都要通过写函数调用来完成(即要求4个函数,一个主函数,一个输入函数,一个排序函数,一个输出函数)
4). 输出格式为: 按行输出,每行打印一条学生记录的信息,
输出示例: 分别为 新的编号# 身高
1# 1.65m
2# 1.68m
3# 1.68m
4# 1.70m
.....
展开
 我来答
占山柳4r
2020-06-29 · 贡献了超过171个回答
知道答主
回答量:171
采纳率:25%
帮助的人:11.1万
展开全部

#include <stdio.h>

#define N 60 //宏定义便于替换和检测

void Scanf(float *a,int n) //输入函数

{ scanf("%f",&a[n]);}

void sort(float *a,int n) //排序函数{ int i,j; float t; for(i=0;i<n-1;i++) //选择排序法 { for(j=i+1;j<n;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } }}void Printf(float *a,int n) //输出函数{ printf("%d# %.2fm\n",n+1,a[n]);//输出格式}int main (void){ float a[N]; int i; for(i=0;i<N;i++) Scanf(a,i); sort(a,N); for(i=0;i<N;i++) Printf(a,i);}

望采纳

追答
还有问题吗??
梦想联系人
2020-06-29 · 超过32用户采纳过TA的回答
知道答主
回答量:168
采纳率:71%
帮助的人:19.8万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

typedef struct queue
{
//保存队列中的元素
int *a;
//保存队列头部元素的索引
int front;
//保存队列尾部元素的索引
int rear;
//保存队列中最多容纳的元素个数
int max;
}qu;

/*
* 初始化队列
*/
qu *initqueue(int num)
{
qu *q=(qu *)malloc(sizeof(qu));
if(q==NULL)
{
printf("create fail!\n");
exit(1);
}
q->front=0;
q->rear=0;
q->max=num;
q->a=(int *)malloc(sizeof(int)*num);
if(q->a==NULL)
{
printf("create fail!\n");
exit(1);
}
return q;
}

/*
* 判断队列是否为空(空:返回0 非空;返回1)
*/
int isempty(qu *q)
{
if(q->front==q->rear)return 0;
else return 1;
}

/*
* 判断队列是否为满(满:返回0 非满:返回1)
* (采用少占用一个空间的方式判断队列是否为满,即(rear+1)%max==front
*/
int isfull(qu *q)
{
//队列满的判断条件(少用一个存储空间)
if((q->rear+1)%q->max==q->front)return 0;
else return 1;
}

/*
* 查看队列中的元素个数
*/
int getnum(qu *q)
{
if(isempty(q)==0)return 0;
else
{
int count=(q->rear-q->front+q->max)%q->max;
return count;
}
}

/*
* 入队列
*/
void push(qu *q,int value)
{
if(isfull(q)==0)
{
printf("队列为满,无法入队!\n");
exit(1);
}
q->a[q->rear]=value;
q->rear=(q->rear+1)%q->max;
}

/*
* 出队列
*/
int pop(qu *q)
{
if(isempty(q)==0)
{
printf("队列为空,无法出队!\n");
exit(1);
}
int temp=q->a[q->front];
q->front=(q->front+1)%q->max;
return temp;
}

/*
* 查看队列首部元素
*/
int peek(qu *q)
{
if(isempty(q)==0)
{
printf("队列为空,无法查看!\n");
exit(1);
}
int temp=q->a[q->front];
return temp;
}

int main()
{
int num=5;
int temp;
qu *q=initqueue(num);
push(q,1);
push(q,2);
push(q,3);
push(q,4);
pop(q);
pop(q);
pop(q);
pop(q);
push(q,1);
push(q,2);
push(q,3);
// push(q,4);
// push(q,5);
int count=getnum(q);
printf("count=%d\n",count);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式