吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 477|回复: 10
收起左侧

[求助] C语言数据结构作业求助😢

[复制链接]
fqh666 发表于 2024-1-8 21:26
第一步就遇到了问题,头文件预编译?
有模版也抄不明白
有没有大佬教一下
大学生什么都学,什么都学不会
过几天还要作小答辩
C语言和没学一样

任务要求

任务要求

第一个模板.txt

4.59 KB, 下载次数: 5, 下载积分: 吾爱币 -1 CB

第一个模板

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| fqh666 发表于 2024-1-8 21:42
第一次发帖,模板发下载链接了
待会补个图
 楼主| fqh666 发表于 2024-1-9 00:49
[C] 纯文本查看 复制代码
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <windows.h>
typedef int ElemType ;
typedef struct node
{    int id;
    int shuxue;
	int yingyu;
	int yuwen;
	int wuli;
	int huaxue;
	struct n0de *next;
} LinkList;//初始化单链表
void Initlist(LinkList*&L)
{
	L=(LinkList*)malloc(sizeof(LinkList));
	L->next+NULL;//创建头结点,其next域置为NULL
}
void print (char *str);//提示文字函数
{	printf(str);
}
void DispList(LinkList*L)//输出单链表
{
	LinkList *p=L->next;
	printf("<<<<<<<所以学生成绩>>>>>>>\n");
	if(p==NULL)
	{
		print("无学生数据!\n")
	}
	else
	{
		printf("学号\t数学\t英语\t语文\t物理\t化学\t总分\n");
		while(p!=NULL)
		{
			printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n",p->id,
				p->shuxue,p->yingyu,p->yuwen,p->wuli,p->huaxue,p->shuxue+p->yingyu+p->yuwen+p->wuli+p->huaxue);
		}
	}
	int ListInsert(LinkList*&L,int id,int math,int english,int chinese,int physics,int chemistry)//直接尾部插入元素
	{LinkList *p=L, *s;
	if (p==NULL)//未找到第i-1个结点
		return 0;
	else
	{
		s=(LinkList *)malloc(sizeof(LinkList));//创建新结点*s
		s->shuxue=math;
		s->yingyu=english;
		s->yuwen=chinese;
		s->wuli=physics;
		s->huaxue=chemistry;
		s->next=p->next;
		p->next=s;//将*s插入到*p之后
		return 1;
	}
}
	int Search(LinkList *L, ElemType e)//搜索元素
	{
		LinkList *p=L->next;
		int n=1;
		while (p!=NULL&&p->id!=e)
		{
			p=p->next;
			n++;
		}
		if(p==NULL)
			return(0);
		else
			return(n);
	}
	int ListDelete(LinkList *L,ElemType e)//删除数据元素
	{
		int j=0;
		LinkList *p=L, *q;
		while(j<e-1&&p!=NULL)
		{
			j++;
			p=p->next;
		}
		if(p==NULL)//未找到第i-1个结点
			return 0;
		else
		{
			q=p->next;//q指向要删除的结点
			if(q==NULL)
				return 0;
			p->next=q->next;//从单链表中删除*q结点
			free(q);//释放*q结点
			return 1;
		}
	}
	int check(int a)//检测是否为数字
	{
		if(a>0&&a<100000)
			return 0;
		else
			getchar();//清除缓冲区的内容
			return 1;
	}
	void DestroyList(LinkList *&L)//销毁单链表
	{
		LinkList *p=L,*q=p->next;
		while (q!=NULL)
		{
			free(p);
			p=q;
			q=p->next;
		}
		free(p);
	}
	void mian()//主函数入口
	{
		printf("\t***欢迎使用学生成绩管理系统***\n");
		LinkList *h;
		int e,i;
		int id,math,english,chinese,physics,chemistry;
		InitList(h);
ex1:printf("------------------------------\n");
	printf("\n\t *1录入成绩
			\n\t *2浏览所有人成绩
			\n\t *3根据学号查询成绩
			\n\t *4删除学生成绩
			\n\t *5退出程序\n")
	printf("请选择要进行的操作(填入序号<1-5>):");
	scanf("%d",&i);
	if(check(i))//check函数的调用
	{
		printf("输入错误值,请重新选择!\n");
		goto ex1;
	}
	printf("------------------------------\n");
	switch(i)
	{
case 1:  //录入
ex2:	printf("请输入学号")
ex3:	scanf("%d",&id);
	
	if(check(id)||search(h,id)!=0)
	{
		printf("当前输入学号已存在或输入的成绩中包含错误\n");
		printf("请重新输入学号");
		goto ex3;
	}
	printf("请输入成绩(每门成绩请用空格或回车隔开):\n数学 英语 语文 物理 化学\n");
ex4:scanf("%d%d%d%d%d",&math,&english,&chinese,&physics,&chemistry);
	if(check(math)||check(english)||check(chinese)||check(physics)||check(chemistry))//check函数的调用
	{
		printf("输入的成绩中包含错误值;\n");
		printf("请重新输入成绩(每门成绩请用空格或者回车隔开):\n 数学 英语 语文 物理 化学\n");
		goto ex4;
	}
	printf("确定输入录入!(1-是/其他数字-否):");
	scanf("%d",&i);
	if(i==1)
	{if(ListInsert(h,id,math,english,chinese,physics,chemistry)==1)
		{
		printf("录入成绩成功!");
		}
	}
	else
	{
		printf("录入成绩失败!");
		goto ex2;
	}
	goto ex1;
case 2://浏览
	DispList(h);
	goto ex1;
case 3://查找
ex5:	printf("请输入查询的学号:");
		scanf("%d",&e);
		if(check(id)==1||search(h,id)==0)
		{
			printf("当前输入学号不存在或输入错误信息\n");
			printf("请重新输入学号:");
			scanf("%e",&math);
			goto ex5;
		}
		Locate Elem(h,e);
		goto ex1;
case4://删除
ex6:	printf("请输入要删除的学号:");
		scanf("%d",&e);
		if(check(id)==1||search(h,id)==0);
		{
			printf("请重新输入学号:");
			goto ex6;
		}
		if(ListDelete(h,search(h,e))==1)
		{
			printf("删除成功!\n");
		}
		else
		{
			printf("删除失败!\n");
		}
		goto ex1;
	case 5:
		DestoryList(h);
		break;
		default;
			goto ex1;
	}
}
 楼主| fqh666 发表于 2024-1-9 00:52
fqh666 发表于 2024-1-9 00:49
[mw_shl_code=c,true]#include "stdafx.h"
#include
#include

手机排版稍微有点乱
陌上雨蓝 发表于 2024-1-9 08:18
fqh666 发表于 2024-1-9 00:52
手机排版稍微有点乱

大佬6啊!!
璐璐诺 发表于 2024-1-9 09:03
会用gpt也不至于这样
 楼主| fqh666 发表于 2024-1-9 11:09
璐璐诺 发表于 2024-1-9 09:03
会用gpt也不至于这样

有什么好的推荐吗,国内的大部分稀烂
 楼主| fqh666 发表于 2024-1-9 22:22
本帖最后由 fqh666 于 2024-1-9 22:34 编辑

[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    int id;
    int shuxue;
    int yingyu;
    int yuwen;
    int wuli;
    int huaxue;
    struct node *next;
} LinkList;

// 初始化单链表
void InitList(LinkList *&L)
{
    L = (LinkList *)malloc(sizeof(LinkList));
    L->next = NULL; // 创建头结点,其next域置为NULL
}

// 输出单链表
void DispList(LinkList *L)
{
    LinkList *p = L->next;
    printf("<<<<<<<所有学生成绩>>>>>>>\n");
    if (p == NULL)
    {
        printf("无学生数据!\n");
    }
    else
    {
        printf("学号\t数学\t英语\t语文\t物理\t化学\t总分\n");
        while (p != NULL)
        {
            printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n", p->id,
                   p->shuxue, p->yingyu, p->yuwen, p->wuli, p->huaxue, p->shuxue + p->yingyu + p->yuwen + p->wuli + p->huaxue);
            p = p->next;
        }
    }
}

// 直接尾部插入元素
int ListInsert(LinkList *&L, int id, int math, int english, int chinese, int physics, int chemistry)
{
    LinkList *p = L, *s;
    if (p == NULL) // 未找到第i-1个结点
        return 0;
    else
    {
        s = (LinkList *)malloc(sizeof(LinkList)); // 创建新结点*s
        s->id = id;
        s->shuxue = math;
        s->yingyu = english;
        s->yuwen = chinese;
        s->wuli = physics;
        s->huaxue = chemistry;
        s->next = p->next;
        p->next = s; // 将*s插入到*p之后
        return 1;
    }
}

// 搜索元素
int Search(LinkList *L, int e)
{
    LinkList *p = L->next;
    int n = 1;
    while (p != NULL && p->id != e)
    {
        p = p->next;
        n++;
    }
    if (p == NULL)
        return 0;
    else
        return n;
}

// 删除数据元素
int ListDelete(LinkList *L, int e)
{
    int j = 1; // 将j的初始值改为1
    LinkList *p = L, *q;
    while (j < e && p != NULL) // 修改循环条件
    {
        j++;
        p = p->next;
    }
    if (p == NULL) // 未找到第i-1个结点
        return 0;
    else
    {
        q = p->next;            // q指向要删除的结点
        if (q == NULL)
            return 0;
        p->next = q->next;      // 从单链表中删除*q结点
        free(q);                // 释放*q结点
        return 1;
    }
}

// 检测是否为数字
int check(int a)
{
    if (a > 0 && a < 100000)
        return 0;
    else
    {
        getchar(); // 清除缓冲区的内容
        return 1;
    }
}

// 销毁单链表
void DestroyList(LinkList *&L)
{
    LinkList *p = L, *q = p->next;
    while (q != NULL)
    {
        free(p);
        p = q;
        q = p->next;
    }
    free(p);
}

// 根据学号查询成绩
void LocateElem(LinkList *L, int e)
{
    LinkList *p = L->next;
    while (p != NULL && p->id != e)
    {
        p = p->next;
    }
    if (p == NULL)
    {
        printf("未找到该学号的成绩!\n");
    }
    else
    {
        printf("学号\t数学\t英语\t语文\t物理\t化学\t总分\n");
        printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n", p->id,
               p->shuxue, p->yingyu, p->yuwen, p->wuli, p->huaxue, p->shuxue + p->yingyu + p->yuwen + p->wuli + p->huaxue);
    }
}

// 主函数入口
int main()
{
    printf("\t***欢迎使用学生成绩管理系统***\n");
    LinkList *h;
    int e, i;
    int id, math, english, chinese, physics, chemistry;
    InitList(h);

ex1:
    printf("------------------------------------------------------------\n");
    printf("\n\t *1录入成绩\n\t *2浏览所有人成绩\n\t *3根据学号查询成绩\n\t *4删除学生成绩\n\t *5退出程序\n");
    printf("请选择要进行的操作(填入序号<1-5>): ");
    scanf("%d", &i);

    if (check(i)) // check函数的调用
    {
        printf("输入错误值,请重新选择!\n");
        goto ex1;
    }
    printf("------------------------------------------------------------\n");

    switch (i)
    {
    case 1: // 录入
    ex2:
        printf("请输入学号:");
    ex3:
        if (scanf("%d", &id) != 1) // 添加判断,检查输入是否为数字
        {
            printf("输入错误,请重新输入数字学号!\n");
            while (getchar() != '\n') // 清空输入缓冲区
                continue;
            goto ex3;
        }

        if (check(id) || Search(h, id) != 0)
        {
            printf("当前输入学号已存在或输入的成绩中包含错误\n");
            printf("请重新输入学号:");
            goto ex3;
        }

        printf("请输入成绩(每门成绩请用空格或回车隔开):\n数学 英语 语文 物理 化学\n");
    ex4:
        if (scanf("%d %d %d %d %d", &math, &english, &chinese, &physics, &chemistry) != 5) // 添加判断,检查输入是否为数字
        {
            printf("输入错误,请重新输入数字成绩!\n");
            while (getchar() != '\n') // 清空输入缓冲区
                continue;
            goto ex4;
        }

        if (check(math) || check(english) || check(chinese) || check(physics) || check(chemistry)) // check函数的调用
        {
            printf("输入的成绩中包含错误值;\n");
            printf("请重新输入成绩(每门成绩请用空格或者回车隔开):\n数学 英语 语文 物理 化学\n");
            goto ex4;
        }

        printf("确定输入录入!(1-是/其他数字-否):");
        scanf("%d", &i);

        if (i == 1)
        {
            if (ListInsert(h, id, math, english, chinese, physics, chemistry) == 1)
            {
                printf("录入成绩成功!\n");
            }
        }
        else
        {
            printf("录入成绩失败!\n");
            goto ex2;
        }
        goto ex1;

    case 2: // 浏览
        DispList(h);
        goto ex1;

    case 3: // 查找
    ex5:
        printf("请输入查询的学号:");
        if (scanf("%d", &e) != 1) // 添加判断,检查输入是否为数字
        {
            printf("输入错误,请重新输入数字学号!\n");
            while (getchar() != '\n') // 清空输入缓冲区
                continue;
            goto ex5;
        }

        if (check(id) == 1 || Search(h, id) == 0)
        {
            printf("当前输入学号不存在或输入错误信息\n");
            printf("请重新输入学号:");
            scanf("%d", &e);
            goto ex5;
        }

        LocateElem(h, e);
        goto ex1;

    case 4: // 删除
    ex6:
        printf("请输入要删除的学号:");
        if (scanf("%d", &e) != 1) // 添加判断,检查输入是否为数字
        {
            printf("输入错误,请重新输入数字学号!\n");
            while (getchar() != '\n') // 清空输入缓冲区
                continue;
            goto ex6;
        }

        if (check(id) == 1 || Search(h, id) == 0)
        {
            printf("请重新输入学号:");
            goto ex6;
        }

        if (ListDelete(h, e) == 1) // 修改此处的函数调用
        {
            printf("删除成功!\n");
        }
        else
        {
            printf("删除失败!\n");
        }
        goto ex1;

    case 5:
        DestroyList(h);
        return 0;

    default:
        goto ex1;
    }
}
 楼主| fqh666 发表于 2024-1-9 22:23
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100

typedef char ElemType;

typedef struct
{
    ElemType data[MAXSIZE];
    int top;
} Sqstack;

void InitStack(Sqstack *&s)
{
    s = (Sqstack *)malloc(sizeof(Sqstack));
    s->top = -1;
}

void DestroyStack(Sqstack *&s)
{
    free(s);
}

bool StackEmpty(Sqstack *s)
{
    return (s->top == -1);
}

bool Push(Sqstack *&s, ElemType e)
{
    if (s->top == MAXSIZE - 1)
        return false;
    s->top++;
    s->data[s->top] = e;
    return true;
}

bool Pop(Sqstack *&s, ElemType &e)
{
    if (s->top == -1)
        return false;
    e = s->data[s->top];
    s->top--;
    return true;
}

bool GetTop(Sqstack *s, ElemType &e)
{
    if (s->top == -1)
        return false;
    e = s->data[s->top];
    return true;
}

bool Match(char exp[], int n)
{
    Sqstack *Ls;
    InitStack(Ls);
    int i = 0;
    ElemType e;
    bool flag = true;
    while (i < n && flag)
    {
        if (exp[i] == '[' || exp[i] == '{')
            Push(Ls, exp[i]);
        else if (exp[i] == ')')
        {
            if (GetTop(Ls, e))
            {
                if (e == '(')
                    Pop(Ls, e);
                else
                    flag = false;
            }
            else
                flag = false;
        }
        else if (exp[i] == '}')
        {
            if (GetTop(Ls, e))
            {
                if (e == '{')
                    Pop(Ls, e);
                else
                    flag = false;
            }
            else
                flag = false;
        }
        i++;
    }
    if (!StackEmpty(Ls))
        flag = false;
    DestroyStack(Ls);
    return flag;
}

int main()
{
    char exp[100];
    printf("please input a string: ");
    gets(exp);
    if (Match(exp, strlen(exp)))
        printf("表达式 %s 括号匹配\n", exp);
    else
        printf("表达式 %s 括号不匹配\n", exp);
    return 0;
}
 楼主| fqh666 发表于 2024-1-9 22:41
后面就没管头文件了,就正常写了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表