指针-求助!怎么传递参数啊!

问题描述

求助!怎么传递参数啊!

参数没法传递。。。。head在别的函数里是空的。。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define LEN sizeof(Student)
#include <time.h>

typedef struct SIS { //结构体的声明
    long StudentID;    //学号
    char Name[20];  //姓名
    char Sex[10];//性别
    int Age;//年龄
    char TOE[30] ;//Time of Enrollment入学日期
    float GPA;//(加权平均)
    char PhoneNo[100]; //电话号码
    char MailingAddress[100];//邮箱
    struct SIS *next;//指向下一个结构体的指针
} Student;

/////////////////////声明函数///////////////////////
void wellcome();//欢迎界面
void start();//开始界面
int menu();//菜单
SIS* input();//输入/插入
SIS* del(Student *head);//删除
int search (Student *head);//查找
int ALL(Student *head);//显示全部
///////////////////////////////////////////////////

void wellcome() { //欢迎界面
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    printf("*************************************************n");
    printf("*tt学生信息管理系统tt*n");
    printf("*tttttt*n");
    printf("*tttLAB 8ttt*n");
    printf("*tttttt*n");
    printf("*t            莱茵出品tt        *n");
    printf("*tttttt*n");
    printf("*tttt2.33.vert*n");
    printf("*tttttt*n");
    printf("*tttttt*n");
    printf("*************************************************n");
    printf("%s", asctime (timeinfo));
    printf("Please Press Enter to continue……");

}

void start() { //开始界面
    int a=0;
    int b=0;
    int A=15080121;
    getchar();
    system("cls");
    printf("nnn");
    printf("tt学生信息管理系统nnn");
    printf("ttt2.33.Vernnn");
    getchar();
    system("cls");
/*  printf("tt请输入用户名和密码,按下Enter继续nnn");
    printf("tAdmin:");
    scanf("%d",&a);
    printf("n");
    printf("tPassword:");
    scanf("%d",&b);
    if(a==A&&b==A) {
        getchar();
        system("cls");
    } else {
        printf("ttt您没有足够的权限!!!!!nPlease Press Enter to EXIT……");
        getchar();
        exit(0);
    }*/
}

int menu() {//菜单
    int shuru=0;
    printf("nnn");
    printf("tt (1)Create a student listn");
    printf("tt (2)Insert a studentn");//(to the sorted array or the sorted linked list )
    printf("tt (3)Delete a studentn");
    printf("tt (4)Search a studentn");
    printf("tt (5)Display all studentsn");
    printf("tt (6)exitn");
    printf("tt请选择功能:");
    scanf("%d",&shuru);
    return shuru;

}

SIS* input() {//输入、插入
    Student *p1,*p2;
    Student *student;
    Student *head=NULL;
    char a = 'y';

    system("cls");

    student = (Student*) malloc (LEN);
    printf("t请按照要求输入n");
    while(a=='y'||a=='Y') {
        p2=p1=head;
        printf("tStudentID:");
        scanf("%ld",&student->StudentID);
        printf("t");
        printf("Name:");
        scanf("%s",student->Name);
        printf("t");
        printf("Sex:");
        scanf("%s",&student->Sex);
        printf("t");
        printf("Age:");
        scanf("%d",&student->Age);
        printf("t");
        printf("TOE:");
        scanf("%s",&student->TOE);
        printf("t");
        printf("GPA:");
        scanf("%f",&student->GPA);
        printf("t");
        printf("PhoneNo:");
        scanf("%s",&student->PhoneNo);
        printf("t");
        printf("MailingAddress:");
        scanf("%s",&student->MailingAddress);
        printf("nnnn");
        student->next=NULL;
        fflush(stdin);
        if(head==NULL)head=student;
        else {
            while(p1->StudentID<student->StudentID&&p1->next!=NULL) {
                p2=p1;
                p1=p1->next;
            }
            if(p1->StudentID>student->StudentID)
                if(p1==head) {
                    student->next=head;
                    head=student;
                } else {
                    p2->next=student;
                    student->next=p1;
                }
            else p1->next=student;
        }
        student = (Student *) malloc (LEN);
        printf("是否继续添加,输入'y'或'Y'继续n");
        a=getchar();
        fflush(stdin);
    }
    printf("ttt录入成功!n");    free(student);
    return(p1);
}

SIS* del(Student *head) {           //删除学生信息
    Student *p1,*p2;
    int tage = 0;
    long StudentID;
    system("cls");
    p1=head;
    printf("ntt请输入学号:");
    scanf("%d",&StudentID);
    if(head==NULL) {
        printf("不存在学生信息!n");
        return 0;
    }
    while(p1!=NULL) {
        if(p1->StudentID==StudentID) {
            tage=1;
            if(p1==head)head=head->next;
            else p2->next=p1->next;
            free(p1);
            break;
        }
        p2=p1;
        p1=p1->next;
    }
    if(tage==0) printf("要删除的学生信息不存在!n");
    tage=0;
    printf("ttt成功删除息n");
    fflush(stdin);
//  system("cls");

    return (head);
}

int search (Student *head) {      //查询
    Student *p1;
    Student *student;
    int tage = 0;
    long StudentID;

    system("cls");
    printf("请输入要查询的学生学号:");
    scanf("%d",&StudentID);
    p1=head;
    if(head==NULL) {
        printf("无学生信息!n");
        return 0;
    } else
        while(p1!=NULL)
            if(p1->StudentID==StudentID) {
                tage=1;
                printf("你查找的学生信息如下:n");
                printf("ttStudentID:%ldn",p1->StudentID);
                printf("ttName:%sn",p1->Name);
                printf("ttSex:%sn",p1->Sex);
                printf("ttAge:%dn",p1->Age);
                printf("ttTOE:%sn",p1->TOE);
                printf("ttGPA:%2fn",p1->GPA);
                printf("ttPhonrNo:%sn",p1->PhoneNo);
                printf("ttMailingAddress:%snnn",&p1->MailingAddress);
                break;
            }

            else  p1=p1->next;
    if(tage==0)printf("ttt无该学生信息!n");
    tage=0;
    fflush(stdin);

    return 0;
}

int ALL(Student *head) { //显示全部信息
    Student *p1;
    p1 = head;
    system("cls");
    if(head==NULL) {
        printf("无学生信息!n");
        return 0;
    }
    while(p1!=NULL) {
        printf("ttStudentID:%ldn",p1->StudentID);
        printf("ttName:%sn",p1->Name);
        printf("ttSex:%sn",p1->Sex);
        printf("ttAge:%dn",p1->Age);
        printf("ttTOE:%sn",p1->TOE);
        printf("ttGPA:%2fn",p1->GPA);
        printf("ttPhonrNo:%sn",p1->PhoneNo);
        printf("ttMailingAddress:%snn",p1->MailingAddress);
        p1=p1->next;
    }
    return 0;
}

main() {
    int choose;
    int x=1;
    Student *head=NULL;

    wellcome();
    start();
    while(x) {
        choose=menu();
        switch(choose) {
            case 1: {
                input();
                system("pause");
                printf("Please Press Enter to Return……");
                getchar();
                system("cls");
                break;
            }

            case 2: {
                input();
                system("pause");
                printf("Please Press Enter to Return……");
                getchar();
                system("cls");
                break;
            }

            case 3: {
                del(head);
                system("pause");
                printf("Please Press Enter to Return……");
                getchar();
                system("cls");
                break;
            }

            case 4: {
                search(head);
                system("pause");
                printf("Please Press Enter to Return……");
                getchar();
                system("cls");
                break;
            }

            case 5: {
                ALL(head);
                system("pause");
                printf("Please Press Enter to Return……");
                getchar();
                system("cls");
                break;
            }

            case 6: {
                exit(1);
            }

            default: {
                system("cls");
                printf("nnnttt无此功能nnnn");
                break;
            }
        }

    }
}

解决方案

问题能再明确点吗?。。。

时间: 2024-09-15 21:58:16

指针-求助!怎么传递参数啊!的相关文章

参数传递-求助一个vb.net无法向NVelocity模板引擎传递参数的问题

问题描述 求助一个vb.net无法向NVelocity模板引擎传递参数的问题 我没找到vb.net的资料就用C#的翻译成了下面vb.net代码,我是想把一个类的实例作为参数传给模板,但模板并未收到son的数据,请各位前辈帮忙看看,字符串类型和数值类型都以传递,唯独类的实例不可以传递,代码如下: person类代码: Public Class person Public name As String Public age As Integer End Class html模板代码: <html>

C++编程规范之25:正确选择通过值、(智能)指针、或者引用传递参数

摘要:     正确选择参数:分清输入参数.输出参数,分清值参数和引用参数.正确地传递参数.     正确选择参数是通过值.通过引用还是通过指针传递,是一种能够最大程度提高安全性和效率的好习惯.     选择如何传递参数时,应该遵循一下准则.对于只输入参数:     1.始终用const限制所有指向只输入参数的指针和应用.     2.优先通过值来取得原始类型(如char.float)和复制开学比较低的值对象(如point.complex<float>)的输入.     3.优先按const的

指针-Java传递参数无法赋值

问题描述 Java传递参数无法赋值 为什么这样无法给pointer赋值,我debug看变量g.adjList[i}.firstedge明明不为null,但是整个循环下来pointer一直都是null,没有赋值成功请问这个什么回事? Graph是我定义的图的数据结构.firstedge的类型也是EdgeNode public static void showAll(Graph g) { for (int i = 1;i<= g.numVertexs ; i++) { 'EdgeNode point

C++中理解“传递参数”和异常之间的差异

从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类// 在这里并不重要void f1(Widget w); // 一些函数,其参数分别为void f2(Widget& w); // Widget, Widget&,或void f3(const Widget& w); // Widget* 类型void f4(Widget *pw);void f5(const Widget *pw);cat

ios-高手求助:传递NSError到方法中

问题描述 高手求助:传递NSError到方法中 有一个方法,参数: (void(^)(NSError*))errorCall; 需要传递errorCall值: -(void)message{ example = [[Example alloc]init] [example opertationError:void(^)(NSError*))errorCall ]; } 下面这行代码: [example opertationError:void(^)(NSError*))errorCall]; 需

php- js在不跳转的情况下向一个页面传递参数

问题描述 js在不跳转的情况下向一个页面传递参数 需求是把textarea传递到savexml.php进行数据保存,但同时我希望页面还留着当前页面.代码如下: <form name=""form1"" id=""form1"" method=""post"" action=""newtest.php""> <input type=

WML教程4:跳转和传递参数

教程 任务与导航-跳转和传递参数go的基本属性和应用 实现Card之间跳转的一个基本方法是go,go和do.anchor等标签的结合是WML高级应用的一个基础. 相关属性: href:声明链接的URL sendreferer:表示是否传递调用href所指定的URL的页面的URL,也就是当前页的URL,即HTTP头中的HTTP_REFERER,默认值为false,可选值为true method:WML的method与HTTP提交表单的方法类似,同样有Post和Get两种,缺省参数为Get. Pos

javascript向jsp传递参数的一种手段:使用xmlhttp对象

javascript|js|xml|对象 xmlhttp对象可以用来在不刷新页面的情况下传递参数,可作为一种javascript向jsp传递参数的一种方法. 下面就是一个javascript向jsp传递参数的例子: xmlhttp.jsp <%@ page contentType="text/html; charset=GB2312" language="java" import="java.util.*" import="jav

jsp与javascript结合在页面间传递参数

javascript|js|页面 jsp与javascript结合用以处理confirm确认以达到传递参数到另一个页面的作用 目的是从数据库取出一系列数据,在每一行结束有删除一项,但是删除的时候需要用户确认是否删除. 首先我用了javascript来判断 <script language=javascript>function Myconfirm(id){if (confirm(是否确定删除该用户?)) {deleteUser(id)}} 这样在调用javascript:Myconfirm()