首页 > 解决方案 > 为什么程序不打印第二名员工的姓名?

问题描述

该程序告诉哪个员工的任期等于 3 年或超过 3 年。那么为什么程序不打印第二名员工的姓名呢?

代码

#include <stdio.h>
#include <string.h>
int main()
{
 struct employee
 {
    char name[30]; //name of employee
    int emp_code;  // employee code
    int date[10];  // year of joining
 } e,e3;

 struct employee e1 = {"Mr.ABCDEF", 123, 2002};
 struct employee e2 = {"Mr.UVWXYZ", 456, 2004};

 printf ("Enter current date DD MM YYYY: ");
 scanf ("%d %d %d" , &e3.date, &e3.date ,&e.date);

 if ((e.date - e1.date) >= 3)
     printf("Employee Code: %d Name: %s\n", e1.emp_code , e1.name);

 else if ((e.date - e2.date) >= 3)
     printf("Employee Code: %d Name: %s\n", e2.emp_code , e2.name);

 return 0;  }

标签: c

解决方案


从 -'else if' 语句中删除 'else'。
即两个语句都应该在打印前测试长度。

if ((e.date - e1.date) >= 3)
 printf("Employee Code: %d Name: %s\n", e1.emp_code , e1.name);

if ((e.date - e2.date) >= 3)
 printf("Employee Code: %d Name: %s\n", e2.emp_code , e2.name);

尽管这些语句在逻辑和语法上都很好,但通过使用大括号使您的意图明确,可提高可维护性......

 if ((e.date - e1.date) >= 3)
 {
       printf("Employee Code: %d Name: %s\n", e1.emp_code , e1.name);
 }
 if ((e.date - e2.date) >= 3;
 {
        printf("Employee Code: %d Name: %s\n", e2.emp_code , e2.name);
 }

推荐阅读