本文目录一览:
- 1、用c语言结构体编写
- 2、c语言中结构体怎么写
- 3、C语言结构体编程
用c语言结构体编写
//很明显这是结构体定义
struct studentNode{
char name[30];
char sno[30];
};
//比较字符数组的函数,对于结构体中的字符数组,直接用串比较可能会错误处理一些特殊字符。
bool compare(const char* str1,const char* str2){
for(int i = 0 ; i 30 ; i++){
if(str1[i] != str2[i]){
if(str1[i] str2[i]){
return true;
}else{
return false;
}
}
}
return true;
}
//排序函数,传入结构体数组指针,长度,第三个参数是是否为降序
void sortWithSno(studentNode* stu, int len , bool isdesc){
studentNode temp;
for(int i = 0 ; i len ; i++){
for(int j = 0 ; j len ; j++){
if(isdesc){
if(compare((*(stu+i)-sno) , (*(stu+j)-sno))){
temp = *(stu+j);
*(stu+j) = *(stu+i);
*(stu+i) = temp;
}
}else{
if(!compare((*(stu+i)-sno) , (*(stu+j)-sno))){
temp = *(stu+j);
*(stu+j) = *(stu+i);
*(stu+i) = temp;
}
}
}
}
}
//同上,可以将两个函数合并,中间再加一层结构体成员的枚举选择器
void sortWithName(studentNode* stu, int len , bool isdesc){
studentNode temp;
for(int i = 0 ; i len ; i++){
for(int j = 0 ; j len ; j++){
if(isdesc){
if(compare((*(stu+i)-name) , (*(stu+j)-name))){
temp = *(stu+j);
*(stu+j) = *(stu+i);
*(stu+i) = temp;
}
}else{
if(!compare((*(stu+i)-name) , (*(stu+j)-name))){
temp = *(stu+j);
*(stu+j) = *(stu+i);
*(stu+i) = temp;
}
}
}
}
}
//很明显这是个打印函数
void print(studentNode stu[],int len){
for(int i = 0 ; i len ; i++){
printf("%d: name: %s sno:%s\n",i,stu[i].name,stu[i].sno);
}
}
注意这程序中使用了结构体直接复制,老TC应该会挂掉,用最新的GCC能编译。
c语言中结构体怎么写
以struct打头,后面可以跟结构体名称,然后大括号中写出结构体组成,比如:
struct Student { int number; float score[5]; };
其中Student就是结构体名称,这个名称可以当作自定义的数据类型来使用
Student a[10];
C语言结构体编程
#includestdio.h
#includestdlib.h
typedef struct
{
char num[10];
int s;
}strec;
int N;
int fun(strec*a,strec*b)
{
int i,j=0;
strec max;
for(i=0;iN;i++)
{
printf("输入姓名:");
scanf("%s",a[i].num);
printf("输入分数:");
scanf("%d",a[i].s);
}
max=a[0];
for(i=0;iN;i++)
if(max.sa[i].s)
max=a[i];
for(i=0;iN;i++)
if(max.s==a[i].s)
{ b[j]=a[i];
j++;
}
for(i=0;ij;i++)
{
printf("%s ",b[i].num);
printf("%d",b[i].s);
printf("\n");
}
return j;
}
void main()
{
strec *a,*b;
int n;
printf("input N:");
scanf("%d",N);
a=(strec*)malloc(N*sizeof(strec));
b=(strec*)malloc(N*sizeof(strec));
n=fun(a,b);
printf("最高分有%d人\n",n);
}
采纳时多给点分!桥这么多代码不容易啊!