电脑小助手(5.0)
include<bits/stdc++.h>
include<windows.h>
define un unsigned long long
using namespace std; int ss(int xx) { int imt=sqrt(xx); for(int sqi=1;sqi<=imt;sqi++) if(xx%sqi==0) return 0; return 1; } int mxwoosnv(un,un);
int jszxgbs() { un siajonwpq,taotqkjnazc=1; printf("输入几个数?\n"); cin>>siajonwpq; system("CLS"); un afiwjmz[siajonwpq] ; memset(afiwjmz,0,sizeof(afiwjmz)); for(int jofksmq=1;jofksmq<=siajonwpq;jofksmq++) { printf("第%d个数是?\n",jofksmq); cin>>afiwjmz[jofksmq]; system("CLS"); } taotqkjnazc=afiwjmz[1]; for(int jofksmq=1;jofksmq<=siajonwpq;jofksmq++) { if(afiwjmz[jofksmq]!=0) { if(afiwjmz[jofksmq]>taotqkjnazc) { taotqkjnazc=taotqkjnazcafiwjmz[jofksmq]/mxwoosnv(afiwjmz[jofksmq],taotqkjnazc); } else { taotqkjnazc=taotqkjnazcafiwjmz[jofksmq]/mxwoosnv(taotqkjnazc,afiwjmz[jofksmq]); } } } system("CLS"); printf("这些数的最小公倍数是%d。\n",taotqkjnazc); return 0; } int mxwoosnv(un alfkjmwqoi,un batkjmwqoi) { if(batkjmwqoi==1) return 1; if(alfkjmwqoi%batkjmwqoi==0) return batkjmwqoi; return mxwoosnv(batkjmwqoi,alfkjmwqoi%batkjmwqoi); } int zdgyshcprd(int,int); int jszdgys() { int sdgsi,ajsqpzm=1; printf("输入几个数?\n"); cin>>sdgsi; system("CLS"); int alfqwert[sdgsi]; for(int sdgsj=1;sdgsj<=sdgsi;sdgsj++) { printf("第%d个数是?\n",sdgsj); cin>>alfqwert[sdgsj]; system("CLS"); } ajsqpzm=alfqwert[1]; for(int sdgsj=1;sdgsj<=sdgsi;sdgsj++) { if(alfqwert[sdgsj]!=0) { if(alfqwert[sdgsj]>ajsqpzm) { ajsqpzm=zdgyshcprd(alfqwert[sdgsj],ajsqpzm); } else { ajsqpzm=zdgyshcprd(ajsqpzm,alfqwert[sdgsj]); } } } system("CLS"); printf("这些数的最大公因数是%d。\n",ajsqpzm); return 0; } int zdgyshcprd(int arbxtyg,int binskxq) { if(binskxq==1) return 1; if(arbxtyg%binskxq==0) return binskxq; return zdgyshcprd(binskxq,arbxtyg%binskxq); } bool e[1001]; int Dlen=30; string D[1001] = { "", "西红柿炒蛋","番茄蛋汤","牛肉片","炖猪肉","包心菜","花菜","西蓝花","油麦菜", "西葫芦","咖喱土豆牛肉","鲳鱼","鱿鱼","滑皮虾","菠菜","藕片", "水蒸蛋","荷兰豆","四季豆","葱油芋艿","大头菜","盘菜","蒸香肠", "蒸鱼饼","紫菜汤","罗宋汤","酸菜鱼","香肠蒸蛋","蒸排骨","红烧肉","梅干菜扣肉" }; void d(int din) { cout<<D[din]<<endl; return; } void dp(string nam) { Dlen++; D[Dlen]=nam; } void dc(string nam,int num) { D[num]=nam; } int rd(int l,int r)//4 8:zz=15; { int zz=rand(); return zz%(r-l+1)+l; } void eat() { memset(e,0,sizeof(e)); int sl=rd(1,2); int ck=3; if(sl==1) ck=4; cout<<endl; printf("今天随机抽取%d个菜。\n",ck); cout<<endl; for(int i=1;i<=ck;i++) { int xx=rd(1,Dlen); if(e[xx]==1) { i--; continue; } e[xx]=1; Sleep(1000) ; printf("%d.",i); d(xx); } cout<<endl; } int cfa[1000000],cfans[1000000]; unsigned long long cfaa,cfal,cfansl,cfbb; unsigned long long cfn,cfz,cfqq; int ans=0; int nois=0; struct nt { int z,m; }; void cftop(int cfx) { memset(cfans,0,sizeof(cfans)); int cfl=cfal; for(int cfi=1;cfi<=cfl;cfi++) { cfaa=cfans[cfi]+cfa[cfi]cfx; cfbb=cfans[cfi+1]+cfaa/10; cfans[cfi+1]=cfbb; cfans[cfi]=cfaa%10; } while(cfans[cfl+1]>0) { cfl++; cfans[cfl+1]+=cfans[cfl]/10; cfans[cfl]%=10; } cfansl=cfl; cfal=cfansl; } int wiIwtn; int ada(int aa,int bb)//约分 { if(aa==0) return -1; if(bb==0) return -1; if(aa==1) return 1; if(bb==1) return 1;// if(aa%bb==0) return bb; if(bb%aa==0) return aa;// return ada(bb,aa%bb); } bool zz(nt x,nt y)//sort { return x.z<y.z; } nt aq[5]; char opt[10]= {' ','+','-','','/'};
nt number(nt x,int k, nt y)
{
nt res;
if(k==1)
{
res.z=x.zy.m+y.zx.m;
res.m=x.my.m;
//return res;
}
else if(k==2)
{
res.z=x.zy.m-y.zx.m;
res.m=x.my.m;
//return res;
}
else if(k==3)
{
res.z=x.z*y.z;
res.m=x.m*y.m;
//return res;
}
else if(k==4)
{
res.z=x.z*y.m;
res.m=x.m*y.z;
//return res;
}
//printf("mathing_of:%d %d ada\n",res.z,res.m);
int kkl=ada( max(res.z,res.m) , min(res.z,res.m) );//max
if(kkl==-1)
{
res.z=0;
res.m=1;
return res;
}
res.z/=kkl;
res.m/=kkl;
return res;
} void num(nt zm) { if(zm.m==1) { printf("%d",zm.z); } else { printf("(%d/%d)",zm.z,zm.m); } } //void ch(int kl) //{ // if(kl==1) printf("+"); // if(kl==2) printf("-"); // if(kl==3) printf("*"); // if(kl==4) printf("/"); //} void p(nt aa,int key,nt bb,nt answerr) { //printf(" "); num(aa); //ch(key); //cout<<char(opt[key]); //cout<<"hello"; printf("%c",key); num(bb); printf("="); num(answerr); cout<<endl; } void shuchu(nt a,nt b,nt c,nt d,nt e,nt f,int k1,int k2,int k3) { // printf("%d%c%d=%d\n",max(a,b),opt[k1],min(a,b),number(max(a,b),k1,min(a,b))); // printf("%d%c%d=%d\n",max(c,d),opt[k2],min(c,d),number(max(c,d),k2,min(c,d))); // printf("%d%c%d=%d\n",max(e,f),opt[k3],min(e,f),number(max(e,f),k3,min(e,f))); ans++; nois=1; //printf("no.%d:\n",ans); p(a,opt[k1],b,number(a,k1,b)); p(c,opt[k2],d,number(c,k2,d)); p(e,opt[k3],f,number(e,k3,f)); //cout<<"========="<<endl; }
bool ss(nt cmdd) { if(cmdd.z==cmdd.m*wiIwtn&&cmdd.m!=0) return 1; else return 0; } bool used[10]; nt a[10]; void doit(int u) { if(u==5) { //printf("mz_of:-----%d %d %d %d\n",a[1].z,a[2].z,a[3].z,a[4].z); for (int i = 1; i <= 4; i++) //暴力枚举3个运算符 for (int j = 1; j <= 4; j++) for (int k = 1; k <= 4; k++) { if (ss( number(number(number(a[1],i,a[2]),j,a[3]),k,a[4]) )==1&&nois==0) //((a?b)?c)?d shuchu(a[1],a[2],number(a[1],i,a[2]),a[3],number(number(a[1],i,a[2]),j,a[3]),a[4],i,j,k); if (ss( number(number(a[1],i,a[2]),k,number(a[3],j,a[4])) )==1&&nois==0)//(a?b)?(c?d) shuchu(a[1],a[2],a[3],a[4],number(a[1],i,a[2]),number(a[3],j,a[4]),i,j,k);
if (ss( number(number(a[1],i,number(a[2],j,a[3])),k,a[4]))==1&&nois==0)//(a?(b?c))?d
shuchu(a[2],a[3],a[1],number(a[2],j,a[3]),number(a[1],i,number(a[2],j,a[3])),a[4],j,i,k);
if (ss( number(a[1],i,number(number(a[2],j,a[3]),k,a[4]) ))==1&&nois==0)//a((bc)d)
shuchu(a[2],a[3],number(a[2],j,a[3]),a[4],a[1],number(number(a[2],j,a[3]),k,a[4]),j,k,i);
if (ss( number(a[1],i,number(a[2],j,number(a[3],k,a[4]) )))==1&&nois==0)//a(b(cd))
shuchu(a[3],a[4],a[2],number(a[3],k,a[4]),a[1],number(a[2],j,number(a[3],k,a[4])),k,j,i);
}
}
for(int i=1;i<=4;i++)
{
if(used[i]==1) continue;
if(nois==1) return;
used[i]=1;
a[i]=aq[u];
doit(u+1);
used[i]=0;
}
}
int wdt()
{
//aq,opt,ans,used
memset(aq,0,sizeof(aq));
//memset(opt,0,sizeof(opt));
ans=0;
memset(used,0,sizeof(used));
system("color f0");
system("cls");
//printf("已准备好。\n");
//printf("目标值?\n");
//cin>>wiIwtn;
wiIwtn=24;
printf("请输入四个数字,每个数用空格隔开。\n");
//cout<<"\033c";
scanf("%d %d %d %d", &aq[1].z,&aq[2].z,&aq[3].z,&aq[4].z);
aq[1].m=1;
aq[2].m=1;
aq[3].m=1;
aq[4].m=1;
sort(aq+1,aq+5,zz);
doit(1);
// printf("Ok.\n");
if(ans==0) printf("No answer!\n");
// else
// {
// if(ans>1)
// printf("It has %d answers.\n",ans);
// else
// printf("It has 1 answer.\n");
// }
//system("pause");
//return 0;
}
char f[300][300];
int ll[300];
int l=0;
int k;
int ee=0;
void aaaaa(){}
int read()
{
char asdf;
int xx;
int qwe=1;
while(1)
{
asdf=getchar();
if(asdf>'9'||asdf<'1') break;
}
while(1)
{
if(asdf<='9'&&asdf>=1)
{
qwe=10;
xx+=qwe(asdf-48);
}
else break;
asdf=getchar();
}
return xx;
}
void pt()
{
printf(" 输入1:即刻关机\n");
printf(" 输入2:定时关机\n");
// printf(" 输入3:每天n时m分关机\n");
printf(" 输入3:计时功能\n");
// printf(" 输入4:取消关机\n");
printf(" 输入4:计算器\n");
//printf(" 输入4:记事本\n");
///printf(" 输入5:发出DOS指令\n");
printf(" 输入5:打开计事功能\n");
printf(" 输入6:排序功能\n");
printf(" 输入7:24点\n");
printf(" 输入8:随机菜谱选择\n");
}
void s(int key)
{
//printf("开启功能%d。\n",key);
if(key==0)
{
ee=1;
return ;
}
if(key==1)
{
system("shutdown -s -t 30");
printf("30s后关机。\n") ;
printf("取消关机--esc。\n");
while(1)
{
if(GetAsyncKeyState(27)&0x8000!=0)
break;
Sleep(100);
}
system("shutdown -a");
printf("已取消关机。\n");
}
if(key==2)
{
int x;
printf("几分钟后关机?");
cin>>x;
char c[30];
sprintf((char*)c,"shutdown -s -t %d",x*60);
system(c);
printf("%d分钟后关机。\n",x) ;
printf("取消关机--esc。\n放弃取消关机--Ctrl\n");
while(1)
{
if(GetAsyncKeyState(27)&0x8000!=0)
{
system("shutdown -a");
printf("已取消关机。\n");
break;
}
if(GetAsyncKeyState(17)&0x8000!=0)
{
printf("已放弃关机。\n");
break;
}
Sleep(100);
}
}
// if(key==3) // { // int nn,m; // printf("定时每天几点几分关机"); // cin>>nn>>m; // char c[30]; // sprintf((char)c,"at %d:%d shutdown -s",nn,m); // system(c); // } // if(key==4) // { // system("shutdown -a"); // printf("已取消关机。\n"); // } if(key==4) { printf("输入1:普通计算器\n"); printf("输入2:高级计算器\n"); int keyoft; cin>>keyoft; if(keyoft==1)system("calc"); else if(keyoft==2) { printf("输入1:计算次方\n"); printf("输入2:计算阶乘\n"); printf("输入3:计算根号\n"); printf("输入4:计算最大公因数\n"); printf("输入5:计算最小公倍数\n"); printf("输入6:计算cos\n"); printf("输入7:计算sin\n"); printf("输入8:计算tan\n"); printf("输入9:分解质因数\n"); int qas; cin>>qas; if(qas==1)//cifang { printf("输入a,b,得到a的b次方。(a和b用空格隔开)\n") ; cin>>cfz>>cfn; memset(cfa,0,sizeof(cfa)); memset(cfans,0,sizeof(cfans)); cfa[1]=1; cfans[1]=1; cfal=1; cfansl=1; for(unsigned long long cfk=1;cfk<=cfn;cfk++) { cftop(cfz); memcpy(cfa,cfans,sizeof(cfa)); } printf("ans="); for(int cfi=cfansl;cfi>=1;cfi--) printf("%d",cfans[cfi]); cout<<endl; } else if(qas==2) { printf("输入a,得到a的阶乘。\n"); int jcg; cin>>jcg; memset(cfa,0,sizeof(cfa)); memset(cfans,0,sizeof(cfans)); cfa[1]=1; cfans[1]=1; cfal=1; cfansl=1; for(unsigned long long cfk=1;cfk<=jcg;cfk++) { cftop(cfk); memcpy(cfa,cfans,sizeof(cfa)); } printf("ans="); for(int cfi=cfansl;cfi>=1;cfi--) printf("%d",cfans[cfi]); cout<<endl; } else if(qas==3)//genhao { double gha,ghb; printf("输入a,b,得到a的b次根号。(a和b用空格隔开)\n") ; cin>>gha>>ghb; printf("%f\n",pow(gha,(1.0/ghb))); } else if(qas==4)//gys { jszdgys(); } else if(qas==5) { jszxgbs(); } else if(qas==6) { double jd; printf("cos(?)\n"); cin>>jd; printf("answer:%f\n",cos(jd)); } else if(qas==7) { double jd; printf("sin(?)\n"); cin>>jd; printf("answer:%f\n",sin(jd)); } else if(qas==8) { double jd; printf("tan(?)\n"); cin>>jd; printf("answer:%f\n",tan(jd)); } else if(qas==9) { printf("分解哪个数?\n"); int se; cin>>se; bool hy=0; printf("%d = ",se); for(int i=2;se>1;i++) { int tmp=0; while(se%i==0) { tmp++; se/=i; } if(tmp!=0) { if(tmp==1) { if(hy==1)printf(" %d ",i); else printf("%d ",i); } else { if(hy==1)printf("* %d ^ %d ",i,tmp); else printf("%d ^ %d ",i,tmp); } hy=1; } } } } } // if(key==4) // { // system("notepad"); // } // if(key==5) // { // char as[1000]; // printf("输入DOS指令:\n"); // Sleep(1); // getchar(); // gets(as); // system(as); // } if(key==5) { asd: printf("输入1:记录一件事\n"); // printf("输入2:查看一件事\n"); printf("输入2:查看今天记录的所有事\n"); printf("输入3:清空今天记录的所有事\n"); printf("输入0:结束本功能(数据不清空,回到主界面)\n------------------------------------------------------------\n"); cin>>k; cout<<"============================================================"<<endl; if(k==1) { l++; printf("这是今天第%d件事:不要空格\n",l); scanf("%s",f[l]+1); ll[l]=strlen(f[l]+1); } // else if(k==2) // { // printf("你要查看第几件事:"); // int mm; // cin>>mm; // if(mm==0||mm>l) printf("没有对应的事情,或已被删除。"); // else // { // for(int i=1;i<=ll[mm];i++) printf("%c",f[mm][i]); // cout<<endl; // } // } else if(k==2) { printf("列表共%d条,如下:\n",l); for(int j=1;j<=l;j++) { printf("%d. ",j); for(int i=1;i<=ll[j];i++) printf("%c",f[j][i]); cout<<endl; } } else if(k==3) { memset(f,0,sizeof(f)); memset(ll,0,sizeof(ll)); l=0; printf("已全部清除。"); } else if(k==0) { printf("计事功能结束。"); goto abb; } else { printf("只能0~4项\n"); } system("pause"); system("cls"); goto asd; abb: aaaaa(); } if(key==3) { printf("ctrl--顺计时\nAlt--倒计时\n"); bool akaks=0; while(1) { if(GetAsyncKeyState(18)&0x8000!=0)//Alt { akaks=1; break; }
if(GetAsyncKeyState(17)&0x8000!=0)//C
{
akaks=0;
break;
}
}
system("cls");
if(akaks==1)
{
int tms;
printf("终止---esc\n暂停---Alt\n倒计时几秒?\n");//
cin>>tms;
bool fcjsdtsqk=0;
for(int i=tms;i>=0;i--)
{
if(GetAsyncKeyState(18)&0x8000!=0)
{
system("cls");
printf("继续--Ctrl\n终止--esc\n") ;
while(1)
{
Sleep(100);
if(GetAsyncKeyState(27)&0x8000!=0)
{
fcjsdtsqk=1;
break;
}
if(GetAsyncKeyState(17)&0x8000!=0)break;
}
if(fcjsdtsqk==1) break;
printf("继续计时。\n");
//Sleep(1000);
}
system("cls");
cout<<i;
Sleep(900);
Beep(500,100);
if(GetAsyncKeyState(27)&0x8000!=0)
{
fcjsdtsqk=1;
break;
}
}
system("cls");
if(fcjsdtsqk==0)
{
printf("计时结束。");
Beep(1000,1500);
}
else
{
printf("已结束计时。");
}
}
else //shujishi
{
printf("结束--esc\n暂停--crtl\n");
system("pause");
int tmsss=0;
while(1)
{
bool bk=0;
tmsss++;
if(GetAsyncKeyState(27)&0x8000!=0)
break;
else if(GetAsyncKeyState(17)&0x8000!=0)
{
printf("已暂停。\nAlt--继续\nesc--结束");
while(1)
{
if(GetAsyncKeyState(27)&0x8000!=0)
{
bk=1;
break;
}
if(GetAsyncKeyState(18)&0x8000!=0)
break;
}
if(bk==1)break;
}
system("cls");
cout<<tmsss;
Sleep(900);
Beep(500,100);
}
system("cls");
printf("计时结束\n");
Beep(1000,1500);
}
}
else if(key==6)
{
printf("你要排序几个数?\n");
int zxc;
cin>>zxc;
printf("输入这些数,每个数用空格隔开。\n");
int aafd[100000];
for(int ijk=1;ijk<=zxc;ijk++)
{
scanf("%d",&aafd[ijk]);
}
sort(aafd+1,aafd+1+zxc);
for(int ijk=1;ijk<=zxc;ijk++)
printf("%d ",aafd[ijk]);
cout<<endl;
}
else if(key==7)
{
nois=0;
wdt() ;
}
else if(key==8)
{
int eee=0;
printf("输入1->抽取菜谱\n输入2->修改菜谱\n输入3->添加菜名\n") ;
cin>>eee;
if(eee==1)eat();
else if(eee==2)
{
string bnm;
int asre;
printf("目前菜谱库:\n共%d计道菜。\n",Dlen);
for(int i=1;i<=Dlen;i++)
{
printf("%d:",i);
cout<<D[i]<<" ";
if(i%4==0) cout<<endl;
//Sleep(1000);
}
printf("\n你要修改哪道菜?请输入该菜的序号。\n");
scanf("%d",&asre);
printf("你要把这道菜换成什么?\n") ;
cin>>bnm;
cout<<"已经把"<<D[asre]<<"修改为"<<bnm<<endl;
dc(bnm,asre);
}
else
{
string bnm;
printf("添加什么菜名?\n") ;
cin>>bnm;
dp(bnm);
printf("已添加。\n");
}
}
//else printf("请重试!");
} int main() { system("mode con cols=60 lines=30"); system("color f0") ; ee=0; srand((unsigned long long)time(0) ); system("cls") ;
int n;
system("title 电脑小助手");
while(1)
{
if(ee==1) break;
pt();
printf("------------------------------------------------------------\n");
cin>>n;
printf("------------------------------------------------------------\n");
s(n);
system("pause");
system("cls");
//system("mode con cols=60 lines=30");
}
// cout<<"正在重新启动程序…"; // Sleep(1000); // //scanf("%*s"); // main(); return 0; }