处女帖,刚学C语言,有些不太懂啊
我刚开始学C语言,好多不懂啊,有下面两段代码,一段是可以对数字从小到大排序的,一个是输入成员的值在另一个函数输出的,大家先看看吧。
第一段:#define N 10
main()
{ int i,j,k,num[10],t;
for( i=0;i<N;i++)
scanf("%d",&num[i]);
for( i=0;i<N-1;i++)
{ k=i;
for(j=i+1;j<N;j++)
if(num[j]<num[k])
k=j;
if(k!=i)
{t=num[i];num[i]=num[k];num[k]=t;}
}
for(i=0;i<N;i++)
printf("%4d",num[i]);
}
第二段:#include"stdio.h"
typedef struct
{ char name[20];
int num;
}student;
void stu(student *p)
{ printf("%-8s %s\n","Number","Name");
printf("%-8d %s\n",p->num,p->name);
}
main()
{ student s;
printf("Number:\t");scanf("%d",&s.num);
getchar();
printf("Name:\t");gets(s.name);
stu(&s);
}
我的问题是,怎么把里面的num和name 关联起来,就是说可以输入num和name,然后给num排序之后,name还是跟num有对应的,并且再输出。C语言好多不懂,听说这里高手多,呵呵,以后多来学习哈
[解决办法]
#include"stdio.h"
#define N 10
typedef struct
{
char name[20];
int num;
}student;
void stu(student *p)
{
printf("%-8s %s\n","Number","Name");
printf("%-8d %s\n",p->num,p->name);
}
void main()
{
int i,j;
student s[N],t;
clrscr();
for(i=0;i <N;i++)
{
printf("Number:\t");scanf("%d",&s[i].num);
getchar();
printf("Name:\t");gets(s[i].name);
}
for(i=0;i <N-1;i++)
{
for(j=i+1;j <N;j++)
if(s[j].num <s[i].num)
{t=s[i];s[i]=s[j];s[j]=t;}
}
for(i=0;i <N;i++)
stu(&s[i]);
}