a.
现有一个班级的学生成绩,要求自定义结构体存储学生信息,学生信息包括学生姓名与学生成绩。然后编写函数完成对指定姓名的学生信息的查找,找到后打印学生信息,函数原型为:
STU * find(STU * aStu, int n, char * aName);
aStu代表数组首元素地址,n代表数组中元素个数,aName代表要查找学生的名字,如果找到则返回该学生的结构体的指针,没有找到返回NULL。
学生数组里面的学生数据信息自己填写,数组长度自定义,不存在重名学生,学生信息结构体如下:
typedef struct student
{
char name[20];
int score;
} STU;
将查找到的学生信息输出,学生信息包括学生姓名、学生成绩,中间使用空格隔开。如果没有找到则打印"没有找到"。
输入示例:
例1 张飞
例2 李逵
输出示例:
例1 张飞 95
例2 没有找到
b.我没办法成功输入学生姓名,所以我直接把定义了一个aName[20],把想找的姓名储存起来(这样就不用从键盘上输入了),但是最后只能打印出学生姓名,分数无法打印,而且会出现乱码
c.
#include <stdio.h>
#include <string.h>
typedef struct student
{
char name[20];
int score;
} STU;
STU * find(STU * aStu, int n, char * aName);
int main (void)
{
/*char Name[20];
scanf("%s",Name);*/
//这里一直不能输入所以我改成了下面这一行
char aName[20]="zhangsan";
STU Stu[3]=
{
{"zhangsan",20},
{"lisi",30},
{"wangwu",40}
};
STU * x=find(Stu,3,aName);
if(x!=NULL)
printf("%s %d",x->name,x->score);
else
printf("没有找到");
}
STU * find(STU * aStu, int n, char * aName)
{
int i;
for(i=0;i<n;i++,aStu++)
{
while(strcmp(aStu->name,aName)==0)
break;
}
printf("%s,%d\n",aStu->name,aStu->score);
if(i<=n)
return aStu;
else
return 0;
}
运行结果是这样的,理想的结果应该是zhangsan 20
用的软件是VS2012
ps:大佬们我是小白,刚开始学,插入代码段的时候不知道哪个是C语言,就选的C++
谢谢泥萌!