结构体习题:通过学生学号查询学生信息

Description

有5个学生,每个学生的数据包括:学号(字符数组型)、姓名(字符数组型)、C语言成绩(整型),编写程序先从键盘上输入学生们的数据,再输入一个学生的学号,要求输出该学号对应的学生信息,未找到该学生时输出not found。

Input

输入仅6行,前5行输入5个学生的学号、姓名、C语言成绩,要求数据之间用空格隔开。第6行输入一个学号信息。

Output

输出仅一行,输出学号对应的学生信息或not found (两单词中间有一空格)。

Sample Input

111 yi 89
222 er 87
333 san 98
444 si 90
555 wu 56
333

Sample Output

333 san 98

Source

方法一(结构体+数组):

#include  <stdio.h>

#include   <string.h>

struct test

{

    char  num[20];

    char  name[20];

    int  score;  

};

int  main()

{

    char  keynum[10];

    int  i;

    struct test  stu[5];

    for ( i = 0; i <5; i++)

    {

        scanf("%s%s%d",stu[i].num,stu[i].name,&stu[i].score);

    }

    scanf("%s",keynum);

    for ( i = 0; i <5; i++)

    {

        if (strcmp(keynum,stu[i].num)==0)

        {

            printf("%s %s %d",stu[i].num,stu[i].name,stu[i].score);

            break;

        }

    }

    if (i==5)

    {

       printf("not found\n");

    }

   

    

    return 0;

}

方法二(结构体+指针):

#include   <stdio.h>

#include   <string.h>

struct test

{

    char  num[20];

    char  name[20];

    int  score;

};

int  main()

{

    char  keynum[10];

    struct   test  stu[5];

    struct   test  *p;

    for ( p = stu; p <stu+5; p++)

    {

        scanf("%s%s%d",(*p).num,(*p).name,&(*p).score);

    }

    scanf("%s",keynum);

    for ( p = stu; p <stu+5; p++)

    {

        if (strcmp(keynum,(*p).num)==0)

        {

           printf("%s %s %d",(*p).num,(*p).name,(*p).score);

           break;

        }

    }

    if (p==stu+5)

    {

        printf("not found");

    }

    

    return  0;

}

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当我们在学习C语言的时候,经常会遇到一些关于结构的练习题。下面我就给大家举一个例子,来说明如何使用结构来解决问题。 假设我们要创建一个学生信息管理系统,其中包括学生的姓名、学号和成绩。我们可以使用结构来表示一个学生: ```c struct Student{ char name[20]; int id; float score; }; ``` 现在我们需要编写一个程序,能够输入三个学生信息,并输出他们的平均成绩。我们可以使用循环来实现这个功能: ```c #include <stdio.h> struct Student{ char name[20]; int id; float score; }; int main() { struct Student students[3]; float sum = 0; float average; printf("请输入学生信息:\n"); for (int i = 0; i < 3; i++) { printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入学生学号:"); scanf("%d", &students[i].id); printf("请输入学生成绩:"); scanf("%f", &students[i].score); } for (int i = 0; i < 3; i++) { sum += students[i].score; } average = sum / 3; printf("三个学生的平均成绩为:%f\n", average); return 0; } ``` 以上代码中,我们首先定义了一个结构`struct Student`,用来表示一个学生信息。然后在主函数中,我们声明了一个包含三个元素的`students`数组,用来存储三个学生信息。 接下来,在循环中,我们使用`scanf`函数来依次输入每个学生的姓名、学号和成绩。并使用一个变量`sum`来存储这三个学生的成绩之和。 最后,我们计算出平均成绩,并输出结果。 这就是使用`C`语言的结构来解决问题的一个例子。当我们需要处理多个相关变量的时候,结构可以很好地帮助我们组织数据,并进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值