c - 为什么程序不打印第二名员工的姓名?
问题描述
该程序告诉哪个员工的任期等于 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; }
解决方案
从 -'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);
}
推荐阅读
- mysql - Sql存储过程速度问题
- javascript - 使用 Vuetify 缓慢滚动回顶部
- javascript - 在事件 IONIC V1 之后增加 Firebase 子值
- python - 如何使用正则表达式定位文件夹中的文件夹
- java - 更改 JScrollPane 的视图,以便 JEditorPane 的某个部分可见
- android - 使用 webview 在 iframe 中自动播放 youtube 的工作示例?
- vue.js - 为 vuex / nuxtClientInit 创建了钩子?
- amazon-web-services - 授予对具有给定标签的 AWS Lambda 资源的访问权限
- c++ - 从“*”类型的表达式中对“&”类型的引用进行无效初始化
- typescript - 使用 Typescript Generics 从 AngularFire 的定义结构创建接口