| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:帮忙看看注释对不啊
只看楼主 加入收藏
新手NO1
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-3-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
帮忙看看注释对不啊
#include <stdio.h>
#include <conio.h>

typedef struct student  //定义结构体
{
    int num;   //定义整形变量
    char name[20];   //定义字符串数组
    char sex;       //定义字符串变量
    int age;    //定义整形变量
    int dormitory_num;       //定义整形变量
    float score;    //定义浮点形变量
    struct student *nextstu;   //定义结构体变量
}STU_INFO;

STU_INFO *head;//定义结构体类型的指针变量
STU_INFO *rear;//定义结构体类型的指针变量
int i = 0;    //i为记录学生个数的全局变量

int insert_stu(void);/*插入信息*/
int delete_stu(void);/*删除信息*/
int print_stu(void);/*输出信息*/
int judge_stu(int j_num);/*判断学号是否重复*/
STU_INFO *link_stu(STU_INFO *p_link, int insert_num);/*学生信息连接*/

int main(void)
{
    int key = 0;      //定义整形变量且赋值
    STU_INFO *p_stu = NULL;   //将结构体变量置空
    head = (STU_INFO *)malloc(sizeof(STU_INFO)); //调用函数为head申请空间
    head->nextstu = NULL;  //将heed->nextstu置空
    while(1)    //while函数条件为真执行,为假退出
    {
        printf("************************\n");
        printf("*1.插入学生信息        *\n");
        printf("*2.删除学生信息        *\n");
        printf("*3.输出学生信息        *\n");
        printf("*4.将学生信息保存到文件*\n");
        printf("*5.退出                *\n");
        printf("************************\n");
        printf("请选择:"); //输出请选择
        scanf("%d",&key);  //输入变量key的值
       switch(key)   //判断key的值
        {
            case 1: //为1进行下列判断
            {
                if(insert_stu())    //判断值为真
                {
                    i++;      //i增值
                    printf("\n插入成功!\n\n");  //输出插入成功
                }
                else
                {
                    printf("\n插入失败!\n\n");  //否则输出插入失败
                }
                break; //返回
            }
            case 2:    //为2进行下列判断
            {
                if(delete_stu())    //判断值为真
                {
                    i--;    //i减值
                    printf("\n删除成功!\n\n");    //输出删除成功
                }
                else
                {
                    printf("\n删除失败!\n\n");   //否则输出删除失败
                }
                break;  //返回
            }
            case 3:  //为3进行下列判断
            {
                if(print_stu())   //判断值为真
                {
                    printf("\n输出成功!\n\n");  //输出输出成功
                }
                else
                {
                    printf("\n输出失败!\n\n");   //否则输出输出失败
                }
                break;   //返回
            }
            case 4:    //为4输出提示信息
            {
                printf("此功能目前未实现,敬请关注最新版本!\n\n");  //输出此功能目前未实现,敬请关注最新版本!
                break;//返回
            }
            case 5:   //为5输出提示信息
            {
                printf("感谢使用本软件,更多功能请注册!O(∩_∩)O\n");   //输出感谢使用本软件,更多功能请注册!O(∩_∩)O
                exit();//退出
            }
            default:
            {
                printf("\n操作不正确,请重新选择!\n\n");  //都不满足输出操作不正确,请重新选择!
                break;//返回
            }
        }
        //clrscr();
    }
}

int insert_stu(void)   //函数声明
{
    STU_INFO *p_insert;  //声明指向指向结构体的变量
    p_insert = (STU_INFO *)malloc(sizeof(STU_INFO)); //为p_insert开辟内存空间
    printf("输入学号:"); //输出输入学号
    scanf("%d",&p_insert->num); //输入p_inser的值
    getchar(); //取得字符
    if(i) //判断i的值
    {
        if(judge_stu(p_insert->num))//判断学号是否重复为真时
        {
            p_insert->nextstu = link_stu(p_insert,p_insert->num);//把输入的学号值赋给p_insert
        }
        else
        {
            free(p_insert);//否则释放空间
            return 0;//返回0值
        }
    }
    else
    {
        head->nextstu = p_insert;//把p_insert的节点值赋给head的下一元素
        p_insert->nextstu = NULL;//p_insert的下一个值设为空
        rear = p_insert;//把p_insert的值给rear
    }
    printf("输入姓名:");//输出输入姓名
    scanf("%s",p_insert->name);//给p_insert->name输入值
    getchar();//取得字符
    printf("输入性别(m/f):");//输出输入性别(m/f)
    scanf("%c",&p_insert->sex);//给p_insert->sex输入值
    getchar();//取得字符
    printf("输入年龄:");//输出输入年龄:
    scanf("%d",&p_insert->age);//给p_insert->age输入值
    getchar();//取得字符
    printf("输入宿舍号:");//输出输入宿舍号:
    scanf("%d",&p_insert->dormitory_num);//给p_insert->dormitory_num输入值
    getchar();//取得字符
    printf("输入成绩:");//输出输入成绩:
    scanf("%f",&p_insert->score);//给p_insert->score输入值
    return 1;//返回1
}
int delete_stu(void)//函数声明
{
    STU_INFO *temp = head->nextstu;//temp记录临时结点
    int delete_num = 0;//定义要删除的初始值为0
    printf("要删除的学号是:");
    scanf("%d",&delete_num); //将要删除的学号赋给delete_num
    if(temp->num == delete_num)//判断要删除的学号与temp中的是否相等
    {
        head->nextstu = temp->nextstu;//把temp节点下一个元素赋给head->nextstu
        free(temp);//释放temp
        return 1;//返回1
    }
    else
    {
        while(temp->nextstu != NULL && temp->nextstu->num != delete_num)//当临时结点不为空和不等于要删除的学号时
        
        {
            temp = temp->nextstu;//把temp的下一个节点的值赋给temp
        }
        if(temp->nextstu == NULL)//当temp->nextstu的值为空时
        {
            printf("\n学号为 %d 的学生信息不存在 !",delete_num);//输出学号为delete_num的学生信息不存在
            return 0;//返回0
        }
        else
        {
            temp->nextstu = temp->nextstu->nextstu;//把temp->nextstu临时节点的值赋temp->nextstu
            free(temp);//释放temp
            return 1;//返回0
        }
    }
    return 0;//返回0
}

int print_stu(void)//函数声明
{
    STU_INFO *temp = head->nextstu;//把head的下一个节点值赋给结构体类型的指针temp
    if(temp != NULL)//判断temp不为空时
    {
        while(temp->nextstu != NULL)//当temp->nextstu的值不为空时
        {
            printf("学号:%3d,姓名:%-8s,",temp->num,temp->name);//输出学号temp->num,姓名temp->name
            printf("性别:%c,年龄:%3d,",temp->sex,temp->age);//输出性别temp->sex年龄temp->age)
            printf("宿舍号:%4d,成绩:%4.2f\n",temp->dormitory_num,temp->score);//输出宿舍号temp->dormitory_num,成绩temp->score
            temp = temp->nextstu;//把temp的下一个节点的元素给temp
        }
        printf("学号:%3d,姓名:%-8s,",temp->num,temp->name);//输出学号temp->num,姓名temp->name
        printf("性别:%c,年龄:%3d,",temp->sex,temp->age);//输出性别temp->sex年龄temp->age)
        printf("宿舍号:%4d,成绩:%4.2f\n",temp->dormitory_num,temp->score);//输出宿舍号temp->dormitory_num,成绩temp->score
        return 1;//返回1
    }
    else
    {
        return 0;//返回0
    }
}
int judge_stu(int j_num)//函数声明
{
    STU_INFO *temp = head->nextstu;//把head的下一个节点值赋给结构体类型的指针temp
    while(temp->nextstu != NULL && temp->num != j_num)//当temp的下一个节点的值不为空和temp的值不为空时
    {
        temp = temp->nextstu;//把temp的下一个节点的元素值赋给temp
    }
    if(temp->num == j_num)//判断temp->num的值和j_num的值
    {
        return 0;//为真返回0
    }
    else
    {
        return 1;//否则返回1
    }
}
STU_INFO *link_stu(STU_INFO *p_link, int insert_num)//定义结构体类型的link_stu形参为结构体类型的指针p_link和int类型的insert_sum
{
    STU_INFO *temp;    //temp记录临时节点位置
    temp = head->nextstu;//把temp的下一个节点的元素值赋给temp
    if(temp->num > insert_num)//判断当temp->num的值大于insert_num的值时
    {
        p_link->nextstu = head->nextstu;//把head的下一个节点的元素值赋给p_link的下一个节点
        head->nextstu = p_link;//指针指向head的下一个元素
        return p_link->nextstu;//返回指针的下一个节点的元素值
    }
    else
    {
        while(temp->nextstu != NULL)//当temp的下一个节点的元素值不等于空时
        {
            if(temp->num < insert_num && temp->nextstu->num > insert_num)//判断当temp的值小于insert的值或temp的下一个节点的值小于insert的值时
            {
                p_link->nextstu = temp->nextstu;//把temp的下一个节点的元素值赋给p_link的下一个节点
                temp->nextstu = p_link;//把指针指向temp的下一个元素
                return p_link->nextstu;//返回p_link的下一个节点的元素值
            }
            else
            {
                temp = temp->nextstu;//把temp的下一个节点的元素给temp
            }
        }
        if(temp->num < insert_num)//当插入的学号大于temp中的学号时
        {
            rear->nextstu = p_link;//把指针指向rear的下一个节点的元素值
            rear = p_link;//把p_link的值赋给rear
            return NULL;//返回空
        }
    }
    return NULL;//返回空
}
搜索更多相关主题的帖子: 注释 
2010-03-28 16:55
zhushilu
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2010-3-27
收藏
得分:1 
好长,眼好花
2010-03-28 17:27
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:17 
#include <stdio.h>
#include <conio.h>

typedef struct student  //定义结构体
{
    int num;   //定义整形变量
    char name[20];   //定义字符串数组
    char sex;       //定义字符串变量
    int age;    //定义整形变量
    int dormitory_num;       //定义整形变量
    float score;    //定义浮点形变量
    struct student *nextstu;   //定义指向结构体的指针变量
}STU_INFO;

STU_INFO *head;//定义结构体类型的指针变量
STU_INFO *rear;//定义结构体类型的指针变量
int i = 0;    //i为记录学生个数的全局变量

int insert_stu(void);/*插入信息*/
int delete_stu(void);/*删除信息*/
int print_stu(void);/*输出信息*/
int judge_stu(int j_num);/*判断学号是否重复*/
STU_INFO *link_stu(STU_INFO *p_link, int insert_num);/*学生信息连接*/

int main(void)
{
    int key = 0;      //定义整形变量且赋值
    STU_INFO *p_stu = NULL;//暂时没有用到赋初值为空   
    head = (STU_INFO *)malloc(sizeof(STU_INFO)); //调用函数为head申请空间
    head->nextstu = NULL;  //将heed->nextstu置空
    while(1)    //while函数条件为真执行,为假退出
    {
        printf("************************\n");
        printf("*1.插入学生信息        *\n");
        printf("*2.删除学生信息        *\n");
        printf("*3.输出学生信息        *\n");
        printf("*4.将学生信息保存到文件*\n");
        printf("*5.退出                *\n");
        printf("************************\n");
        printf("请选择:"); //输出请选择
        scanf("%d",&key);  //输入变量key的值
       switch(key)   //判断key的值
        {
            case 1: //为1进行下列判断
            {
                if(insert_stu())    //判断值为真
                {
                    i++;      //i增值
                    printf("\n插入成功!\n\n");  //输出插入成功
                }
                else
                {
                    printf("\n插入失败!\n\n");  //否则输出插入失败
                }
                break; //返回
            }
            case 2:    //为2进行下列判断
            {
                if(delete_stu())    //判断值为真
                {
                    i--;    //i减值
                    printf("\n删除成功!\n\n");    //输出删除成功
                }
                else
                {
                    printf("\n删除失败!\n\n");   //否则输出删除失败
                }
                break;  //返回
            }
            case 3:  //为3进行下列判断
            {
                if(print_stu())   //判断值为真
                {
                    printf("\n输出成功!\n\n");  //输出输出成功
                }
                else
                {
                    printf("\n输出失败!\n\n");   //否则输出输出失败
                }
                break;   //返回
            }
            case 4:    //为4输出提示信息
            {
                printf("此功能目前未实现,敬请关注最新版本!\n\n");  //输出此功能目前未实现,敬请关注最新版本!
                break;//返回
            }
            case 5:   //为5输出提示信息
            {
                printf("感谢使用本软件,更多功能请注册!O(∩_∩)O\n");   //输出感谢使用本软件,更多功能请注册!O(∩_∩)O
                exit();//退出
            }
            default:
            {
                printf("\n操作不正确,请重新选择!\n\n");  //都不满足输出操作不正确,请重新选择!
                break;//返回
            }
        }
        //clrscr();
    }
}

int insert_stu(void)   //函数实现(函数申明在前面呢)
{
    STU_INFO *p_insert;  //声明指向指向结构体的变量
    p_insert = (STU_INFO *)malloc(sizeof(STU_INFO)); //为p_insert开辟内存空间
    printf("输入学号:"); //输出输入学号
    scanf("%d",&p_insert->num); //输入num的值
    getchar(); //等待任意输入
    if(i) //判断i的值
    {
        if(judge_stu(p_insert->num))//判断学号是否重复为真时
        {
            p_insert->nextstu = link_stu(p_insert,p_insert->num);//把输入的学号值赋给p_insert
        }
        else
        {
            free(p_insert);//否则释放空间
            return 0;//返回0值
        }
    }
    else
    {
        head->nextstu = p_insert;//把p_insert的节点值赋给head的下一元素
        p_insert->nextstu = NULL;//p_insert的下一个值设为空
        rear = p_insert;//把p_insert的值给rear
    }
    printf("输入姓名:");//输出输入姓名
    scanf("%s",p_insert->name);//给p_insert->name输入值
    getchar();//取得字符
    printf("输入性别(m/f):");//输出输入性别(m/f)
    scanf("%c",&p_insert->sex);//给p_insert->sex输入值
    getchar();//取得字符
    printf("输入年龄:");//输出输入年龄:
    scanf("%d",&p_insert->age);//给p_insert->age输入值
    getchar();//取得字符
    printf("输入宿舍号:");//输出输入宿舍号:
    scanf("%d",&p_insert->dormitory_num);//给p_insert->dormitory_num输入值
    getchar();//取得字符
    printf("输入成绩:");//输出输入成绩:
    scanf("%f",&p_insert->score);//给p_insert->score输入值
    return 1;//返回1
}
int delete_stu(void)//函数实现(函数申明在前面呢)
{
    STU_INFO *temp = head->nextstu;//temp记录临时结点
    int delete_num = 0;//定义要删除的初始值为0
    printf("要删除的学号是:");
    scanf("%d",&delete_num); //将要删除的学号赋给delete_num
    if(temp->num == delete_num)//判断要删除的学号与temp中的是否相等
    {
        head->nextstu = temp->nextstu;//把temp节点下一个元素赋给head->nextstu
        free(temp);//释放temp
        return 1;//返回1
    }
    else
    {
        while(temp->nextstu != NULL && temp->nextstu->num != delete_num)//当临时结点不为空和不等于要删除的学号时
        
        {
            temp = temp->nextstu;//把temp的下一个节点的值赋给temp
        }
        if(temp->nextstu == NULL)//当temp->nextstu的值为空时
        {
            printf("\n学号为 %d 的学生信息不存在 !",delete_num);//输出学号为delete_num的学生信息不存在
            return 0;//返回0
        }
        else
        {
            temp->nextstu = temp->nextstu->nextstu;//把temp->nextstu临时节点的值赋temp->nextstu
            free(temp);//释放temp
            return 1;//返回0
        }
    }
    return 0;//返回0
}

int print_stu(void)//函数实现(函数申明在前面呢)
{
    STU_INFO *temp = head->nextstu;//把head的下一个节点值赋给结构体类型的指针temp
    if(temp != NULL)//判断temp不为空时
    {
        while(temp->nextstu != NULL)//当temp->nextstu的值不为空时
        {
            printf("学号:%3d,姓名:%-8s,",temp->num,temp->name);//输出学号temp->num,姓名temp->name
            printf("性别:%c,年龄:%3d,",temp->sex,temp->age);//输出性别temp->sex年龄temp->age)
            printf("宿舍号:%4d,成绩:%4.2f\n",temp->dormitory_num,temp->score);//输出宿舍号temp->dormitory_num,成绩temp->score
            temp = temp->nextstu;//把temp的下一个节点的元素给temp
        }
        printf("学号:%3d,姓名:%-8s,",temp->num,temp->name);//输出学号temp->num,姓名temp->name
        printf("性别:%c,年龄:%3d,",temp->sex,temp->age);//输出性别temp->sex年龄temp->age)
        printf("宿舍号:%4d,成绩:%4.2f\n",temp->dormitory_num,temp->score);//输出宿舍号temp->dormitory_num,成绩temp->score
        return 1;//返回1
    }
    else
    {
        return 0;//返回0
    }
}
int judge_stu(int j_num)//函数实现(函数申明在前面呢)
{
    STU_INFO *temp = head->nextstu;//把head的下一个节点值赋给结构体类型的指针temp
    while(temp->nextstu != NULL && temp->num != j_num)//当temp的下一个节点的值不为空和temp的值不为空时
    {
        temp = temp->nextstu;//把temp的下一个节点的元素值赋给temp
    }
    if(temp->num == j_num)//判断temp->num的值和j_num的值
    {
        return 0;//为真返回0
    }
    else
    {
        return 1;//否则返回1
    }
}
STU_INFO *link_stu(STU_INFO *p_link, int insert_num)//定义结构体类型的link_stu形参为结构体类型的指针p_link和int类型的insert_sum
{
    STU_INFO *temp;    //temp记录临时节点位置
    temp = head->nextstu;//把temp的下一个节点的元素值赋给temp
    if(temp->num > insert_num)//判断当temp->num的值大于insert_num的值时
    {
        p_link->nextstu = head->nextstu;//把head的下一个节点的元素值赋给p_link的下一个节点
        head->nextstu = p_link;//指针指向head的下一个元素
        return p_link->nextstu;//返回指针的下一个节点的元素值
    }
    else
    {
        while(temp->nextstu != NULL)//当temp的下一个节点的元素值不等于空时
        {
            if(temp->num < insert_num && temp->nextstu->num > insert_num)//判断当temp的值小于insert的值或temp的下一个节点的值小于insert的值时
            {
                p_link->nextstu = temp->nextstu;//把temp的下一个节点的元素值赋给p_link的下一个节点
                temp->nextstu = p_link;//把指针指向temp的下一个元素
                return p_link->nextstu;//返回p_link的下一个节点的元素值
            }
            else
            {
                temp = temp->nextstu;//把temp的下一个节点的元素给temp
            }
        }
        if(temp->num < insert_num)//当插入的学号大于temp中的学号时
        {
            rear->nextstu = p_link;//把指针指向rear的下一个节点的元素值
            rear = p_link;//把p_link的值赋给rear
            return NULL;//返回空
        }
    }
    return NULL;//返回空
}

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-03-28 17:31
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:1 
没有必要写这么多注释的。。。。。。。。。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-03-28 17:32
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:1 
如4楼所说
没有必要给每个语句都写注释。。。

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-03-28 18:32
快速回复:帮忙看看注释对不啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051268 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved