大佬帮忙看一下

吃腻芒果冰 2018-03-09 02:06:07
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void Gain(int t);
void Insert();
void Del();
void Change();
void Seek();
void All();
int List();
typedef struct dzzz{
int num;
char name[12];
int zw;
}DATA;
struct node{
DATA data;
struct node *next;
}*head,*tail;
int main(){
int t,x;
printf("请输入学生数目:\n");
scanf("%d",&t);
Gain(t);
while(1){
x=List();
if(x==1)
Insert();
else if(x==2)
Seek();
else if(x==3)
Del();
else if(x==4)
Change();
else if(x==5)
All();
else
break;
}
return 0;
}
void Gain(int t){
head=(struct node*)malloc(sizeof(struct node));
tail =head;
head->next=NULL;
while(t--){
tail=tail->next;
printf("第%d名同学的学号 名字 座号为:\n");
scanf("%d%s%d",&tail->data.num,tail->data.name,&tail->data.zw);
}
tail->next=NULL;
tail=head;
}
void Insert(){
struct node *s,*p;
int j=0;
p=head;
printf("请输入学号 姓名 座号:\n");
scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
while(j<s->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(p==NULL){
printf("无法插入数据!\n");
}else{
s->next=p->next;
p->next=s;
printf("数据插入成功!\n");
}
}
void Del(){
struct node *h,*p;
int j=0;
printf("请输入要删除的数据:\n");
p=head;
scanf("%d%s%d",&h->data.num,h->data.name,&h->data.zw);
while(j<h->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(h==NULL)
printf("无法删除数据!\n");
else
p->next=p->next->next;

}
void Change(){
struct node *p,*y;
int t=0;
p=head;
printf("请输入您要更改的信息:学号,姓名,座号\n");
scanf("%d%s%d",&y->data.num,y->data.name,&y->data.zw);
while(t<y->data.num-1&&p!=NULL){
p=p->next;
t++;
}
y->next=p->next->next;
p->next=y;
printf("修改成功!\n");
}
void Seek(){
int x;
char t;
int numm;
char xmm[12];
struct node *p;
p=head->next;
printf("请输入1.姓名或2.学号:\n");
while(1){
scanf("%d",&x);
if(x==1){
scanf("%s",xmm);
while(strcmp(xmm,p->data.name)!=0){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else if(x==2){
scanf("%d",&numm);
while(numm!=p->data.num){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else
printf("输入错误!\n");
printf("结束输入时请输入:N/n\n");
scanf("%c",&t);
if(t=='n'||t=='N')
break;
}
}
void All(){
struct node *p;
p=head;
while(p!=NULL){
p=p->next;
printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
}
}
int List(){
int t;
printf(" --------------------------|----------------|--------------------------\n");
printf(" --------------------------|学生宿舍管理系统|--------------------------\n");
printf(" --------------------------|----------------|--------------------------\n");
printf(" ----------------------------1.插入学生信息----------------------------\n");
printf(" ----------------------------2.查询学生信息----------------------------\n");
printf(" ----------------------------3.删除学生信息----------------------------\n");
printf(" ----------------------------4.更改学生信息----------------------------\n");
printf(" ----------------------------5.查看全部信息----------------------------\n");
printf("请输入序号:\n");
while(1){
scanf("%d",&t);
if(t>6||t<1)
printf("请重新输入\n");
else
break;
}
return t;
}

感激不尽 !
...全文
592 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-03-09
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
自信男孩 2018-03-09
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct{
    int num;
    char name[10];
    int zw;
}DATATYPE;

typedef struct node{
    DATATYPE data;
    struct node *next;
}NODE;

int FullList();
void SeekList(NODE* head);
void InsertList(NODE* head);
void DeleteList(NODE* head);
void ChangeList(NODE* head);
void AllList(NODE* head);

int main()
{
    NODE *head,*p,*s;
    int tm;
    head=(NODE*)malloc(sizeof(NODE));
    head->next=NULL;
    s = head;
    printf("请输入学生人数:\n");
    scanf("%d", &tm);
    while(tm--){
        printf("请依次输入 学号 姓名 座号\n");
        p=(NODE*)malloc(sizeof(NODE));
        scanf("%d%s%d",&p->data.num,p->data.name,&p->data.zw);
        s->next = p;
        s = p;
    }
    p->next=NULL;

    while(1){
        switch(FullList()){
            case 1:
                InsertList(head);
                break;
            case 2:
                SeekList(head);
                break;
            case 3:
                DeleteList(head);
                break;
            case 4:
                ChangeList(head);
                break;
            case 5:
                AllList(head);
                break;
            default:
                break;
        }
    }
    return 0;
}
int FullList(){
    int t;
    printf("     --------------------------|----------------|--------------------------\n");
    printf("     --------------------------|学生宿舍管理系统|--------------------------\n");
    printf("     --------------------------|----------------|--------------------------\n");
    printf("     ----------------------------1.插入学生信息----------------------------\n");
    printf("     ----------------------------2.查询学生信息----------------------------\n");
    printf("     ----------------------------3.删除学生信息----------------------------\n");
    printf("     ----------------------------4.更改学生信息----------------------------\n");
    printf("     ----------------------------5.查看全部信息----------------------------\n");
    printf("请输入序号:\n");
    while(1){
        scanf("%d", &t);
        if(t >= 6||t<1)
            printf("请重新输入\n");
        else
            break;
    }
    return t;
}
void SeekList(NODE* head){
    int x;
    char t;
    int numm;
    char xmm[12];
    NODE *p;
    p=head->next;
    printf("请输入1.姓名或2.学号:\n");
    while(1){
        scanf("%d",&x);
        if(x==1){
            scanf("%s",xmm);
            while(strcmp(xmm,p->data.name)!=0){
                p=p->next;
            }
            printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
        }else if(x==2){
            scanf("%d",&numm);
            while(numm!=p->data.num){
                p=p->next;
            }
            printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
        }else
            printf("输入错误!\n");
        printf("结束输入时请输入:N/n\n");
        scanf("%c",&t);
        if(t=='n'||t=='N')
            break;
    }
}
void InsertList(NODE *head){
    NODE *s,*p;
    int j=0;
    p = head;
    s = (NODE *)malloc(sizeof(NODE));
    if (!s)
        exit(0);
    printf("请输入学号 姓名 座号:\n");
    scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
    while(j<s->data.num-1 && p){
        p = p->next;
        j++;
    }
    if(p==NULL){
        printf("无法插入数据!\n");
    }else{
        s->next = p->next;
        p->next = s;
        printf("数据插入成功!\n");
    }
}

void DeleteList(NODE* head)
{
    NODE *p, *s;
    int num;

    printf("请输入要删除的数据(学号):\n");
    s = head;
    p = head->next;
    scanf("%d",&num);

    while (p && num != p->data.num) {
        p = p->next;
        s = s->next;
    }
    if (!p) {
        printf("无法删除数据!\n");
    } else {
        s->next = p->next;
        free(p);
    }
    /*
    while(j<h.data.num-1&&p!=NULL){
        p = p->next;
        j++;
    }
    if(h==NULL)
        printf("无法删除数据!\n");
    else
        p->next=p->next->next;
    */
}

void AllList(NODE* head){

    NODE *p;
    p=head->next;
    while(p) {
        printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
        p = p->next;
    }
}
void ChangeList(NODE* head)
{
    NODE *p;
    DATATYPE y;

    p = head->next;
    printf("请输入您要更改的信息:学号,姓名,座号\n");
    scanf("%d%s%d",&y.num,y.name,&y.zw);

    while (p && p->data.num != y.num) {
        p = p->next;
    }
    if (!p) {
        printf("没有找到!\n");
    } else {
        memcpy(&p->data, &y, sizeof(DATATYPE));
    }
    /*
    while(t<y->data.num-1&&p!=NULL){
        p=p->next;
        t++;
    }
    y->next=p->next->next;
    p->next=y;
    */
    printf("修改成功!\n");
}
参考一下吧
自信男孩 2018-03-09
  • 打赏
  • 举报
回复
什么问题?问题不是靠猜出来的,建议详细说明一下你的问题。
源码直接下载地址: https://pan.quark.cn/s/387d7c8f6289 在使用IE浏览器的过程中,偶尔会出现重置为默认配置操作未能顺利完成的现象。这种情况的发生可能源于多种因素,包括注册表项出现偏差、浏览器附加组件之间存在不兼容、操作系统授权设置不当或受到恶意程序影响等。针对这一挑战,我们可以通过一系列系统性的方法来逐一诊断和纠正。首先需要验证当前用户是否具备管理员级别的操作权限。在执行重置配置的操作时,必须确保IE浏览器是以管理员身份启动的。具体操作方式为,使用鼠标右键单击IE程序图标,并从弹出的菜单中选择“以管理员身份运行”这一选项。其次,应当检查是否存在恶意软件。恶意程序有时会非法修改浏览器的配置信息,从而阻碍重置过程的正常进行。用户可以借助Windows系统自带的Microsoft Safety Scanner进行检测,或者选择安装并使用第三方安全防护软件执行全面的系统扫描。紧接着,需要对浏览器的缓存数据以及Cookies文件进行清理。在IE浏览器界面中,通过访问“工具”菜单并选择“Internet选项”,然后在弹出的设置界面中,切换至“常规”标签页,并执行清除浏览历史记录的操作,此过程应包含Cookies和临时互联网文件。倘若上述步骤均未能解决问题,那么可以考虑禁用或移除那些可能引发冲突的浏览器附加组件。相关操作需要在“工具”菜单下找到并打开“管理加载项”,对可疑的插件进行禁用处理,并在浏览器重新启动后再次尝试执行重置操作。再者,修复IE浏览器相关的注册表配置也是至关重要的环节。注册表编辑器是一个功能强大的系统工具,任何不当的操作都可能导致严重的系统问题,因此在进行修改前必须创建系统还原点作为安全备份。用户可以通过按下“Win+R”组合...
内容概要:本文详细介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,系统研究了光伏发电与储能系统融合VSG技术并入电网的动态特性与控制策略。通过构建完整的VSG控制模块,模拟其在并网过程中的虚拟惯性响应、频率调节能力和有功无功功率支撑特性,验证了该系统在增强电网稳定性、提升新能源并网适应性方面的有效性。模型全面涵盖光伏出力特性、储能系统充放电管理、VSG有功-无功解耦控制、下垂控制机制以及并网点动态响应等关键环节,并通过多种工况下的仿真分析,评估系统在不同运行条件下的动态性能与鲁棒性。; 适合人群:具备电力系统、新能源发电、自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制或电力电子系统研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①深入理解光伏储能系统如何通过VSG技术模拟同步发电机的惯性和阻尼特性以支持电网稳定;②掌握虚拟惯量控制、下垂控制等VSG核心控制策略在Simulink中的建模、参数设计与实现方法;③为新型电力系统中新能源并网的动态仿真、稳定性分析及控制策略优化提供可靠的模型基础和技术参考。; 阅读建议:建议结合所提供的仿真模型进行逐步操作与参数调试,重点关注VSG控制环路的结构设计、控制器参数整定及其对系统动态性能的影响,同时可将该模型拓展应用于多机并联、微电网孤岛/并网切换、多能源协同控制等更复杂的系统场景中进行进阶研究。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧