Principiante de estructura

El primer contacto sobre la estructura fue compilado por mí mismo de acuerdo con el código enumerado en el caso sin estudiar después de una evaluación de laboratorio.

Tema:
2. Cree una estructura adecuada para almacenar los datos especificados y escriba la función correspondiente para completar la operación especificada.
(1) Deposite los siguientes datos en
secuencia : Nombre, número de estudiante, orden de sexo
Xiao Ming 20201034 Masculino 1
Xiao Hong 20201057 Femenino 5
Li Hua 20201042 Masculino 3

小明 20201034 男 1

Xiaohong 20201057 Hombre 3
Li Hua 20201042 Hombre 5
(2) Escriba la función ShowInfo para generar toda la información.
(3) Escriba la función SortShow para que los datos almacenados salgan en orden descendente de número de estudiante (se requiere un algoritmo de clasificación);

Mi código (un poco defectuoso):

#include <stdio.h>
struct stu
{
    
    
	char name[3];
	int number[3];
	char n[3];
	int x[3];
};
int main()
{
    
    
	int i,j;
	int num;
	struct stu st[3]={
    
    
		{
    
    "xiaoming",20201034,"man",1},
		{
    
    "xiaohong",20201057,"woman",5},
		{
    
    "lihua",20201042,"man",3}
	};
struct stu temp;
num=3;
for(i=0;i<num;i++)
{
    
    
for(j=0;j<num-i-1;j++)
{
    
     
	if(st[j].number[3]<st[j+1].number[3])
	{
    
    
		temp=st[j];
		st[j]=st[j+1];
		st[j+1]=temp;
	}
}
}
printf("姓名\t学号\t性别\t次序\n");
for(i=0;i<num;i++)
{
    
    
	printf("%s\t%d\t%s\t%d\n",
		st[i].name,st[i].number,st[i].n,st[i].x);
}
}

Resultado de la operación:
Inserte la descripción de la imagen aquí
servido. . . . . .

Después de corregir:

#include<stdio.h>
#include<malloc.h>

typedef struct Stu
{
    
    
	char name[5];
	int id;
	char sex[1];
	int num;
}STU;

void init(STU *stu)
{
    
    
	int i;
	STU *s = stu;

	for(i=0;i<3;i++)
	{
    
    
		scanf("%s",s[i].name);
		scanf("%d",&s[i].id);
		scanf("%s",s[i].sex);
		scanf("%d",&s[i].num);
	}
}

void Show(STU *stu)
{
    
    
	int i;
	STU *s = stu;

	for(i=0;i<3;i++,s++)
	{
    
    
		printf("%s %d %s %d\n",s->name,s->id,s->sex,s->num);
	}
}

void SortShow(STU *stu)
{
    
    
	int i,j,flag,flagsort[3]={
    
    0,1,2};
	STU *s = stu;

	for(i=0;i<2;i++)
	{
    
    
		for(j=0;j<2-i;j++)
		{
    
    
			if(s[flagsort[j]].id < s[flagsort[j+1]].id)
			{
    
    
				flag = flagsort[j];
				flagsort[j]=flagsort[j+1] ;
				flagsort[j+1] = flag ;
			}
		}
	}

	for(i=0;i<3;i++)
	{
    
    
		printf("%s %d %s %d\n",s[flagsort[i]].name,s[flagsort[i]].id,s[flagsort[i]].sex,s[flagsort[i]].num);
	}
	
}

int main (void)
{
    
    
	STU s[3];
	printf("Please input message: \n");
	init(s);
	printf("Show ran over :\n");
	Show(s);
	printf("SortShow ran over :\n");
	SortShow(s);
	return 0;
}

Mucho mejor.

La evaluación final fue exitosa.

Supongo que te gusta

Origin blog.csdn.net/yooppa/article/details/112406957
Recomendado
Clasificación