如何通过以结构数组作为参数的此函数返回正确的值?

曼尼斯吉里

我正在学习StructuresC语言,并尝试编写此问题的解决方案-

创建一个结构来指定以下给定学生的数据:卷号,姓名,系,课程,入学年份。

假设班上学生人数不超过5。(a)编写一个函数,以打印特定年份加入的所有学生的姓名。(b)编写函数以打印给出了卷号的学生的数据。

接下来给出我的代码,并简要描述程序中的各个组件,然后再给出问题的根源-

#include<stdio.h>
struct student
{
    int roll_no;
    char name[20];
    char department[30];
    char course[20];
    int year_joined;
};

void main()
{
    struct student s[5];
    int i=0,choice;

    printf("\n Enter the following information for each student: \n");
    printf("\n Roll No., Name, Department, Course, Year of Joining\n");
    for(i=0;i<=4;i++)
    scanf("%d %s %s %s %d", &s[i].roll_no, &s[i].name, &s[i].department, &s[i].course, &s[i].year_joined);



    printf("\n Please choose from the following options :\n");
    printf("\n 1. Print names of students who joined in a given year.");
    printf("\n 2. Print data of all students whose roll.no is given.");
    scanf("%d",&choice);
    switch(choice)
    {
        case 1: display_names(s);
                break;
        case 2: student_data(s);
                break;

        default: printf("\n Incorrect choice, please try again.");      
    }


}

void display_names(struct student p[])
{
    int i,count=0;
    int year;
    printf("\n Enter the year you wish to search student info. for : \n");
    scanf("%d",&year);
    for(i=0;i<=4;i++)
    {
        if(p[i].year_joined==year)
        {

    //printf("%d %s %s %s %d", p[i].roll_no, p[i].name, p[i].department, p[i].course, p[i]. year_joined);
    count++;
    printf("\n Student Name: %s\n", p[i].name);
        }

    }
    printf("\n Total Number of students who joined in the year %d is %d\n", year,count);
    if(count==0)
    printf("\n No match found.");
}


void student_data(struct student st[])
{   
    int i,count=0;
    int roll;
    printf("\n Enter roll number of the student: \n");
    scanf("%d",&roll);
    for(i=0;i<=4;i++)
    {
        if(st[i].roll_no=roll)
        {
            count++;
            printf("\n Student Data: Roll No. Name Department Course Year of Joining \n");
            printf("\n %d    %s    %s      %s %d", st[i].roll_no, st[i].name, st[i].department, st[i].course,st[i].year_joined);
            break;


        }
    }

    if(count==0)
    printf("\n No matching Roll Numbers found\n");
}

这是该程序的简要说明-

  1. 由于需要将有关多个学生的信息存储在结构中,因此我创建了一个结构数组。结构struct student是在最开始就定义的,而数组是在main-struct student s[5]
  2. 通过scanf()内部接受用户输入来初始化该结构main()switch两个功能有两种情况,请在问题中提出:display_names(s) and student_data(s)
  3. display_names(s)函数在main中调用,并在其外部定义。该函数接受astructure array并要求用户输入年份。它遍历初始化数组并搜索用户输入的输入(加入年份)。进行比赛时,它会打印出当年加入的所有学生的姓名。这是此功能的示例输出-

*

**Enter the following information for each student:
 Roll No., Name, Department, Course, Year of Joining
10 Tim CS MS 2013
20 Shane CS MS 2013
30 John EE ME 2013
40 Mark MECH MS 2013
50 Matt EE ME 2010
 Please choose from the following options :
 1. Print names of students who joined in a given year.
 2. Print data of all students whose roll.no is given.1
 Enter the year you wish to search student info. for :
2013
 Student Name: Tim
 Student Name: Shane
 Student Name: John
 Student Name: Mark
 Total Number of students who joined in the year 2013 is 4**

*

此功能工作正常。

问题出在下一个函数中student_data()与第一个函数类似,它接受结构数组作为输入。我设计该函数的方式-想法是循环遍历数组,直到找到等于用户输入的滚动号为止。如果有比赛,它将打印出该特定学生本身的详细信息。但是,就目前情况而言,此函数始终会打印数组中的第一个条目,我似乎无法理解为什么。我已经添加了breakif statement,但它似乎没有任何区别。

这是一个示例输出-


Enter the following information for each student:
 Roll No., Name, Department, Course, Year of Joining
10 Tim CS MS 2013
20 Shane CS MS 2013
30 John EE ME 2013
40 Mark MECH MS 2013
50 Matt EE ME 2010
 Please choose from the following options :
 1. Print names of students who joined in a given year.
 2. Print data of all students whose roll.no is given.2
 Enter roll number of the student:
40
 Student Data: Roll No. Name Department Course Year of Joining
 40    Tim    CS      MS 2013

能否请您说出我在第二个功能中出了什么问题?

卡尔

您的student_data()中的if语句是分配而不是比较。

考虑使用-Wall(或特别是-Wparentheses)标志进行编译:

#include <stdio.h>

int main( void )
{
  int a = 10;
  if ( a = 11 ) printf( "a equals 11\n" );
  return 0;
}

使用-Wall:

$ gcc main.c -Wall
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
  if ( a = 11 ) printf( "a equals 11\n" );
$

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rust如何将结构作为函数参数和返回值处理?

来自分类Dev

如何使用数组值作为函数参数

来自分类Dev

如何正确定义以numpy数组作为参数和返回类型的函数?

来自分类Dev

正确的值作为函数参数,正确用法?

来自分类Dev

如何为结构,结构内部的结构数组正确分配内存,以及如何将该数组作为参数传递

来自分类Dev

如何在函数中将值作为参数返回

来自分类Dev

从函数返回数组作为参数时,为什么从函数数组中获取随机值?

来自分类Dev

如何使递归 fib 函数通过记忆返回正确的值

来自分类Dev

如何通过函数参数返回动态数组?

来自分类Dev

如何通过函数参数返回动态数组?

来自分类Dev

如何通过函数注释指示函数期望函数作为参数或返回函数?

来自分类Dev

如何通过函数注释指示函数期望函数作为参数或返回函数?

来自分类Dev

如何在 sclang 中使用数组值作为函数参数(在通过 OSC 发送大量浮点数的情况下)

来自分类Dev

C-返回数组作为函数参数

来自分类Dev

如何将结构 * 作为函数的参数

来自分类Dev

此递归函数如何返回正确答案?

来自分类Dev

如何正确地将类成员数组作为返回参数返回

来自分类Dev

如何将结构作为参数传递给Java函数或如何从jni返回到Java

来自分类Dev

如何将结构作为参数传递给Java函数或如何从jni返回到Java

来自分类Dev

从以const范围作为参数的函数返回的值

来自分类Dev

如何通过INT ID从PostgreSQL函数返回值数组

来自分类Dev

如何通过结构图将父/子类作为构造函数参数传递?

来自分类Dev

如何将嵌套的结构数组作为参数传递给函数?

来自分类Dev

函数不返回正确数组的值

来自分类Dev

通过参数更改函数的返回值

来自分类Dev

如何声明一个具有包含数组的结构的函数作为参数的函数,该数组的大小由argv确定。

来自分类Dev

如何在Swift中传递参数未知且返回值作为参数的函数

来自分类Dev

如何通过JRuby将Java char数组作为参数正确传递给Ruby脚本?

来自分类Dev

如何通过引用函数传递结构数组?

Related 相关文章

  1. 1

    Rust如何将结构作为函数参数和返回值处理?

  2. 2

    如何使用数组值作为函数参数

  3. 3

    如何正确定义以numpy数组作为参数和返回类型的函数?

  4. 4

    正确的值作为函数参数,正确用法?

  5. 5

    如何为结构,结构内部的结构数组正确分配内存,以及如何将该数组作为参数传递

  6. 6

    如何在函数中将值作为参数返回

  7. 7

    从函数返回数组作为参数时,为什么从函数数组中获取随机值?

  8. 8

    如何使递归 fib 函数通过记忆返回正确的值

  9. 9

    如何通过函数参数返回动态数组?

  10. 10

    如何通过函数参数返回动态数组?

  11. 11

    如何通过函数注释指示函数期望函数作为参数或返回函数?

  12. 12

    如何通过函数注释指示函数期望函数作为参数或返回函数?

  13. 13

    如何在 sclang 中使用数组值作为函数参数(在通过 OSC 发送大量浮点数的情况下)

  14. 14

    C-返回数组作为函数参数

  15. 15

    如何将结构 * 作为函数的参数

  16. 16

    此递归函数如何返回正确答案?

  17. 17

    如何正确地将类成员数组作为返回参数返回

  18. 18

    如何将结构作为参数传递给Java函数或如何从jni返回到Java

  19. 19

    如何将结构作为参数传递给Java函数或如何从jni返回到Java

  20. 20

    从以const范围作为参数的函数返回的值

  21. 21

    如何通过INT ID从PostgreSQL函数返回值数组

  22. 22

    如何通过结构图将父/子类作为构造函数参数传递?

  23. 23

    如何将嵌套的结构数组作为参数传递给函数?

  24. 24

    函数不返回正确数组的值

  25. 25

    通过参数更改函数的返回值

  26. 26

    如何声明一个具有包含数组的结构的函数作为参数的函数,该数组的大小由argv确定。

  27. 27

    如何在Swift中传递参数未知且返回值作为参数的函数

  28. 28

    如何通过JRuby将Java char数组作为参数正确传递给Ruby脚本?

  29. 29

    如何通过引用函数传递结构数组?

热门标签

归档