7-1 厘米换算英尺英寸这个题目直接cm-m,然后全转英寸得到的值整除12就是英尺求余12就是英寸#includebits/stdc.h using namespace std; int main() { float a;cina; a/100; a/0.3048; a*12; int c(int)a/12; int d(int)a%12; coutc d; }7-2 然后是几点这个题目先把初始时间 %100的到分钟时/100得到小时数在对后面的多少分钟数进行绝对值的处理%60/60算出几分钟几小时然后按照符合对初始时间处理要注意分钟60要处理分钟小于0处理小时要%24#includebits/stdc.h using namespace std; int main() { int a,b;cinab; int h,m;ma%100,ha/100; int x,y;xabs(b)/60,yabs(b)%60; if(b0) { hx,my; if(m60) m-60,h1; h%24; } else { h-x,m-y; if(m0) m60,h-1; h%24; } couth; printf(%02d,m); }7-3 逆序的三位数这题很简单我们只需要把原数字当字符串存储然后反序变历在计算成数字就好了#includebits/stdc.h using namespace std; int main() { string a; cina; int num0; for(int ia.size()-1;i0;i--) numnum*10(a[i]-0); coutnum; }7-4 BCD解密转化为hex直接输出#includebits/stdc.h using namespace std; int main() { int a;cina; int ba/16; int ca%16; if(b!0) coutb; coutc; }7-5 表格输出#includebits/stdc.h using namespace std; int main() { cout------------------------------------endl; coutProvince Area(km2) Pop.(10K)endl; cout------------------------------------endl; coutAnhui 139600.00 6461.00endl; coutBeijing 16410.54 1180.70endl; coutChongqing 82400.00 3144.23endl; coutShanghai 6340.50 1360.26endl; coutZhejiang 101800.00 4894.00endl; cout------------------------------------endl; }7-6 混合类型数据格式化输入#includebits/stdc.h using namespace std; int main() { float a,b; int c; char d; cinacdb; coutd c ; printf(%.2f %.2f,a,b); }7-7 12-24小时制根据小时数12,12,12来分情况处理#includebits/stdc.h using namespace std; int main() { int a,b; scanf(%d:%d,a,b); if(a12) { couta-12:b PM; } else if (a12) { couta:b PM; } else { couta:b AM; } }7-8 超速判断简单的if判断#includebits/stdc.h using namespace std; int main() { int a;cina; if(a60) coutSpeed: a - Speeding; else coutSpeed: a - OK; }7-9 用天平找小球简单的判断#includebits/stdc.h using namespace std; int main() { int a,b,c;cinabc; if(ab) coutC; else if(ac) coutB; else coutA; }7-10 计算工资if 判断#includebits/stdc.h using namespace std; int main() { int y,t;cinyt; float ans0; if(y5) { if(t40) ans(t-40)*50*1.540*50; else anst*50; } else { if(t40) ans(t-40)*30*1.540*30; else anst*30; } printf(%.2f,ans); }7-11 分段计算居民水费if 判断#includebits/stdc.h using namespace std; int main() { float n;cinn; float ans0; if(n15) { ans(4*n)/3; } else{ ans2.5*n-17.5; } printf(%.2f,ans); }7-12 两个数的简单计算器按符合分情况#includebits/stdc.h using namespace std; int main() { int a,b;char x; cinaxb; if (x) coutab; else if(x-) couta-b; else if(x*) couta*b; else if(x/) couta/b; else if (x%) couta%b; else coutERROR; }7-13 日K蜡烛图正常if判断#includebits/stdc.h using namespace std; int main() { float o,h,l,c; cinohlc; if(co) { if(lolchohc) coutBW-Solid with Lower Shadow and Upper Shadow; else if (lolc) coutBW-Solid with Lower Shadow; else if (hohc) coutBW-Solid with Upper Shadow; else coutBW-Solid; } else if (co) { if(lolchohc) coutR-Hollow with Lower Shadow and Upper Shadow; else if (lolc) coutR-Hollow with Lower Shadow; else if (hohc) coutR-Hollow with Upper Shadow; else coutR-Hollow; } else { if(lolchohc) coutR-Cross with Lower Shadow and Upper Shadow; else if (lolc) coutR-Cross with Lower Shadow; else if (hohc) coutR-Cross with Upper Shadow; else coutR-Cross; } }7-14 求整数段和格式输出#includebits/stdc.h using namespace std; int main() { int a,b,flag; cinab;flag0; int sum0; for(int ia;ib;i) { sumi; printf(%5d,i); flag; if(flag5) coutendl,flag0; } if(flag0) coutSum sum; else coutendlSum sum; }7-15 计算圆周率这个题目注意计算的时候我们采用递推的去算分数不要先算分子再算分母不然会爆long long#includebits/stdc.h using namespace std; typedef long long ll; int main() { double a;cina; double term 1.0; double ans 1.0; int n0; while(1) { n; term term * n / (2 * n 1); ansterm; if(terma) break; } printf(%.6lf,ans*2); }7-16 求符合给定条件的整数集只用注意一下空格和换行就好#includebits/stdc.h using namespace std; int main() { int a;cina; vectorint v1; int flag0; for(int i0;i4;i) v1.push_back(ai); for(int i0;i4;i) { for(int j0;j4;j) { if(ji) continue; for(int k0;k4;k) { if(ki||kj) continue; flag; coutv1[i]v1[j]v1[k]; if(flag6) flag0; else cout ; } } coutendl; } }7-17 爬动的蠕虫简单的模拟题目#includebits/stdc.h using namespace std; int main() { int N,U,D;cinNUD; int ans0; while(1) { ans;N-U; if(N0) break; ans;ND; } coutans; }7-18 二分法求多项式单根这里注意阈值就是精确度其他的没什么好说的#includebits/stdc.h using namespace std; double a3,a2,a1,a0; double fun(double x) { return a3*x*x*xa2*x*xa1*xa0; } int main() { cina3a2a1a0; double a,b;cinab; double k0.01; double ans0; if(fun(a)0) {printf(%.2f,a);return 0;} if(fun(b)0) {printf(%.2f,b);return 0;} while(1) { double mid(ab)/2; if((b-a)k) {printf(%.2f,mid); return 0;} if(fun(mid)0){printf(%.2f,mid); return 0; } else if(fun(a)*fun(mid)0){amid;} else if(fun(b)*fun(mid)0){bmid;} } }7-19 支票面额列个方程f100yn2y1002f n98f - 199y而我们知道 y 和 f 都是在0-99之间的直接枚举就好了#includebits/stdc.h using namespace std; int main() { int f,y;int n;cinn; // f*98 n 199*y for(int i0;i100;i) { if((n199*i)%980(n199*i)/98100) { couti.(n199*i)/98; return 0; } } coutNo Solution; }7-20 打印九九口诀表简单的模拟#includebits/stdc.h using namespace std; int main() { int n;cinn; for(int i1;in;i) { for(int j1;ji;j) { coutj*i; printf(%-4d,i*j); } coutendl; } }7-21 求特殊方程的正整数解简单的枚举#includebits/stdc.h using namespace std; int main() { int n;cinn; int flag0; for(int i1;isqrt(n)1;i) { int kn-i*i; int ysqrt(k); if (y*yi*iniy) {couti yendl;flag;} } if(flag0) coutNo Solution; }7-22 龟兔赛跑这个题目的情况是有周期的90分钟一个周期我们可以先T%90之后再计算那么后面的的时间我们枚举时间为10的倍数我们检测距离用flag标志兔子是否再休息flag2是一个休息计时器flag230我们开始判断是否将flag修改将flag2归零#includebits/stdc.h using namespace std; int main() { int t;cint; int wj,tj; wjtj270*(t/90); t%90; int flag0; // 兔子是否在走动 int flag20; // 是否睡够30分钟 for(int i1;it;i) { if(flag0) { wj3,tj9; if(i%100tjwj) flag1; } else { wj3,flag2; if(flag230) if(wjtj) flag20,flag0; } } if(wjtj) cout-_- wj; else if(wjtj) cout_ wj; else if(tjwj) cout^_^ tj; }7-23 币值转换两个数组是最重要的思想#includebits/stdc.h using namespace std; int main() { string s;cins; string ans; char num[10] {a,b,c,d,e,f,g,h,i,j}; string dw[9] {,S,B,Q,W,S,B,Q,Y}; for(int i0;is.size();i) { int ks.size()-i-1; if(s[i]!0||ans.back()!a) { ansnum[s[i]-0]; } if(k%40) if(ans.back()a) ans.pop_back(); if(s[i]!0||k%40) ansdw[k]; } if(ans.size()0) couta; else coutans; }7-24 约分最简分式#includebits/stdc.h using namespace std; int main() { int a,b; scanf(%d/%d,a,b); int kgcd(a,b); couta/k/b/k; }7-25 念数字正常的数组映射#includebits/stdc.h using namespace std; int main() { string k[]{ling,yi,er,san,si,wu,liu,qi,ba,jiu}; string s;cins; for(int i0;is.size();i) { if(s[i]-) coutfu ; else coutk[s[i]-0] [is.size()-1]; } }7-26 单词长度这里注意输出“ ”要用flag来判断一下#includebits/stdc.h using namespace std; int main() { string s;getline(cin,s); int ans0; int num0; int flag0; for(int i0;is.size();i) { if(s[i]!.s[i]! )ans,num; else if(s[i] ans!0) { if(flag0) {coutans;flag1;} else cout ans; ans0; } else if(s[i].ans!0) { if(flag0) coutans; else cout ans; } } // if(num0) cout0; }7-27 冒泡法排序冒泡排序#includebits/stdc.h using namespace std; int main() { int N,K; cinNK; vectorint v1; for(int i0;iN;i) { int a;cina; v1.push_back(a); } for(int i0;iK;i) { for(int j1;jN-i;j) { if(v1[j-1]v1[j]) swap(v1[j-1],v1[j]); } } for(int i0;iN;i) coutv1[i] [iN-1]; }7-28 猴子选大王这里注意要定义两个k一个是下表删除用的一个是报数。除此之外vector.erase的参数是两个迭代器#includebits/stdc.h using namespace std; int main() { int N; cin N; vectorint v1; for (int i 1; i N; i) v1.push_back(i); int k 1; int index 0; while (v1.size() 1) { if (k 3) v1.erase(index v1.begin(),indexv1.begin()1), k 1; else index, k; index % v1.size(); } cout v1[0]; }7-29 删除字符串中的子串getline获取反复删除#includebits/stdc.h using namespace std; int main() { string s,s1; getline(cin,s); getline(cin,s1); while(1) { if(s.find(s1)-1) break; else { s.erase(s.find(s1),s1.size()); } } couts; }7-30 字符串的冒泡排序注意for (int i 0; i N; i) cout v1[i] ((i N - 1) ? : \n);三目运算符要加大括号有优先级#includebits/stdc.h using namespace std; int main() { int N, K; cin N K; vectorstring v1; for (int i 0; i N; i) { string a; cin a; v1.push_back(a); } for (int i 0; i K; i) { for (int j 1; j N - i; j) { if (v1[j - 1] v1[j]) swap(v1[j - 1], v1[j]); } } for (int i 0; i N; i) cout v1[i] ((i N - 1) ? : \n); }7-31 字符串循环左移队列的基本用法#includebits/stdc.h using namespace std; int main() { queuechar q1; string s;getline(cin,s); for(int i0;is.size();i) { q1.push(s[i]); } int K;cinK; for(int i0;iK;i) { char pq1.front(); q1.pop(); q1.push(p); } while(!q1.empty()) { coutq1.front(); q1.pop(); } }7-32 说反话-加强版coutv1[i] [i0];这里要注意一下“ ”’ ‘’\0‘#includebits/stdc.h using namespace std; int main() { vectorstring v1; string s; while(cins) { v1.push_back(s); } for(int iv1.size()-1;i0;i--) { coutv1[i] [i0]; } }7-33 有理数加法注意lcm和gcd#includebits/stdc.h using namespace std; int main() { int a,b,c,d; scanf(%d/%d %d/%d,a,b,c,d); int llcm(b,d); a*(l/b); c*(l/d); ac; int kgcd(a,l); if(l/k!1) couta/k/l/k; else couta/k; }7-34 通讯录的录入与显示注意从零开始计数#includebits/stdc.h using namespace std; int main() { int n;cinn; vectorstring v1; for(int i0;in;i) { string name,time,k,number,key; cinnametimeknumberkey; string sumname number key k time; v1.push_back(sum); } int t;cint; for(int i0;it;i) { int index;cinindex; if(indexv1.size()-1) coutNot Foundendl; else coutv1[index]endl; } }7-35 有理数均值注意ll的溢出#includebits/stdc.h using namespace std; typedef long long ll; int main() { int n;cinn; ll a,b; scanf(%lld/%lld,a,b); for(int i1;in;i) { ll c,d; scanf(%lld/%lld,c,d); ll llcm(b,d); a*(l/b); c*(l/d); ac; ll ggcd(a,l); a/g; bl/g; } ll g gcd(a,n); aa/g,bb*n/g; if(b1) couta; else couta/b; }7-36 复数四则运算注意一下这个计算的0的判断是精确1位小数的判断#includebits/stdc.h using namespace std; int main() { double a, b, c, d; cin a b c d; char fh[] { ,-,*,/ }; double newa, newb; for (int i 0; i 4; i) { printf((%.1lf%.1lfi) %c (%.1lf%.1lfi) , a, b, fh[i], c, d); if (i 0) { newa a c, newb b d; } else if (i 1) { newa a - c, newb b - d; } else if (i 2) { newa a * c - b * d; newb a * d b * c; } else if (i 3) { newa (a * c b * d) / (c * c d * d); newb (b * c - a * d) / (c * c d * d); } if (fabs(newa)0.05fabs(newb)0.05) cout 0.0; else if (fabs(newa)0.05) printf(%.1lfi, newb); else if (fabs(newb)0.05) printf(%.1lf, newa); else printf(%.1lf%.1lfi, newa, newb); cout endl; } }7-37 整数分解为若干项之和DFS并且注意输出的格式#includebits/stdc.h using namespace std; int ans[35]; int n; int flag 0; void dfs(int sum, int start, int len) { if (sum 0) { flag; if(flag%4!1) cout;; cout n ; cout ans[0]; for (int i 1; i len; i) { cout ans[i]; } if (flag % 4 0) cout endl; } for (int i start; i sum; i) { ans[len] i; dfs(sum - i, i, len 1); } } int main() { cin n; dfs(n,1,0); }7-38 数列求和-加强版高精度整数加法就是安位一个一个加然后存储进位。但是注意循环最后应该把最后的进位k加上N0的情况单独说明因为我们这理的string初始是空字符串#includebits/stdc.h using namespace std; typedef long long ll; int main() { ll a, N; cin a N; string ans ; ll k 0; if(N0) {cout0;return 0;} for (int i N; i 1; i--) { ll sum a * ik; k sum / 10; ans 0 sum % 10; } if(k!0) ans0k; reverse(ans.begin(), ans.end()); cout ans; }