无锡高中分数线:我的c语言作业请高手帮忙写写。高分悬赏

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 19:54:44
编写一个函数print,打印一个学生的成绩数组,改组中有n个学生(n的值由键盘输入),每个记录包括 num,name,score[2],用main函数输入这些记录,用print函数输出这些记录.

老师的要求是,只能用链表,结构体作。
怎么还是不能运行啊, 要不就有错误,要不就是结果不对。

#include <stdio.h>
int n;
typedef struct _data
{
int num;
char* name;
int score[2];
}DATA,*DATA;
struct _datalist
{
DATA data;
struct _datalist *pNext;
}*pdl,*pCur;

void print()
{
pCur=pdl;
int count=0;
for(;count<n;count++)
{
printf("num:%d\nname:%s\nscore[0]:%d\nscore[1]:%d",pCur->data.num,pCur->data.name,pCur->data.score[0],pCur->data.score[1]);
pCur=pCur->pNext();
}
}
int main(char* a,char** b)
{
struct _datalist tempdata;
int count=0;
char nm[50];
int s1,s2;
pCur=pdl;
printf("input n:\n");
scanf("%d",&n);
if(n<0)return 0;
for(;count<n;count++)
{
tempdata=malloc(1,sizeof(struct _datalist));
printf("input #%d name:",count+1);
scanf("%s",&nm);
printf("input #%d score[1]:",count+1);
scanf("%d",&s1);
printf("input #%d score[2]:",count+1);
scanf("%d",&s2);
tempdata->data.name=nm;
tempdata->data.num=count+1;
tempdata->data.score[1]=s1;
tempdata->data.score[2]=s2;

pCur=tempdata;
pCur=pCur->pNext;
}

print();
return 0;
}

------------------
实现得不好,但作业,符合要求,能用就可以了呵呵:P,这样实现可以编译可以运行,但是没有释放,没有检测,如果你自己想学好编程的话,就去完善它吧
enjoy it~~

我试过。没有一可个运行的,自己的作业自己做

以下是C语言源程序。其中结构体的设置与楼主的稍有不同,请自行修改,很简单的。

功能说明:可实现链表的创建,插入,删除,将记录写入文本文档,以及打印链表信息。

使用说明:根据操作菜单选项(1——6)选择需要的操作;打印函数print操作数为5。先输入1,根据提示输入相应值。注意当输入学生信息时,其顺序是
name num mark(中间用空格隔开,分数为整型)
测试可运行!!!

#include "stdio.h"
#include "alloc.h"
#define LEN sizeof(node)
#define NULL 0

typedef struct stu
{
char name[20];
int num;
int mark;
struct stu *next;
}node;

/*新建链表*/
node *create_List(int n)
{
int i;
node *head,*tail,*p;
head=tail=(node *)malloc(LEN);
head->num=n; /*链表的头结点存放链表的长度*/
for(i=0;i<n;i++)
{
p=(node *)malloc(LEN);
printf("Please input a group of information:\n");
scanf("%s%d%d",p->name,&p->num,&p->mark);
if(head==NULL)
{
head=tail=p;
printf("This is a NULL list!\n");
}
else
{
tail->next=p;
p->next=NULL;
tail=p;
}
}
return head;
}

/*插入结点*/
node *insert(node *head,int pos,node *q)
{
int i=1;
node *p,*r;
p=head->next; /*从头节点的下一个结点存储数据*/
r=head;
while(i<pos&&p!=NULL)
{
r=p;
p=p->next;
i++;
}
r->next=q;
q->next=p; /*在r与p之间插入新结点*/
head->num+=1; /*插入结点后链表的长度*/
printf("This node is inserted!\n");
return head;
}

/*删除结点*/
node *delete(node *head,int pos)
{
int i=1;
node *p,*r;
p=head->next;
r=head;
while(i<pos&&p!=NULL)
{
if(p==NULL)
printf("This is a NULL List!\n");
else
{
r=p;
p=p->next;
i++;
}
}
r->next=p->next; /*删除其它位置的结点*/
p->next->num--;
free(p);
head->num-=1; /*结点删除后链表的长度*/
printf("This node is deleted!\n");
return head;
}

/*将输入的数据以文本文档的形式保存*/
text_Output(node *head)
{
FILE *fp;
node *p;
p=head->next;
if((fp=fopen("Student.txt","w+"))==NULL)
{
printf("Cannot Open The File!\n");
return 0;
}
do
{
fprintf(fp,"name:%s\t\tnumber:%d\tmark:%d\n",p->name,p->num,p->mark);
p=p->next;
}while(p!=NULL);
fclose(fp);
}

/*显示新链表*/
show(node *head)
{
node *p;
p=head->next;
if(p==NULL)
{
printf("This is a NULL list!\n");
return 0;
}
do
{
if(p->next->num<=p->num) /*将p->num按升序排列*/
{
int t;
p->num++;
t=p->num;
p->num=p->next->num;
p->next->num=t;
}
printf("name:%s\t\tnumber:%d\tmark:%d\n",p->name,p->num,p->mark);
p=p->next;
}while(p!=NULL);
printf("List Length is:%2d",head->num); /*新链表的长度*/
return 1;
}

/*主函数*/
main()
{
int n,i,num,pos;
node *head,*q;
head=NULL;

while(1)
{

printf("************LINK LIST***********\n");
printf("1---Create a Link List \n");
printf("2---Insert a node to Link List \n");
printf("3---Delete a node from Link List\n");
printf("4---Text the Current Link List \n");
printf("5---Print the Current Link List \n");
printf("6---Exit \n");
printf("****Select 1--6 to Operating****\n");
scanf("%d",&i);
if(i<1||i>6) continue;
switch(i)
{
case 1:printf("Please input an array to create list!\n");
printf("Input total number of students: ");
scanf("%d",&n);
head=create_List(n);
break;

case 2:printf("Please input inserted newnode\n");
q=(node *)malloc(LEN);
scanf("%s%d%d%d",q->name,&q->num,&q->mark,&pos);
head=insert(head,pos,q);
break;

case 3:printf("Please input deleted oldnode\n");
scanf("%d",&pos);
head=delete(head,pos);
break;

case 4:text_Output(head);
break;

case 5:show(head);
break;

case 6:exit(1);
}
getch();
}
}

很简单啊,自己多想想

#include <stdio.h>
int n;
typedef struct _data
{
int num;
char* name;
int score[2];
}DATA,*DATA;
struct _datalist
{
DATA data;
struct _datalist *pNext;
}*pdl,*pCur;

void print()
{
pCur=pdl;
int count=0;
for(;count<n;count++)
{
printf("num:%d\nname:%s\nscore[0]:%d\nscore[1]:%d",pCur->data.num,pCur->data.name,pCur->data.score[0],pCur->data.score[1]);
pCur=pCur->pNext();
}
}
int main(char* a,char** b)
{
struct _datalist tempdata;
int count=0;
char nm[50];
int s1,s2;
pCur=pdl;
printf("input n:\n");
scanf("%d",&n);
if(n<0)return 0;
for(;count<n;count++)
{
tempdata=malloc(1,sizeof(struct _datalist));
printf("input #%d name:",count+1);
scanf("%s",&nm);
printf("input #%d score[1]:",count+1);
scanf("%d",&s1);
printf("input #%d score[2]:",count+1);
scanf("%d",&s2);
tempdata->data.name=nm;
tempdata->data.num=count+1;
tempdata->data.score[1]=s1;
tempdata->data.score[2]=s2;

pCur=tempdata;
pCur=pCur->pNext;
}

print();
return 0;
}

链接,结构体。烦啊这两种东西。
你去数据结构书中抄啊。