#include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char xm[20]; char xb; int cj; struct node *next; }; struct node * create(int n) { struct node *head,*p; head=(struct node*)malloc(sizeof (struct node)); head->next=NULL;int i; for(i=0;i<n;i++) { p=(struct node*) malloc (sizeof (struct node)); scanf("%s,%c,%d",p->xm,&p->xb,&p->cj); p->next=head->next;head->next=p; } p->next=NULL; return (head); } int main() { int n;scanf("%d\n",&n); struct node *pr; pr=create(n); print(pr); while(pr->next!=NULL) { if(pr->xm[0]=='z'&&pr->xm[1]=='h'&&pr->xm[2]=='a'&&pr->xm[3]=='n'&&pr->xm[4]=='g'&&pr->cj>=90) { printf("%s,%c,%d",pr->xm,pr->xb,pr->cj); } pr=pr->next; } return 0; } void print(struct node *head) { struct node *tem; tem=head; while(tem!=NULL) { printf("%s,%c,%d",tem->xm,tem->xb,tem->cj); tem=tem->next; } }
时间: 2024-03-09 12:45:10 浏览: 102
这段代码存在一些问题,例如:
1. `print`函数没有在程序之前声明,需要加上函数声明。
2. `print`函数中的`printf`语句没有换行符,需要加上换行符。
3. `main`函数中的`print`函数调用没有加上参数,需要传入链表头节点。
4. `print`函数和`main`函数中的`printf`语句格式不一致,需要保持一致。
5. `print`函数和`main`函数中的`scanf`函数格式不一致,需要保持一致。
6. `create`函数中的`p->next`应该指向`head->next`,而不是`head`本身。
以下是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node {
char xm[20];
char xb;
int cj;
struct node* next;
};
void print(struct node* head);
struct node* create(int n) {
struct node* head, * p;
head = (struct node*)malloc(sizeof(struct node));
head->next = NULL;
int i;
for (i = 0; i < n; i++) {
p = (struct node*)malloc(sizeof(struct node));
scanf("%s %c %d", p->xm, &p->xb, &p->cj);
p->next = head->next;
head->next = p;
}
return head;
}
int main() {
int n;
scanf("%d", &n);
struct node* pr;
pr = create(n);
print(pr->next);
while (pr->next != NULL) {
if (strcmp(pr->xm, "zhang") == 0 && pr->cj >= 90) {
printf("%s %c %d\n", pr->xm, pr->xb, pr->cj);
}
pr = pr->next;
}
return 0;
}
void print(struct node* head) {
struct node* tem;
tem = head;
while (tem != NULL) {
printf("%s %c %d\n", tem->xm, tem->xb, tem->cj);
tem = tem->next;
}
}
```
修改后的程序中,`print`函数在程序之前进行了声明,函数中的`printf`语句加上了换行符。`main`函数中调用`print`函数时传入了链表的第一个节点。
将`create`函数中的`p->next`指向了`head->next`,保证了新节点插入到链表头部。
在`main`函数中,将字符串`"zhang"`与姓名进行比较时,使用了`strcmp`函数来比较字符串。
最后,所有的`printf`语句都保持了一致的格式。
阅读全文