| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:求大神带躺 。case 3:一直循环永不会停?
只看楼主 加入收藏
堕落之地
Rank: 1
等 级:新手上路
帖 子:57
专家分:5
注 册:2019-3-11
结帖率:100%
收藏
 问题点数:0 回复次数:0 
求大神带躺 。case 3:一直循环永不会停?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
    char no[8];   //8位学号
    char name[20]; //姓名
    int price;     //成绩
}Student;
typedef struct LNode{
     Student   data;       //数据域
     struct LNode  *next;   //指针域
}LNode,*LinkList;
//LinkList le;
LNode *le1=NULL,*le2=NULL,aaa,*le=&aaa,*le3=&aaa;
int main(){
    static int x;
    int a,i;   
    printf("\n********************************\n\n");
    puts("1. 构造链表表");
    puts("2. 录入学生信息");
    puts("3. 显示学生信息");
    puts("4. 输入姓名,查找该学生");
    puts("5. 显示某位置该学生信息");
    puts("6. 在指定位置插入学生信息");
    puts("7. 在指定位置删除学生信息");
    puts("8. 统计学生个数");
    puts("0. 退出");
    printf("\n********************************\n\n");
    while(1){
        printf("请输入选择:");
        scanf("%d",&a);
        switch(a){
            case 1:{
                printf("请输入学生个数:");
                scanf("%d",&x);
                le1=(LNode *)malloc(sizeof(LNode));
                le2=le1;//保存第一个节点地址。
                for(i=0;i<x;i++){
                    if(le1!=NULL){
                        le3->next=le1;//间接访问时指针不能为0;
                        le3=le1;
                    }
                    else {printf("创建链表失败!");
                        break;
                    }
                    le1=(LNode *)malloc(sizeof(LNode));
                }
                free(le1);//释放无用的地址
                (*le3).next=NULL;//最后节点next内容为空。le3为最后的节点指针;
                le->next=le2;//le为第一个结点。//保持le指向第一个节点,
                break;
            }
            case 2:{
                for(i=0;le->next!=NULL;i++){
                    le1=le->next;
                    le=le1;
                    printf("请输入第%d个学生姓名:",i+1);
                    scanf("%s",le1->data.name);
                    printf("请输入第%d个学生学号:",i+1);
                    scanf("%s",le1->data.no);
                    printf("请输入第%d个学生成绩:",i+1);
                    scanf("%d",&(le1->data.price));
                }
                printf("输入信息完毕!\n");//保持le指向第一个节点,
                le->next=le2;
                break;
            }
            case 3:{
                le=le2;
                for(i=0;le!=NULL;i++){
                    printf("第%d个学生姓名:%s,学号:%s,成绩:%d\n",(i+1),le->data.name,le->data.no,le->data.price);
                    le=le->next;
                }
                le->next=le2;//保持le指向第一个节点,
                break;
            }
            case 4:{
                char b[10];//数组直接初始化时,跟个定义时初始化可以省略大小,但不是定义时初始化不建议省略大小。
                int flag=1;
                printf("请输入查找学生的姓名:");
                scanf("%s",b);
                for(i=0;i<x;i++){
                    if(strcmp(b,le->next->data.name));{
                        printf("第%d个学生姓名:%s,学号:%s,成绩:%d\n",(i+1),le->data.name,le->data.no,le->data.price);
                        flag=1;
                        break;
                    }
                       
                            le1=le->next;
                            le=le1;
                    }
                if(flag)
                    printf("查找成功了\n");
                else   
                    printf("查找失败了\n");
                le->next=le2;//保持le指向第一个节点,
                break;
            }
        }   
    }
}在使用case 3:一直输出停都停不下来?case 4:无论输入什么都有结果?
搜索更多相关主题的帖子: data next printf puts 学生 
2019-03-24 18:13
快速回复:求大神带躺 。case 3:一直循环永不会停?
数据加载中...
 
   



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

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