大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
/*测试方法,你可以把100变为4,10变为2,这样方便测试*/
成都创新互联是一家专业提供寒亭企业网站建设,专注与成都做网站、网站建设、外贸营销网站建设、H5开发、小程序制作等业务。10年已为寒亭众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
#includestdio.h
struct teacher
{
int tno;//教师号
char sname[8];//姓名
float money[10];//工资项
float sum;//工资
}; struct teacher s[100];
void input(struct teacher s[100]);
void money(struct teacher s[100]);
void sort(struct teacher s[100]);
void output(struct teacher s[100]);
void main()
{
input(s);//定义函数输入所有教师的信息及工资信息;
money(s);//定义函数计算各个教师的工资;
sort(s);//定义函数按工资由高到低进行排序;
output(s);//定义函数输出教师的姓名和对应的工资。
}
void input(struct teacher s[100])
{
int i,j;
for(i=0;i100;i++)
{
scanf("%d",s[i].tno);
scanf("%s",s[i].sname);
for(j=0;j10;j++)
{
scanf("%d",s[i].money[j]);
}
}
}
void money(struct teacher s[100])
{
int i,j;
for(i=0;i100;i++)
{
s[i].sum =0;
for(j=0;j10;j++)
{
s[i].sum=s[i].sum +s[i].money[j];
}
}
}
void sort(struct teacher s[100])
{
struct teacher t;
int i,j;
for(i=0;i99;i++)
{
for(j=1;j100;j++)
{
if(s[i].sum s[j].sum )
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
}
}
void output(struct teacher s[100])
{
int i;
for(i=0;i100;i++)
{
printf("教师工号:%d 教师名:%s 工资:%f\n",s[i].tno ,s[i].sname,s[i].sum );
}
}
代码如下:
#include stdio.h
#include assert.h
#include stdlib.h
#define MAX_NAME_LENGTH 11
typedef struct teacher *tea;
struct teacher {
long num; /* 职工号 */
int wkld; /* 工作量 */
char name[MAX_NAME_LENGTH]; /* 姓名 */
tea next; /* 指向下一个节点的指针 */
};
/*
* 复制字符串函数
*/
void my_strncpy(char *str, char const *dest, size_t n) {
assert( dest != NULL );
while ( n-- ) {
*str++ = *dest++;
}
*str ='\0';
}
/*
* 创建节点,使用头插法
*/
static tea create_tea(tea head, long const num,
int const wkld, char const *name) {
tea node;
node = (tea)malloc(sizeof(struct teacher));
if ( node == NULL ) {
perror("Memory");
exit(1);
}
node-num = num;
node-wkld = wkld;
/*
* 若name长度大于 MAX_NAME_LENGTH,
* 则按MAX_NAME_LENGTH-1算,留一个结束符。
*/
my_strncpy(node-name, name,
strlen(name) (MAX_NAME_LENGTH-1) ? (MAX_NAME_LENGTH-1) : strlen(name));
node-next = head;
head = node;
return head;
}
/*
* 查找工作量大于某工作量的节点,打印其职工号工号,姓名和工作量
*/
static void find_wkld(tea head, int const wkld) {
printf("工作量大于%d的教职工如下\n", wkld);
printf("职工号\t姓名\t\t工作量\n");
while ( head != NULL ) {
if ( head-wkld wkld ) {
printf("%ld\t%s\t%d\n", head-num, head-name, head-wkld);
}
head = head-next;
}
}
/*
* delete_tea函数的特殊情况处理
*/
static tea delete_head(tea head, int len) {
tea temp;
do {
temp = head-next;
free(head);
head = temp;
} while ( ( --len ) ( head != NULL ) );
return head;
}
/*
* 从链表的第i个节点开始连删len个节点,
* 若不够len个节点,则从第i个节点开始删到表尾
*/
static tea delete_tea(tea head, int i, int len) {
tea head_buf = head;
tea surplus_head, surplus_end;
/*
* 先将指针指向第i个节点,
* 若链表长度小于i,则不删除任何节点
* 一个特殊情况,如果从第一个节点开始删除
* 则需要特殊处理
*/
assert(head != NULL);
if ( i-- == 1 ) {
return delete_head(head, len);
}
while ( --i ) {
if ( head == NULL ) {
return NULL;
}
head = head-next;
}
/*
* 开始执行删除节点操作
*/
surplus_head = head;
surplus_end = head-next;
while ( len-- ) {
if ( surplus_end == NULL ) {
break;
} else {
head = surplus_end-next;
free(surplus_end);
surplus_end = head;
}
}
/*
* 连接剩余的节点,
* 若节点不够,则surplus_end = NULL。
*/
surplus_head-next = surplus_end;
return head_buf;
}
/*
* 打印教职工信息
*/
static void print_tea(tea head) {
printf("职工号\t姓名\t\t工作量\n");
while ( head != NULL ) {
printf("%ld\t%s\t%d\n", head-num, head-name, head-wkld);
head = head-next;
}
}
/*
* 链表最后应该要释放,养成习惯
*/
static void free_tea(tea head) {
tea temp = head;
assert( head != NULL ); /* 该函数可以去了解一下 */
while ( head != NULL ) {
head = head-next;
free(temp);
temp = head;
}
}
int main(void) {
int n;
int i;
/*
* 初始化信息
*/
long num = 12345;
int wkld = 8;
char name[MAX_NAME_LENGTH] = "Teachaaaaa";
char ch = 'b';
tea head = NULL;
tea temp;
/* 开始 */
printf("请输入要录入的教职工人数: ");
scanf("%d", n);
/*
* 自动录入信息
* 如果要改成数据为手动输入在这里添加代码即可
* 并把原来的这两行注释掉
*/
for ( i = 0; i n; i++) {
head = create_tea(head, num++, wkld++, name);
name[9] = ch++;
}
temp = head;
printf("教职工信息表如下\n");
print_tea(head);
printf("请输入要查找的工作量: ");
scanf("%d", n);
find_wkld(head, n);
printf("请输入要删除的起始节点和结束节点(空格隔开): ");
scanf("%d %d", i, n);
head = delete_tea(head, i, n);
printf("删除之后的教职工信息如下\n");
print_tea(head);
free_tea(head);
return 0;
}
结果:
有疑问可以追问。
有用点采纳,谢谢!
int main()
{
file *p;
char s[6];
fp=fopen("c:\\aa.txt","wb");
printf("\n请输入姓名:");
scanf("%s",s);
fwrite(s,sizeof(char),strlen(s),fp);
fclose(fp);
}
#includestdio.h
#includestring.h
int main()
{
void TestOnLineTeacherManage(); //声明教师信息管理函数
void TestOnLineSelfManage();//声明个人管理函数
int n;
printf(“0教师管理,1个人管理”);
scanf(“%d”,n);
If (n==0)
TestOnLineTeacherManage();
else
TestOnLineSelfManage();//选择教师管理或者个人信息管理
Return 0;
}
Void TestOnLineTeacherManage() //教师信息管理函数
{
Struct TestOnLineTeacher
{
Int Tnum;
Char Tname[20];
Char Tsex;
Char Ttel[20];
}Teacher[100]; //定义一个结构体
void add(); //定义教师信息添加
void del(); //定义教师信息删除
Void modify(); //定义教师信息修改
int a;
Printf(“1添加2删除3修改”);
Scanf (“%d”,a);
Switch(a)
{
Case1:add();break;
Case2:del();break;
Case3:modify();break;
Default:break;
}//选择功能
}
Void add() //教师信息添加函数,若添加Teacher[i]
{
printf(“输入工号”);
Scanf(“%d”,Teacher[i].Tnum);
printf(“输入姓名”);
Scanf(“%s”,Teacher[i].Tname);
printf(“输入性别f女m男”);
Scanf(“%c”,Teacher[i].Tsex);
printf(“输入电话”);
Scanf(“%s”,Teacher[i].Ttel);
}
Void del() //教师信息删除函数,若删除Teacher[i]
{
Teacher[i-1]=Teacher[i+1];
Free(Teacher[i]);
}
Void modify() //教师信息修改函数,若修改Teacher[i]
{
Int t;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改选项1工号2姓名3性别4电话”);
Scanf(“%d”,t);
Switch(t)
{
Case1:scanf(“%d”,num);Teacher[i].Tnum=num;break;
Case2:scanf(“%s”,name);strcpy(Teacher[i].Tname,name);break;
Case3:scanf(“%c”,sex);Teacher[i].Tsex=sex;break;
Case4:scanf(“%s”,tel);strcpy(Teacher[i].Ttel,tel);break;
Default:break;
}//选择修改项并修改
}
Void TestOnLineSelfManage() //个人信息管理
{
Struct TestOnLineManage
{
Int Mnum;
Char Mname[20];
Char Msex;
Char Mtel[20];
}Manage[1]; //定义一个结构体
Int b;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改选项1工号2姓名3性别4电话”);
Scanf(“%d”,b);
Switch(t)
{
Case1:scanf(“%d”,num);Manage[1].Mnum=num;break;
Case2:scanf(“%s”,name);strcpy(Manage[1].Mname,name);break;
Case3:scanf(“%c”,sex);Manage[1].Msex=sex;break;
Case4:scanf(“%s”,tel);strcpy(Manage[1].Mtel,tel);break;
Default:break;
}//选择修改项并修改
}
//第1题
#includestdio.h
#includestdlib.h
#define N 5
typedef struct teacher{
char workNO[20];
char name[32];
char sex[10];
char title[20];
float salary;
struct teacher *next;
}Teacher,*pTeacher;
//创建链表
pTeacher creatLinklist(pTeacher head)
{
head=(Teacher*)malloc(sizeof(Teacher));
if(!head){
printf("malloc memory size error!\n");
exit(-1);
}
head-next=NULL;
return head;
}
//输入数据
void inputData(pTeacher head,int n)
{
pTeacher s,r;
int i;
r=head;
for(i=0;in;i++){
s=(Teacher*)malloc(sizeof(Teacher));
scanf("%s%s%s%s%f",s-workNO,s-name,s-sex,s-title,s-salary);
//尾插法建立链表,r始终指向链表的最后一个结点
r-next=s;
r=s;
}
r-next=NULL;
}
//输出数据
void outputData(pTeacher head)
{
pTeacher s;
s=head-next; //pt初始指向链表的第一个数据结点
while(s != NULL)
{
printf("%s %s %s %s %.2f\n",s-workNO,s-name,s-sex,s-title,s-salary);
s=s-next;
}
}
int main()
{
pTeacher list;
list=creatLinklist(list);
printf("输入教师数据:\n");
inputData(list,N);
printf("输出链表数据:\n");
outputData(list);
return 0;
}
//示例运行结果
F:\c_worka.exe
输入教师数据:
10001 wang 男 教授 10000
10002 yang 女 副教授 8000
10003 Li 男 讲师 7000
10004 zhang 男 院长 20000
10005 liao 女 辅导员 6000
输出链表数据:
10001 wang 男 教授 10000.00
10002 yang 女 副教授 8000.00
10003 Li 男 讲师 7000.00
10004 zhang 男 院长 20000.00
10005 liao 女 辅导员 6000.00
include iostream
using namespace std;
class person
{public:
void set_information( ); //公用成员函数
void show_information( ); //公用成员函数
private: //数据成员为私有
int number;
char name[30];
};
class Student: public person
{
public:
void show_information_1( )
{
coutendl;
cout"请输入学生信息: "endl;
coutendl;
cout"请输入班级: "endl;
cincls;
cout"请输入成绩: "endl;
cingra;
coutendl;
cout"学生附加信息:"endl;
cout" 班级: "clsendl; //引用派生类的私有成员,正确
cout" 成绩: "graendl;
coutendl;
} //引用派生类的私有成员,正确
private:
int cls;
int gra;
};
class Teacher: public person
{
public:
void show_information_2( )
{
coutendl;
cout"请输入教师信息: "endl;
coutendl;
cout"请输入职称: "endl;
cincls2;
cout"请输入部门: "endl;
cingra2;
coutendl;
cout"教师附加信息:"endl;
cout" 职称: "cls2endl; //引用派生类的私有成员,正确
cout" 部门: "gra2endl;
coutendl;
} //引用派生类的私有成员,正确
private:
char cls2[30];
char gra2[30];
};
int main( )
{
Student t1;
Teacher t2; //定义对象t1
t1.set_information( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
t1.show_information_1();
t2.set_information( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
t2.show_information_2();
coutendl;
return 0;
}
void person::set_information( ) //在类外定义set_time函数
{
coutendl;
cout"请输入基本信息: "endl;
coutendl;
cout" ""姓名:";
cinname;
cout" ""号码:";
cinnumber;
}
void person::show_information( ) //在类外定义show_time函数
{
coutendl;
cout"人员信息: "endl;
coutendl;
cout"姓名:"name" ""号码: "numberendl;
}