第一次独立做C语言项目编程练习,面对一个题目,从无到有,可能会令一些道友感到无从下手。而算法的杂乱与一些简单工厂的配合性问题,可能会是此时的罪恶源泉之一。而关于各种函数类型的定义,又是其中一大因素。
一个例子//寻找最大数
struct Student* findMaxStu(struct Student *p, int len) //四、所以此要得到max的函数类型定义为为结构体指针型struct Student*
{
int i;
struct Student *max = p; //二、max要与p同类型
for(i=0;iscore < p->score){ //一、max->score与p->score大小比较
max = p;
}
p++;
}
return max; //三、我所要得到的是max,struct Student*型
}
如上图所示,是一个寻找最大数的例子。
我将思考步骤分解为一、二、三、四。而仅第一步需要稍微动下脑筋:你一定会思考,我要是找到最大数通常一定会通过比较的形式来取得,而max与谁比较就是你要思考的。
如上:一、想定义max->score与p->score大小比较 ————>max->score与p->score是一种形式。自然而然:
二、定义max要与p同类型。最后我想返回有max:
三、我所要得到的max是 struct Student* 型。故定义:
四、所以此要得到max的函数类型定义为结构体指针型struct Student *
#include话不多说,就这一个例子。#include //定义的结构体 struct Student { int score; char *name; }; //结构体指针函数初始化 struct Student* initStuScores(int len) { int i; struct Student *p = (struct Student *)malloc(len*sizeof(struct Student)); for(i=0;i name = (char *)malloc(128); scanf("%s",p->name); printf("Input student%d scoren",i+1); scanf("%d",&(p->score)); p++; } return p-len; } //打印一遍 void printMes(struct Student *p, int len) { int i ; for(i=0;i<5;i++){ printf("名字 %s,分数 %dn",p->name,p->score); p++; } p=p-len; } //MAX位置... //主程序 int main() { int len=0; printf("input total num:n"); scanf("%d",&len); struct Student *pstus = initStuScores(len); printMes(pstus, len); findMaxStu(pstus, len); system("pause"); return 0; }
函数类型自行定义,像不打算返回max直接从函数中打印,void都是随意的,总之,不要太过犹豫,干就完了。写这个就是为了在如何都能冲到终点的前提下,理清一下我们起点到终点的路口有哪些,门清而已。
第一次写这东西,若说不清还耽误您时间,那实属抱歉。言者所以在意,得意而忘言,余歉为此,然余之本意以勉竭绵薄,以助有需之人而矣。余深知己底尚薄,若有错,蒙以陈师颜,余之大过也。



