任务及代码
/*
*Copyright (c)2016,CSDN学院
*All rights reserved.
*作者:郑杰文
*文件名称:see.c
*完成日期:2016.08.29
*版本号:v1.0
问题描述:(原):输出多个能对齐的数据,(改)制作出多个员工信息并能选择显示某个员工或全体员工的具体信息。
程序输出:嗯。首先所有输出的信息全部对其,能够通过编号选择显示某个员工或全员的信息并输入错误后提示。
*/
#include <stdio.h>
//这个不解释了。调用标准输入输出代码的文件。
#include <string.h>
/*恩。。这个嘛。我没删除,本来是想用str来做字符串和字符串的if判断形式,但是我百度了这个代码看了这个案例以后还是没有完全
搞明白这个代码的用法,终于胡搅蛮缠几个小时候还是放弃了。。我好尴尬。不过当我学到这个代码的时候肯定印象会深刻不少!*/
int main()
//不解释了。
{
int Name,iTname=1,iJname=2,iKname=3,iHname=4,iEver=5;
//这一行是先把编号给定义和赋值,至于要问我问什么用这么长的名字,我只想说,练就一个好习惯。虽然有点麻烦。
char *cTomNname="Tom",*cJackName="Jack",*cKevenName="Keven",*cHarryName="Harry";
/*这一行的变量命名有点长,凑合看一下,给变量保存字符串然后好像是用的指针,直接指向存储这几个名字的地址?(这一行我有点迷糊,是昨天写的代码,当时
在试着用string做判断,所以就这样写了)不过我还不是很熟悉这个指针的用法,慢慢来吧。*/
int iTomAge=36,iJackAge=28,iKevenAge=21,iHarryName=55;
//命名整型变量保存常量,命名还是有点复杂。
float fTomSalary=654.2231,fJackSalary=984.162,fKevenSalara=529.123,fHarrySalara=23167.5649;
//虽然我不知道Salary是什么意思。。(尴尬中!!)但例子肯定是要整数小数各个类型都用上才能熟练嘛。这一行不解释了
char cTomAddr[20]="New York",cJackAddr[20]="Hong Kong",cKevenAddr[20]="Cheng Du",cHarryAddr[20]="Bei Jing";
/*把各个字符串保存到定义的char里。变量名后面的括号是字符串大小的意思,如(Tom是3个字符,但在程序中判断字符串结尾
是要用/0来分割的。所以是4个字符串)然后我都是写的20因为都用不完,懒得一个个算是要用多少字符啦。哈哈。在这里需要
注意的是字符串必须要用(")双引号括起来,不然会出错的,(')单引号是保存字符的,就是一个字符,一个以上的字符都叫
字符串。需要注意*/
printf("想要查询哪位员工的详细资料:\n1.Tom\t2.Jack\t3.Keven\t4.Harry\t5.显示所有员工资料\n请直接输入数字编号!\n");
/*此行为基本输出。然后美化输出后的格式。看起来比较方便也比较好看,每个编号开始前我都加了\t,因为这本是老师作业要求
的最重要部分,主要练习\t的熟练使用,(\t)我的理解是:tab的简写,在输出的时候空上8个空格,*/
scanf("%d",&Name);
//这一步是我最失望的一步,原本是直接输入字符串做判断,结果无奈我没有研究透string的用法,所以又使用了这个算法,
//只能使用简单的数字进行判断。。哎。。
if(Name==iTname)
//做判断,如果用户输入的值完全等于之前定义的变量的值则执行以下代码。
{
printf("Name\tAge\tSalary\tAddr\n");
//练习\t的使用,没什么其他的
printf("%s\t%d\t%3.1f\t%s\n",cTomNname,iTomAge,fTomSalary,cTomAddr);
/*这一行嘛基本上也没有啥,就是各种输出方式(%s、%d、%f)的用法和\t的熟练使用。不过(%3.1f)我还是没有完全搞明白
小数点后面的数字代表显示多少位小数,那小数点前面的数字应该能限制小数点前的位数吧。不知道是不是因为用的float
所以只能限制小数点后的位数。今后用多了应该能明白了吧。*/
printf("\n以上是该员工的详细信息,请查阅!\n\n");
//提示语句。只为了让界面稍微那么人性化一点。
printf("请勿开除Keven,并为他涨工资,这个孩子正在努力学习C语言\n");
//经典调侃语句,用法:当你写代码写嗨了自然能写出来,练习方式:放着嗨歌,写着代码,脑中有逻辑,耳中有嗨歌。
//从而练就一种本领:一人写代码,自己嗨到不行,很少会出现发现问题->解决不了->开始烦躁->陷入死循环这样一个状态
}
if(Name==iJname)
{
printf("Name\tAge\tSalary\tAddr\n");
printf("%s\t%d\t%3.1f\t%s\n",cJackName,iJackAge,fJackSalary,cJackAddr);
printf("\n以上是该员工的详细信息,请查阅!\n\n");
printf("请勿开除Keven,并为他涨工资,这个孩子正在努力学习C语言\n");
}
if(Name==iKevenAge)
{
printf("Name\tAge\tSalary\tAddr\n");
printf("%s\t%d\t%3.1f\t%s\n",cKevenName,iKevenAge,fKevenSalara,cKevenAddr);
printf("\n以上是该员工的详细信息,请查阅!\n\n");
printf("请勿开除Keven,并为他涨工资,这个孩子正在努力学习C语言\n");
}
if(Name==iHarryName)
{
printf("Name\tAge\tSalary\tAddr\n");
printf("%s\t%d\t%3.1f\t%s\n",cHarryName,iHarryName,fHarrySalara,cHarryAddr);
printf("以上是该员工的详细信息,请查阅!\n\n");
printf("请勿开除Keven,并为他涨工资,这个孩子正在努力学习C语言\n");
}
if(Name==iEver)
{
printf("Name\tAge\tSalary\tAddr\n");
printf("%s\t%d\t%5.1f\t%5s\n",cTomNname,iTomAge,fTomSalary,cTomAddr);
printf("%s\t%d\t%5.1f\t%5s\n",cJackName,iJackAge,fJackSalary,cJackAddr);
printf("%s\t%d\t%5.1f\t%5s\n",cKevenName,iKevenAge,fKevenSalara,cKevenAddr);
printf("%s\t%d\t%5.1f\t%5s\n",cHarryName,iHarryName,fHarrySalara,cHarryAddr);
printf("\n以上是所有员工的详细信息,请查阅!\n\n");
printf("请勿开除Keven,并为他涨工资,这个孩子正在努力学习C语言\n");
}
if(Name<1)
//这个在我第一篇博客已经做过介绍了。很简单的判断方式,即输入错误后执行相应语句
{
printf("\t\t编号输入错误请重新输入!\n");
}
if(Name>5)
{
printf("\t\t编号输入错误请重新输入!\n");
}
return 0;
}
输出结果
项目总结
当我看到老师给的原题时我在想为什么要出这样一个题。。。然后几经周折(当然不是你们现在看到的这么简单),试了很多种方法,保存字符串啊,做判断啊,使用新方法做创新啊(虽然是失败了)。哎,其实这个项目我觉得很失败,最大的遗憾在于我不会用string做判断(是查看了用法但是不会。),倒腾了可能好几个小时吧。才勉强用回之前的算法继续进行项目,不过还是不满意。这个项目我对自己的要求是:熟练使用各个数据类型,熟练使用排版即(\t、\n),简单的if判定和养成命名变量的好习惯(驼峰式)。每天都在进步希望自己能够一直坚持下去,仅此发博文的方式更重要是要时刻提醒自己不能放弃。