一、题目要求题目名称:数字的组成及删除指定位置的字符,工资统计的设计内容:1、编程:用0—9之间不同的三个数字构成一个三位数,统计有多少个这样的三位数。
2、规定输出的字符串中只能包含字母和*号,编写函数fun(char*a,int n),其功能是:是字符串前边连续的*号不多于n个;若多于n个,则删除多于的*号,若小于或等于n个,则什么也不做。
例如:若输入字符串为******A*BC*DEF*G***,n的值为4,则删除后的字符串应是:****A*BC*DEF*G***3、工资统计程序设计设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资有公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能:(4)输入职工数据,其中“实付工资”通过计算得到(5)显示全部职工数据(6)输入其部门值、显示该部门职工的数据,工资总额,平均工资设计菜单,通过选择菜单调用以上函数。
要求:使用C语言完成上述程序的设计、编程和调试,开发环境可采用Turbo C 2.0、WinTC或Visual C++ 6.0等。
3、3、工资统计程序设计设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资有公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能:(7)输入职工数据,其中“实付工资”通过计算得到(8)显示全部职工数据(9)输入其部门值、显示该部门职工的数据,工资总额,平均工资设计菜单,通过选择菜单调用以上函数。
1、每个函数的功能:(1)void input();录入:输入职工数据,其中"实付工资"通过计算得到(2)void del();)删除:删除指定的职工信息(输入姓名,若找到则删除该信息(3)void mod();修改:允许对已经录入的数据重新进行编辑、修改(4)void show_all();显示:显示全体职工数据;(5)void show_name();查询:a. 输入职工姓名,显示该职工的全部数据b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6)void show_dep();退出程序三、编程实现程序的具体C语言代码如下:第1题:}#include<stdio.h>void main(){int i,j,k,count=0;for (i=1;i<=9;i++){for (j=0;j<=9;j++){for(k=1;k<=9;k++){if(i!=j && j!=k && i!=k){printf("%3d%d%d",i,j,k);count++;}}}}printf("种数构成方法:");printf("%d",count);}第2题:#include <stdio.h>int fun(char*s,int n){int flag=1;for(int i=0;i<n;i++)//比较前n个字符是否为*if(s[i]!='*'){flag=0;break;}if(flag==0)return 0;else{int k=n;while(s[k]!='\0')//移动到非*字符{if(s[k]=='*')k++;elsebreak;}int j=0;while(s[k]!='\0')//向前复制{s[n+j]=s[k];k++;j++;}s[n+j]='\0';}return 1;}void main(){static char str[15];int m;printf("请输入一个只含*和字母的字符串:"); scanf("%s",str);printf("请输入n值:");scanf("%d",&m);fun(str,m);printf("%s",str);}第3题:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<cassert.h>/*编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资由公式计算得到:实付工资=应付工资- 保险- 税金*/struct employee{Sting m_num;//编号Sting m_name;//姓名Sting m_dep;//部门double m_salary;//应付工资double m_insurance;//保险double m_tax;//税金};/*(1)录入:输入职工数据,其中"实付工资"通过计算得到;(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)(3) 修改:允许对已经录入的数据重新进行编辑、修改;(4) 显示:显示全体职工数据;(5)查询:a. 输入职工姓名,显示该职工的全部数据;b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6) 退出程序。
*/list employee emps;int main(int argc, char argv[]){void print(const employee &e);void input();void del();void mod();void show_all();void show_name();void show_dep();printf("请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"); int choose=0;scanf("%d",&choose);assert(!cin.fail());while (choose!=6){if (choose==1) input();if (choose==2) del();if (choose==3) mod();if (choose==4){int choice=0;printf("请选择操作1.按姓名查询2.按部门查询3.退出:");scanf("%d",choice);if (choice==1) show_name();if (choice==2) show_dep();if (choice==3){printf("请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:");scanf("%d",&choose);assert(!cin.fail());continue;}}if (choose==5) show_all();printf("请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:");scanf("%d",&choose);assert(!cin.fail());}return 0;}void print(const employee &e){printf("编号:");printf("%s\n",e.m_num);printf("姓名:");printf("%s\n",e.m_name);printf("部门:");printf("%s\n",e.m_dep);printf("保险:");printf("%f\n",e.m_insurance);printf("税金:");printf("%f\n",e.m_tax);printf("应付工资:");printf("%f\n",e.m_salary);printf("实付工资:");printf("%f\n",e.m_salary-e.m_insurance-e.m_tax);void input(){string num,name,dep;double salary,ins,tax;printf("请输入员工编号:");scanf("%s",&num);printf("请输入员工姓名:");scanf("%s",&name);printf("请输入员工部门:");scanf("%s",&dep);printf("请输入员工保险");scanf("%f",&ins);assert(!cin.fail());printf("请输入员工税金");scanf("%f",&tax);assert(!cin.fail());printf("请输入员工应付工资:");scanf("%f",&salary);assert(!cin.fail());employee temp;temp.m_dep=dep;temp.m_insurance=ins;temp.m_name=name;temp.m_num=num;temp.m_salary=salary;temp.m_tax=tax;emps.push_back(temp);printf("员工录入操作完毕.");}void del(){if (emps.size()==0){printf("没有员工记录.");return;}char name;bool isfind=false;printf("请输入要删除的员工姓名:");scanf("%s",&name);list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_name==name){isfind=true;emps.erase(iter);printf("姓名为");printf("%s",name);printf("的员工记录已删除");return ;}}if (!isfind){printf("没有找到姓名为");printf("%s",name) printf("的员工.");return;}}void mod(){if (emps.size()==0){printf("员工记录为空.");return;}bool isfind=false;string name;printf("请输入要修改的员工姓名:");scanf("%s",&name);list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_name==name){isfind=true;printf("姓名为");printf("%s",name);printf("的员工记录已找到.\n");break;}}if (isfind){string num,name,dep;double tax,ins,salary;print(*iter);printf("请输入新的员工编号:\n");scanf("%s",&num);printf("请输入新的员工姓名:\n");scanf("%s",&name);printf("请输入新的员工部门:\n");scanf("%s",&dep);printf("请输入新的员工保险::\n");scanf("%f",&ins);assert(!cin.fail());printf("请输入新的员工税金:\n");scanf("%f",&tax);assert(!cin.fail());printf("请输入新的员工工资:\n");scanf("%f",&salary);assert(!cin.fail());iter->m_dep=dep;iter->m_insurance=ins;iter->m_name=name;iter->m_num=num;iter->m_salary=salary;iter->m_tax=tax;printf("1 员工记录被成功修改.\n"); }else{printf("没有找到姓名为");printf("%s",name);printf("的员工记录.\n");}void show_all(){if (emps.size()==0){printf("员工记录为空.\n"); return;}printf("显示全体员工数据:\n");printf("--------------------"\n");list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++) {printf("\n");print(*iter);printf("\n");}printf("--------------------"\n");}void show_name(){if (emps.size()==0){printf("员工记录为空."\n");return;}bool isfind=false;string name;printf("请输入要查询的员工姓名:"\n"); scanf("%s",&name);list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_name==name){isfind=true;printf("姓名为");printf("%s",name);printf("的员工记录已找到.\n");print(*iter);break;}}if (!isfind){printf("没有找到姓名为");printf("%s",name);printf("的员工.\n");return;}}void show_dep(){if (emps.size()==0){printf("没有找到姓名为\n") return;}double isfind=0.00;double total_salary=0.00;string dep;printf("请输入要查询的部门名称:\n");scanf("%s",&dep);//cin>>dep;printf("部门["<<dep<<"]的员工信息:\n");printf("--------------------\n");list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_dep==dep){isfind++;total_salary+=iter->m_salary;print(*iter);printf("\n");continue;}}printf("--------------------\n"); if (isfind==0){printf("没有找到名称为["<<dep<<"]的部门.\n"); }else{printf("部门["<<dep<<"]工资统计:\n");printf("工资总额:");printf("%f\n",total_salary);printf("平均工资:");printf("%f\n",total_salary/isfind);}}四、结果分析第1题:程序运行结果如图1:(可写包括对本题本程序的一些看法或总结)图1 程序运行结果1第2题:程序运行结果如图2:图2 程序运行结果2 第3题:程序运行结果如图3:图3 程序运行结果3五、参考文献[1]马秀丽,刘志妩,李筠.C语言程序设计.北京:清华大学出版社,2008[2]谭浩强.C程序设计(第2版).北京:清华大学出版社,2004[3] 袁志祥、秦锋主编数据结构(c语言版)例题详解与课程设计指导》第二版;中国科学技术大学出版社出版。