不知道哪里错了
希望有大家帮帮忙 大一刚学😥
不知道说什么了,说字数不够,好了,我只能乱说说凑字数了
大家帮帮忙谢谢!
要看你完整的代码,函数名都有波浪线,我怀疑你把函数写在另一个函数里面了,或者之前多了或者少了一个花括号。
.
// An highlighted block
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
Lnode *next;
int ID;
int code;
}Lnode,*LinkList;
void creat_list(int n,int m,LinkList &a,LinkList &r){
Lnode *p=a,*q;
p->ID=1;
int num;
scanf("%d",&num);
p->code=num ;
for(int i=2;i<=n;i++){
scanf("%d",&num);
q=(Lnode*)malloc(sizeof(Lnode));
q->ID=i;
q->code=num;
p->next=q;
p=p->next;
if(i==n){
q->next=a;
r=q;
}
}
}
void out(LinkList &a,int &m,LinkList &r){
Lnode *q=a,*p=r;
if(a->next!=a){
for(int i=1;i<m;i++){
p=p->next;
q=q->next;
r=r->next;
}
printf("%d ",q->ID);
m=q->code;
p->next=q->next;
free(q);
out(p->next,m,r);
}
else printf("%d ",a->ID);
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
LinkList a,r;
a=(LinkList)malloc(sizeof(Lnode));
r=(LinkList)malloc(sizeof(Lnode));
creat_list(n,m,a,r);
out(a,m,r);
return 0;
}
修改如下,供参考:
根据提供的代码,可以看出问题出在输入姓名时没有使用fgets函数,而是使用了scanf函数。这会导致输入的姓名后面会带有一个换行符,导致查找不到对应学生信息。应该使用fgets函数来读入姓名,并在读取完姓名后去掉换行符。具体代码如下:
#include <stdio.h>
#include <string.h>
struct student{
char name[50];
int age;
float score;
};
int main()
{
struct student stu[5] = {
{"Tom", 18, 90.0},
{"Jerry", 19, 88.5},
{"Lucy", 20, 95.0},
{"Lily", 18, 91.5},
{"Bob", 19, 89.0}
};
char searchName[50];
printf("Please input the name you want to search: ");
fgets(searchName, 50, stdin);
searchName[strlen(searchName)-1] = '\0'; // 去掉换行符
int i;
for(i=0; i<5; i++){
if(strcmp(searchName, stu[i].name) == 0){
printf("Student %s, age %d, score %.2f\n", stu[i].name, stu[i].age, stu[i].score);
break;
}
}
if(i == 5){
printf("No such student.\n");
}
return 0;
}