/*測(cè)試方法,你可以把100變?yōu)?,10變?yōu)?,這樣方便測(cè)試*/

成都創(chuàng)新互聯(lián)是一家專業(yè)提供寒亭企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為寒亭眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
#includestdio.h
struct teacher
{
int tno;//教師號(hào)
char sname[8];//姓名
float money[10];//工資項(xiàng)
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);//定義函數(shù)輸入所有教師的信息及工資信息;
money(s);//定義函數(shù)計(jì)算各個(gè)教師的工資;
sort(s);//定義函數(shù)按工資由高到低進(jìn)行排序;
output(s);//定義函數(shù)輸出教師的姓名和對(duì)應(yīng)的工資。
}
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("教師工號(hào):%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;???????????????????/*?職工號(hào)?*/
int?wkld;???????????????????/*?工作量?*/
char?name[MAX_NAME_LENGTH];?/*?姓名?*/
tea?next;???????????????????/*?指向下一個(gè)節(jié)點(diǎn)的指針?*/
};
/*
*???復(fù)制字符串函數(shù)
*/
void?my_strncpy(char?*str,?char?const?*dest,?size_t?n)?{
assert(?dest?!=?NULL?);
while?(?n--?)?{
*str++?=?*dest++;
}
*str?='\0';
}
/*
*???創(chuàng)建節(jié)點(diǎn),使用頭插法
*/
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長(zhǎng)度大于?MAX_NAME_LENGTH,
?*??則按MAX_NAME_LENGTH-1算,留一個(gè)結(jié)束符。
?*/
my_strncpy(node-name,?name,?
strlen(name)??(MAX_NAME_LENGTH-1)???(MAX_NAME_LENGTH-1)?:?strlen(name));???
node-next?=?head;
head?=?node;
return?head;
}
/*
*???查找工作量大于某工作量的節(jié)點(diǎn),打印其職工號(hào)工號(hào),姓名和工作量
*/
static?void?find_wkld(tea?head,?int?const?wkld)?{
printf("工作量大于%d的教職工如下\n",?wkld);
printf("職工號(hào)\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函數(shù)的特殊情況處理
*/
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個(gè)節(jié)點(diǎn)開(kāi)始連刪len個(gè)節(jié)點(diǎn),
*???若不夠len個(gè)節(jié)點(diǎn),則從第i個(gè)節(jié)點(diǎn)開(kāi)始刪到表尾
*/
static?tea?delete_tea(tea?head,?int?i,?int?len)?{
tea?head_buf?=?head;
tea?surplus_head,?surplus_end;
/*
?*??先將指針指向第i個(gè)節(jié)點(diǎn),
?*??若鏈表長(zhǎng)度小于i,則不刪除任何節(jié)點(diǎn)
?*??一個(gè)特殊情況,如果從第一個(gè)節(jié)點(diǎn)開(kāi)始刪除
?*??則需要特殊處理
?*/
assert(head?!=?NULL);
if?(?i--?==?1?)?{
return?delete_head(head,?len);
}
while?(?--i?)?{
if?(?head?==?NULL?)?{
return?NULL;
}
head?=?head-next;
}
/*
?*???開(kāi)始執(zhí)行刪除節(jié)點(diǎn)操作
?*/
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;
}
}
/*
?*???連接剩余的節(jié)點(diǎn),
?*???若節(jié)點(diǎn)不夠,則surplus_end?=?NULL。
?*/
surplus_head-next?=?surplus_end;
return?head_buf;
}
/*
*???打印教職工信息
*/
static?void?print_tea(tea?head)?{
printf("職工號(hào)\t姓名\t\t工作量\n");
while?(?head?!=?NULL?)?{
printf("%ld\t%s\t%d\n",?head-num,?head-name,?head-wkld);
head?=?head-next;
}
}
/*
*???鏈表最后應(yīng)該要釋放,養(yǎng)成習(xí)慣
*/
static?void?free_tea(tea?head)?{
tea?temp?=?head;
assert(?head?!=?NULL?);?/*?該函數(shù)可以去了解一下?*/
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;
/*?開(kāi)始?*/
printf("請(qǐng)輸入要錄入的教職工人數(shù):?");
scanf("%d",?n);
/*?
?*???自動(dòng)錄入信息
?*???如果要改成數(shù)據(jù)為手動(dòng)輸入在這里添加代碼即可
?*???并把原來(lái)的這兩行注釋掉
?*/
for?(?i?=?0;?i??n;?i++)?{
head?=?create_tea(head,?num++,?wkld++,?name);
name[9]?=?ch++;
}
temp?=?head;
printf("教職工信息表如下\n");
print_tea(head);
printf("請(qǐng)輸入要查找的工作量:?");
scanf("%d",?n);
find_wkld(head,?n);
printf("請(qǐng)輸入要?jiǎng)h除的起始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)(空格隔開(kāi)):?");
scanf("%d?%d",?i,?n);
head?=?delete_tea(head,?i,?n);
printf("刪除之后的教職工信息如下\n");
print_tea(head);
free_tea(head);
return?0;
}
結(jié)果:
有疑問(wèn)可以追問(wèn)。
有用點(diǎn)采納,謝謝!
int main()
{
file *p;
char s[6];
fp=fopen("c:\\aa.txt","wb");
printf("\n請(qǐng)輸入姓名:");
scanf("%s",s);
fwrite(s,sizeof(char),strlen(s),fp);
fclose(fp);
}
#includestdio.h
#includestring.h
int main()
{
void TestOnLineTeacherManage(); //聲明教師信息管理函數(shù)
void TestOnLineSelfManage();//聲明個(gè)人管理函數(shù)
int n;
printf(“0教師管理,1個(gè)人管理”);
scanf(“%d”,n);
If (n==0)
TestOnLineTeacherManage();
else
TestOnLineSelfManage();//選擇教師管理或者個(gè)人信息管理
Return 0;
}
Void TestOnLineTeacherManage() //教師信息管理函數(shù)
{
Struct TestOnLineTeacher
{
Int Tnum;
Char Tname[20];
Char Tsex;
Char Ttel[20];
}Teacher[100]; //定義一個(gè)結(jié)構(gòu)體
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() //教師信息添加函數(shù),若添加Teacher[i]
{
printf(“輸入工號(hào)”);
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() //教師信息刪除函數(shù),若刪除Teacher[i]
{
Teacher[i-1]=Teacher[i+1];
Free(Teacher[i]);
}
Void modify() //教師信息修改函數(shù),若修改Teacher[i]
{
Int t;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改選項(xiàng)1工號(hào)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;
}//選擇修改項(xiàng)并修改
}
Void TestOnLineSelfManage() //個(gè)人信息管理
{
Struct TestOnLineManage
{
Int Mnum;
Char Mname[20];
Char Msex;
Char Mtel[20];
}Manage[1]; //定義一個(gè)結(jié)構(gòu)體
Int b;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改選項(xiàng)1工號(hào)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;
}//選擇修改項(xiàng)并修改
}
//第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;
//創(chuàng)建鏈表
pTeacher?creatLinklist(pTeacher?head)
{
head=(Teacher*)malloc(sizeof(Teacher));
if(!head){
printf("malloc?memory?size?error!\n");
exit(-1);
}
head-next=NULL;
return?head;
}
//輸入數(shù)據(jù)
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始終指向鏈表的最后一個(gè)結(jié)點(diǎn)
r-next=s;
r=s;
}
r-next=NULL;
}
//輸出數(shù)據(jù)
void?outputData(pTeacher?head)
{
pTeacher?s;
s=head-next;??//pt初始指向鏈表的第一個(gè)數(shù)據(jù)結(jié)點(diǎn)
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("輸入教師數(shù)據(jù):\n");
inputData(list,N);
printf("輸出鏈表數(shù)據(jù):\n");
outputData(list);
return?0;
}
//示例運(yùn)行結(jié)果
F:\c_worka.exe
輸入教師數(shù)據(jù):
10001?wang?男?教授?10000
10002?yang?女?副教授?8000
10003?Li???男?講師?7000
10004?zhang?男?院長(zhǎng)?20000
10005?liao?女?輔導(dǎo)員?6000
輸出鏈表數(shù)據(jù):
10001?wang?男?教授?10000.00
10002?yang?女?副教授?8000.00
10003?Li?男?講師?7000.00
10004?zhang?男?院長(zhǎng)?20000.00
10005?liao?女?輔導(dǎo)員?6000.00
include iostream
using namespace std;
class person
{public:
void set_information( ); //公用成員函數(shù)
void show_information( ); //公用成員函數(shù)
private: //數(shù)據(jù)成員為私有
int number;
char name[30];
};
class Student: public person
{
public:
void show_information_1( )
{
coutendl;
cout"請(qǐng)輸入學(xué)生信息: "endl;
coutendl;
cout"請(qǐng)輸入班級(jí): "endl;
cincls;
cout"請(qǐng)輸入成績(jī): "endl;
cingra;
coutendl;
cout"學(xué)生附加信息:"endl;
cout" 班級(jí): "clsendl; //引用派生類的私有成員,正確
cout" 成績(jī): "graendl;
coutendl;
} //引用派生類的私有成員,正確
private:
int cls;
int gra;
};
class Teacher: public person
{
public:
void show_information_2( )
{
coutendl;
cout"請(qǐng)輸入教師信息: "endl;
coutendl;
cout"請(qǐng)輸入職稱: "endl;
cincls2;
cout"請(qǐng)輸入部門(mén): "endl;
cingra2;
coutendl;
cout"教師附加信息:"endl;
cout" 職稱: "cls2endl; //引用派生類的私有成員,正確
cout" 部門(mén): "gra2endl;
coutendl;
} //引用派生類的私有成員,正確
private:
char cls2[30];
char gra2[30];
};
int main( )
{
Student t1;
Teacher t2; //定義對(duì)象t1
t1.set_information( ); //調(diào)用對(duì)象t1的成員函數(shù)set_time,向t1的數(shù)據(jù)成員輸入數(shù)據(jù)
t1.show_information_1();
t2.set_information( ); //調(diào)用對(duì)象t1的成員函數(shù)set_time,向t1的數(shù)據(jù)成員輸入數(shù)據(jù)
t2.show_information_2();
coutendl;
return 0;
}
void person::set_information( ) //在類外定義set_time函數(shù)
{
coutendl;
cout"請(qǐng)輸入基本信息: "endl;
coutendl;
cout" ""姓名:";
cinname;
cout" ""號(hào)碼:";
cinnumber;
}
void person::show_information( ) //在類外定義show_time函數(shù)
{
coutendl;
cout"人員信息: "endl;
coutendl;
cout"姓名:"name" ""號(hào)碼: "numberendl;
}
網(wǎng)頁(yè)題目:添加教師數(shù)據(jù)函數(shù)C語(yǔ)言,c語(yǔ)言數(shù)學(xué)函數(shù)庫(kù)
文章路徑:http://chinadenli.net/article43/dsigdes.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)