注册 登录
编程论坛 C++教室

1、现在有10名学生的信息存在一个数组中,每个学生的信息包含学号(int),成绩(float);请利用栈将这组学生的信息逆置。

q2563371439 发布于 2021-03-21 17:04, 1913 次点击
1、现在有10名学生的信息存在一个数组中,每个学生的信息包含学号(int),成绩(float);请利用栈将这组学生的信息逆置。
#include <stdio.h>
#define maxlen 20
typedef float datatype;
typedef struct{
    datatype data[maxlen];
    int top;
}Seqstack;
 void initstack(Seqstack *s)
 {
 s->top=-1;
 return ;
 }
 int emptystack(Seqstack *s)
 {
     return (s->top==-1);
 }
int push (Seqstack *s,datatype x)
{
    if(s->top==maxlen-1)
    {
        printf("无法入栈\n");
        return 0;
    }
    s->top++;
    s->data[s->top]=x;
    return 1;
}
int pop(Seqstack *s,datatype *x,datatype *y)
{
   if (emptystack(s))
   {
       printf("栈空,无法出栈\n");
       return 0;
   }
   *x=s->data[s->top];
   s->top--;
   return 1;
}
void inversion (int x[10],float y[10])
 {
     Seqstack z;
     int i;
     initstack(&z);
     for (i=0;i<10;i++)
     {
         push(&z,x[i]);
         push(&z,y[i]);
     }
      for (i=0;i<10;i++)
     {
         pop(&z,&x[i],&y[i]);
     }
     return ;

 }
  int main()
  {  int i;
     int a[10];
    float b[10];
    for (i=0;i<10;i++)
    {
    scanf("%d",&a[i]);
    }
     for (i=0;i<10;i++)
    {
    scanf("%f",&b[i]);
    }
    for(i=0;i<10;i++)
    {
        printf("学号是%d,成绩是%.2f\n",a[i],b[i]);
    }
    inversion (a,b);
    //inversion (b);
    for(i=0;i<10;i++)
    {
        printf("学号是%d,成绩是%.2f\n",a[i],b[i]);
    }
    return 0;
  }
求助,不会
0 回复
1