下面是我写的一个程序,目的是从键盘输入学生的名字(name)和分数(score)
然后输出。
例:
input
zhang san
89
li si
96
over
output
The score of zhang san is 89
The score of li si is 96
但是,程序运行之后,却输出了四行。急待解决!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct student
{
char name[20];
int score;
struct student *next;
};
main()
{
char str[20];
int s;
struct student *head,*q,*p;
p=(struct student *)malloc(sizeof(struct student));
gets(str);scanf(“%d”,&s);
strcpy(p->name,str);p->score=s;/*从键盘输入值,并赋值*/
head=p;
while(1)
{
q=(struct student *)malloc(sizeof(struct student));
gets(str);
if(!strcmp(str,”over”))
{free(q);break;}/*判断如果输入的是over 则退出循环,并且释放内存空间*/
scanf(“%d”,&s);
strcpy(q->name,str);q->score=s;
p->next=q;
p=q;
}
p->next=’\0′;
while(head)
{
printf(“The score of %s is %d\n”,head->name,head->score);
head=head->next;
}
}
>> 本文固定链接: http://www.vcgood.com/archives/3158
怎么没有人来回帖啊,难道问题太难了???