C语言数据结构作业求助😢
第一步就遇到了问题,头文件预编译?有模版也抄不明白{:1_937:}
有没有大佬教一下
大学生什么都学,什么都学不会
过几天还要作小答辩{:1_924:}
C语言和没学一样{:1_923:} 第一次发帖,模板发下载链接了:'(weeqw
待会补个图 #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:49
#include "stdafx.h"
#include
#include
手机排版稍微有点乱{:1_924:} fqh666 发表于 2024-1-9 00:52
手机排版稍微有点乱
大佬6啊!! 会用gpt也不至于这样 璐璐诺 发表于 2024-1-9 09:03
会用gpt也不至于这样
有什么好的推荐吗,国内的大部分稀烂 本帖最后由 fqh666 于 2024-1-9 22:34 编辑
#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;
}
} #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
typedef char ElemType;
typedef struct
{
ElemType data;
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 = e;
return true;
}
bool Pop(Sqstack *&s, ElemType &e)
{
if (s->top == -1)
return false;
e = s->data;
s->top--;
return true;
}
bool GetTop(Sqstack *s, ElemType &e)
{
if (s->top == -1)
return false;
e = s->data;
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 == '[' || exp == '{')
Push(Ls, exp);
else if (exp == ')')
{
if (GetTop(Ls, e))
{
if (e == '(')
Pop(Ls, e);
else
flag = false;
}
else
flag = false;
}
else if (exp == '}')
{
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;
printf("please input a string: ");
gets(exp);
if (Match(exp, strlen(exp)))
printf("表达式 %s 括号匹配\n", exp);
else
printf("表达式 %s 括号不匹配\n", exp);
return 0;
} 后面就没管头文件了,就正常写了{:1_924:}
页:
[1]
2