萌星滴滴 2021-06-11 17:04 采纳率: 100%
浏览 2704
已采纳

用C语言结构体,输入学生姓名,查找是否有该学生

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++

谢谢泥萌!

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-11 17:42
    关注
    STU * find(STU * aStu, int n, char * aName)
    {
    	int i;
    	for(i=0;i<n;i++,aStu++)
    	{
    		if(strcmp(aStu->name,aName)==0)
    		    break;
    	}
    	if(i<n)
        {
            printf("%s,%d\n",aStu->name,aStu->score);
    		return aStu;
        }
    	else
    		return 0;
    }

    用if,不是用while

    printf也要确定是否aStu找到啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行