第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么如下程序不能顯示所有員工信息,不能按職務(wù)查找,但能按性別查找?

為什么如下程序不能顯示所有員工信息,不能按職務(wù)查找,但能按性別查找?

C
繁華開滿天機(jī) 2023-04-02 18:14:15
#include<stdio.h>#include<string.h>struct employee{int num; //編號(hào)  char name[20]; //姓名char sex[20]; //性別int age; //年齡char job[20]; //職務(wù)char dep[50]; //部門}employee[50];void addemp(){char c[2];do{int n=0;printf("姓名\n");scanf("%s",&employee[n].name);printf("性別\n");scanf("%s",&employee[n].sex);printf("編號(hào)\n");scanf("%d",&employee[n].num);printf("年齡\n");scanf("%d",&employee[n].age);printf("職務(wù)\n");scanf("%s",&employee[n].job);printf("部門\n");scanf("%s",&employee[n].dep);n++;printf("添加下一員工信息,請(qǐng)按y\n");scanf("%s",&c);}while(!(strcmp(c,"y")));}void showemp(){int i;printf(" 編號(hào) 姓名 性別 年齡 職務(wù) 部門 \n");for(i=1;employee[i].num!=0;i++);{printf("%d",employee[i].num);printf("%s %s ",employee[i].name,employee[i].sex);printf("%d ",employee[i].age);printf("%s %s",employee[i].job,employee[i].dep);}}void search_sex(){char a[20];int i;printf("輸入性別\n");scanf("%s",&a);for(i=0;i<50;i++)  {if(strcmp(a,employee[i].sex)==0)printf(" 編號(hào) 姓名 性別 年齡 職務(wù) 部門 \n %d %s %s %d %s %s",employee[i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].job,employee[i].dep);}  }void search_dep(){char b[20];int i;printf("輸入職務(wù)\n");scanf("%s",&b);for(i=0;i<50;i++)  {if(strcmp(b,employee[i].dep)==0)printf(" 編號(hào) 姓名 性別 年齡 職務(wù) 部門 \n%d %s %s %d %s %s",employee[i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].job,employee[i].dep);}}void main(){int i;for (i=0;i<50;i++)printf("*");printf("\n 員工信息管理系統(tǒng)\n");printf (" 通信二班--劉堯\n");printf("@ 0 退出員工信息管理系統(tǒng)。 @\n");printf("@ 1 輸入員工信息 @\n");printf("@ 2 顯示所有員工信息 @\n");printf("@ 3 查找某部門員工信息 @\n");printf("@ 4 查找男女員工信息 @\n");for(i=0;i<50;i++)printf("*");printf("\n");//菜單頁(yè)面int n;scanf("%d",&n);for(i=1;i!=0;i++){switch(n){ case 1:addemp();printf("\n");break;case 2:showemp();printf("\n");break;case 3:search_dep();printf("\n");break;case 4:search_sex();printf("\n");break;default:printf("輸入有誤,請(qǐng)重新輸入\n");}printf("請(qǐng)輸入下一項(xiàng)操作代碼,否則按0退出\n");scanf("%d",&n);}}
查看完整描述

2 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

1、void showemp()函數(shù)中for(i=1;employee[i].num!=0;i++);
循環(huán)應(yīng)該從i=0開始啊~~不知道你不能顯示出來(lái)的員工信息有多少,如果是這個(gè)原因,只會(huì)少顯示1個(gè)。

2、void search_dep() 開起來(lái)沒問題,只是你申請(qǐng)的b[20]和前面結(jié)構(gòu)體中申明的dep[50]不一樣,改過來(lái)看看能不查找~~~

查看完整回答
反對(duì) 回復(fù) 2023-04-05
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

#ifndef __OPTIMIZATION_H__
#define __OPTIMIZATION_H__

//////////////////////////////////////////////////////////////////////////
// class TOptimization
//
// $ 求函數(shù)一個(gè)或多個(gè)參數(shù)的最小值
//
// 該類默認(rèn)對(duì)一個(gè)參數(shù)優(yōu)化,一般只要輸入優(yōu)化參數(shù)數(shù)目
// 優(yōu)化目標(biāo)函數(shù)就可以使用。
//
// ...主要代碼來(lái)自:
// Numerical Recipes in C++
// The Art of Scientific Computing
// Second Edition
// William H. Press Saul A. Teukolsky
// William T. Vetterling Brian P. Flannery
//
// 中譯本:
// C++ 數(shù)值算法(第二版) 胡健偉 趙志勇 薛運(yùn)華 等譯
// 電子工業(yè)出版社 北京 (2005)
//
// Author: Jian Feng
// Email: fengj@tom.com
// Dec. 9, 2006
//
//////////////////////////////////////////////////////////////////////////
// 
// 輸入函數(shù):
//
// @MaxIterationStep: 最大迭代次數(shù), 默認(rèn) 1000
// @ParameterNumbers: 優(yōu)化參數(shù)數(shù)目, 默認(rèn) 1
// @InitMatrix: 初始化矩陣參數(shù)(N*N), 默認(rèn)
// @Tolerance: 容許公差, 默認(rèn) 1E-7
//
// 執(zhí)行函數(shù):
//
// @ExecutePowell: 利用powell方法進(jìn)行多參數(shù)優(yōu)化
// @ExecuteBrent: 利用brent方法進(jìn)行單參數(shù)優(yōu)化
//
// 輸出函數(shù):
//
// @OptimizatedParameters: 優(yōu)化結(jié)果數(shù)據(jù)
// @ObjectiveFunctionValue: 目標(biāo)函數(shù)在優(yōu)化值處的值
//
// 使用示例:
//
// 1. 單參數(shù)
// double objfun(double a){
// double sum = 0;
// for(int i = 0; i < DataPoints; ++i)
// sum += SQR(Exps[i] - Theo(a));
// }
// double value
// TOptimization opt;
// if(opt.ExecuteBrent(objfun, -10, -1)) opt.OptimizatedParameters(&value);
//
// 2. 多參數(shù)
// double objfun(double *a){
// double sum = 0;
// for(int i = 0; i < DataPoints; ++i)
// sum += SQR(Exps[i] - Theo(a));
// }
// double value[3]
// TOptimization opt(3);
// double ival[3] = ;
// if(opt.ExecutePowell(objfun, ival)) opt.OptimizatedParameters(value);
//
namespace{
static int ncom; //公用變量
static double *pcom_p; //公用變量
static double *xicom_p; //公用變量
static double (*nrfunc)(double*); //公用函數(shù)指針
}

class TOptimization
{
private:
typedef double (*Reff)(double *);
typedef double (*Ptrf)(double );

public:
TOptimization(int n = 1);
~TOptimization()

//主要方法
void ParameterNumbers(int n)

//利用powell方法對(duì)一個(gè)或多個(gè)參數(shù)優(yōu)化
bool ExecutePowell(Reff obj, double *a = 0);

//利用brent方法對(duì)一個(gè)參數(shù)優(yōu)化,需給出參數(shù)所在的區(qū)間
bool ExecuteBrent(Ptrf obj, double vFrom = 0, double vTo = 1);

void OptimizatedParameters(double *a)

void OptimizatedParameters(double &a)

//void OptimizatedParameters(double *a){  
// if(method) for(int i=0; i<num; ++i) a[i]=coef[i];
// else *a = vmin;
//}

//其它方法
void InitMatrix(double **m)
{
for(int i=0; i<num; ++i)
for(int j = 0; j<num; ++j)
matx[i][j]=m[i][j]; 
setm = true;
}

void MaxIterationStep(int s)

void Tolerance(double eps)

double ObjectiveFunctionValue()const

private:

double brent(double ax, double bx, double cx, Ptrf f, double tol, double &xmin, int &flag);
void mnbrak(double &ax, double &bx, double &cx, double &fa, double &fb, double &fc, Ptrf func);
void linmin(double *p, double *xi, double &fret, Reff func);
bool powell(double *p, double **xi, double ftol, int &iter, double &fret, Reff func);

void shft2(double &a, double &b, const double c)

void shft3(double &a, double &b, double &c, const double d)

double SQR(double x)

void SWAP(double &a, double &b)

double SIGN(const double &a, const double &b)

double MAX(const double &a, const double &b)

void AllocateMemory();

void FreeMemory();

static double f1dim(double x)
{
int j;
double *xt = new double [ncom];
//Vec_Dp &pcom=*pcom_p,&xicom=*xicom_p;
double *pcom = pcom_p, *xicom = xicom_p; 
for (j=0;j<ncom;j++)
xt[j]=pcom[j]+x*xicom[j];
//delete []xt;
double val = nrfunc(xt);
delete []xt;
return val;
}

bool setm; //是否設(shè)置優(yōu)化方向初始矩陣 

int num; //優(yōu)化參數(shù)
int ITMAX; //最大迭代數(shù)
int iter; //實(shí)際迭代步數(shù)
int method; //優(yōu)化方法 0: 1-D brent, 2: M-D Powell 

double vmin; //一維優(yōu)化參數(shù)
double ftol; //容許差
double fret; //目標(biāo)函數(shù)值

double *coef; //多維優(yōu)化參數(shù)值
double **matx; //多維優(yōu)化參數(shù)方向的初始值

};

//////////////////////////////////////////////////////////////////////////

inline TOptimization::TOptimization(int n )
{
num = n;
ftol = 1e-7;
ITMAX = 1000;
iter = 0;
fret = 0.;
vmin = 0.;
method = 0;
setm = false;

AllocateMemory();
}

inline void TOptimization::AllocateMemory()
{
pcom_p = new double [num];
xicom_p = new double [num];
coef = new double [num];
matx = new double *[num];
for(int i = 0; i < num; ++i)
{
coef[i] = 0.;
matx[i] = new double [num];
for(int j = 0; j < num; ++j)
matx[i][j]=(i == j ? 1.0 : 0.0); 
}
}

inline void TOptimization::FreeMemory()
{
for(int i = 0; i < num; ++i)
{
delete []matx[i];
}
delete []matx;
delete []pcom_p;
delete []xicom_p;
delete []coef;
}

inline bool TOptimization::ExecutePowell(Reff obj, double *a)
{
method = 1;
if(a)
for(int i = 0; i < num; ++i) coef[i] = a[i];
return powell(coef, matx, ftol, iter, fret, obj);
}

inline bool TOptimization::ExecuteBrent(Ptrf obj, double vFrom, double vTo)
{
method = 0;
int flag;
double cx, fa, fb, fc;
mnbrak(vFrom,vTo,cx,fa,fb,fc,obj);
fret = brent(vFrom,vTo,cx,obj, ftol,vmin, flag);
return flag ? true : false;
}

inline void TOptimization::mnbrak(double &ax, double &bx, double &cx, double &fa, 
double &fb, double &fc, Ptrf func)
{
const double GOLD=1.618034,GLIMIT=100.0,TINY=1.0e-20;
double ulim,u,r,q,fu;

fa=func(ax);
fb=func(bx);
if (fb > fa) {
SWAP(ax,bx);
SWAP(fb,fa);
}
cx=bx+GOLD*(bx-ax);
fc=func(cx);
while (fb > fc) {
r=(bx-ax)*(fb-fc);
q=(bx-cx)*(fb-fa);
u=bx-((bx-cx)*q-(bx-ax)*r)/
(2.0*SIGN(MAX(fabs(q-r),TINY),q-r));
ulim=bx+GLIMIT*(cx-bx);
if ((bx-u)*(u-cx) > 0.0) {
fu=func(u);
if (fu < fc) {
ax=bx;
bx=u;
fa=fb;
fb=fu;
return;
} else if (fu > fb) {
cx=u;
fc=fu;
return;
}
u=cx+GOLD*(cx-bx);
fu=func(u);
} else if ((cx-u)*(u-ulim) > 0.0) {
fu=func(u);
if (fu < fc) {
shft3(bx,cx,u,cx+GOLD*(cx-bx));
shft3(fb,fc,fu,func(u));
}
} else if ((u-ulim)*(ulim-cx) >= 0.0) {
u=ulim;
fu=func(u);
} else {
u=cx+GOLD*(cx-bx);
fu=func(u);
}
shft3(ax,bx,cx,u);
shft3(fa,fb,fc,fu);
}


inline double TOptimization::brent(double ax, double bx, double cx, 
Ptrf f, double tol, double &xmin, int &flag)
{
flag = 1;
const double CGOLD=0.3819660;
const double ZEPS=1.0e-20;
int iter;
double a,b,d=0.0,etemp,fu,fv,fw,fx;
double p,q,r,tol1,tol2,u,v,w,x,xm;
double e=0.0;

a=(ax < cx ? ax : cx);
b=(ax > cx ? ax : cx);
x=w=v=bx;
fw=fv=fx=f(x);
for (iter=0;iter<ITMAX;iter++) {
xm=0.5*(a+b);
tol2=2.0*(tol1=tol*fabs(x)+ZEPS);
if (fabs(x-xm) <= (tol2-0.5*(b-a))) {
xmin=x;
return fx;
}
if (fabs(e) > tol1) {
r=(x-w)*(fx-fv);
q=(x-v)*(fx-fw);
p=(x-v)*q-(x-w)*r;
q=2.0*(q-r);
if (q > 0.0) p = -p;
q=fabs(q);
etemp=e;
e=d;
if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x))
d=CGOLD*(e=(x >= xm ? a-x : b-x));
else {
d=p/q;
u=x+d;
if (u-a < tol2 || b-u < tol2)
d=SIGN(tol1,xm-x);
}
} else {
d=CGOLD*(e=(x >= xm ? a-x : b-x));
}
u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d));
fu=f(u);
if (fu <= fx) {
if (u >= x) a=x; else b=x;
shft3(v,w,x,u);
shft3(fv,fw,fx,fu);
} else {
if (u < x) a=u; else b=u;
if (fu <= fw || w == x) {
v=w;
w=u;
fv=fw;
fw=fu;
} else if (fu <= fv || v == x || v == w) {
v=u;
fv=fu;
}
}
}
flag = 0;
xmin=x;
return fx;
}

inline void TOptimization::linmin(double *p, double *xi, double &fret, Reff func)
{
int j, flag;
const double TOL=1.0e-8;
double xx,xmin,fx,fb,fa,bx,ax;

int n=num;
ncom=n;
//pcom_p=new Vec_Dp(n);
//xicom_p=new Vec_Dp(n);
nrfunc=func;
//Vec_Dp &pcom=*pcom_p,&xicom=*xicom_p;
double *pcom = pcom_p, *xicom = xicom_p;
for (j=0;j<n;j++) {
pcom[j]=p[j];
xicom[j]=xi[j];
}
ax=0.0;
xx=1.0;
mnbrak(ax,xx,bx,fa,fx,fb,f1dim);
fret=brent(ax,xx,bx,f1dim,TOL,xmin, flag);
for (j=0;j<n;j++) {
xi[j] *= xmin;
p[j] += xi[j];
}
//delete xicom_p;
//delete pcom_p;
}

inline bool TOptimization::powell(double *p, double **xi, double ftol, int &iter,
double &fret, Reff func)
{
const int ITMAX=500;
const double TINY=1.0e-20;
int i,j,ibig;
double del,fp,fptt,t;

int n=num;
//Vec_Dp pt(n),ptt(n),xit(n);
double *pt, *ptt, *xit;
for(i = 0; i < n; ++i)
{
pt = new double [n];
ptt = new double [n];
xit = new double [n];
}
fret=func(p);
for (j=0;j<n;j++) pt[j]=p[j];
for (iter=0;;++iter) {
fp=fret;
ibig=0;
del=0.0;
for (i=0;i<n;i++) {
for (j=0;j<n;j++) xit[j]=xi[j][i];
fptt=fret;
linmin(p,xit,fret,func);
if (fptt-fret > del) {
del=fptt-fret;
ibig=i+1;
}
}
if (2.0*(fp-fret) <= ftol*(fabs(fp)+fabs(fret))+TINY) {
delete []pt;
delete []ptt;
delete []xit;
return true;
}
if (iter == ITMAX)
{
delete []pt;
delete []ptt;
delete []xit;
return false;
//cerr<<"powell exceeding maximum iterations.";
}
for (j=0;j<n;j++) {
ptt[j]=2.0*p[j]-pt[j];
xit[j]=p[j]-pt[j];
pt[j]=p[j];
}
fptt=func(ptt);
if (fptt < fp) {
t=2.0*(fp-2.0*fret+fptt)*SQR(fp-fret-del)-del*SQR(fp-fptt);
if (t < 0.0) {
linmin(p,xit,fret,func);
for (j=0;j<n;j++) {
xi[j][ibig-1]=xi[j][n-1];
xi[j][n-1]=xit[j];
}
}
}
}
}

#endif


查看完整回答
反對(duì) 回復(fù) 2023-04-05
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)