结构体的调用

#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC *a, STREC *b )
{
int i;
int j = 0;
int k = 0;
for (i = 0 ;i < 16;i++)
{if(a[i].s < a[i+1].s)//a->s[]是不行的。。
{
j = a[i].s;
}
if(a[i].s >= a[i+1].s)
{
j = a[i+1].s;
};}
printf("%d\n",j);
for (i = 0 ;i < 16;i++)
{
if (a[i].s == j)
{
b[k] = a[i];
k = k+1;
}
}
return k;
}

main()
{ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n;FILE *out ;
n=fun( s,h );
printf("The %d lowest score :\n",n);
for(i=0;i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
out = fopen("out.dat","w") ;
fprintf(out, "%d\n",n);
for(i=0;i<n; i++)
fprintf(out, "%4d\n",h[i].s);
fclose(out);
}

时间: 2024-11-06 14:28:47

结构体的调用的相关文章

利用结构体数组调用函数

我们一直知道,函数名其实就是个指针,指向这个函数的地址,因此我们调用函数其实就是让CPU去函数名指向的地址取代码来执行而已.这才有这个利用数组去调用函数的效果. 因为写程序过程中,需要根据菜单选项来决定调用那个模块函数,不想采用switch判断,想把函数地址存在一个数组里面,然后直接调用,感觉这样代码会更简单些,因为工作中见过别人的代码也是这样写的, 但是没有实际操作过,这次正好有小机会就想试试,还没一次成功,试了两次才搞定,囧,特意记下笔记提醒自己,也给有需要的新手一起分享下 typedef

(struct)结构体变量作为函数参数调用的方法小结

结构体变量.结构指针变量.结构数组作为函数的参数应用实例分析 struct stud { long int num; float score; }; /*结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数*/ void funvr(struct stud t) { t.num=2000101; t.score=71.0; } /*结构体数组作为函数的参数,修改后的元素的成员值能返回到主调函数*/ void funar(struct stud t[]) //void funar(stru

C语言 结构体(嵌套结构体--结构体数组)

//结构体--嵌套结构体和结构体数组 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _parent{ int num; char name[30]; //结构体内部定义结构体,如果不定义嵌套结构体变量,那么该嵌套结构体的属性则会被当作父结构体的属性 struct son{ int age; char sna

黑马程序员-关于结构体

------- IOS培训.android培训.java培训.期待与您交流! ---------- 1 结构体: 作用:可以由多个不同类型的数据构成. //定义结构体类型,类型为person:(此阶段不会分配存储空间 1 struct person 2 { 3 变量; // 称为结构体变量或属性 4 } 5 //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间) 6 struct person p={ }; // 赋值的时候只能在定义结构体的时候同时赋值 错误写法 st

纯c结构体与c++结构体的理解

//main.cpp //如果文件名是以.cpp结尾的说明这是一个c++的源程序, //在c++的源程序中,class的作用与struct的作用一模一样, //除了他们默认的成员属性不一样除外(class 默认是私有的, //struct默认是共有的),同样struct有this指针,同样struct //可以继承,同样struct也支持c++多态的所有属性,同样struct //有虚表,下面就是我做的一个struct的虚表例子. //记住在.cpp结尾的源文件里面,struct才与class基

12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!

1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; } 答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致

【好程序员笔记分享】——C语言之结构体与枚举

iOS培训——我的c语言笔记,期待与您交流! 一:结构体与枚举的介绍: 结构体与枚举:是一种存储复杂的数据结构体:是用户自定义的一种类型,不同类型的集合,而数组是相同类型变量的集合. 二:结构体的创建 struct user { char username[20]; int score; } 这里两种不同类型的属性的结构体. 创建结构体,就是创建一个类型,计算机并没有分配内存空间. 三:结构体的调用 struct user u1; 这里就是对结构体的调用,这个时候计算机才会为其分配内存空间. u

C#调用C/C++动态库 封送结构体,结构体数组

因为实验室图像处理的算法都是在OpenCV下写的,还有就是导航的算法也是用C++写的,然后界面部分要求在C#下写,所以不管是Socket通信,还是调用OpenCV的DLL模块,都设计到了C#和C++数据类型的对应,还有结构体的封装使用.在夸语言调用方面,Java和C#都只能调用C格式导出的动态库,因为C数据类型比较单一,容易映射,两者都是在本地端提供一套与之映射的C#或者Java的描述接口,通过底层处理这种映射关系达到调用的目的. 5月19日学习内容: http://www.cnblogs.co

C++ 结构体多元素sort排序调用时的写法

//总结一下,结构体数据排序的快速写法 //以后在遇到需要写的时候,不要迟疑快速写完 struct node { int u, v, w; }a[10000]; //假设该结构体有3个元素 //现在仅实现结构体数组按照w的值从小到大的排序 //1.基于C++的重载写法,写在结构体的定义内 如下: struct node { int u, v, w; bool operator <(const node &x)const { return w<x.w; //升序排列 } }; //现在提