培训第四天
今天已经是第四天了,早上下雨了,没错,这预示着——
考试!!!
今天上午迎来了第一次编程考试,题目不是特别难,但涉及到了很多需要注意的知识点,也带给自己很多教训
印象最深刻的是
“蒟蒻蜗牛lzh掉到了一口深井底部,但是他有梦想,他一定要爬出来!!”
那个正在检查博客的蒟(ju)蒻(lao)李震学长,再出这么难的题就不要爬出来了(哈哈哈开玩笑不过还是谢谢你为紧张的考试带来一些轻松)
下面是考试题目中一些需要注意的内容(严肃脸):
①distance:需注意三点:一是编程中没有绝对值符号“||”,因此对于x1、x2、x3、x4的大小要分情况讨论;二是开方时一定要记得加double,如double x=sqrt(double(哇啦哇啦))(或乘1.0也ok);三是一定要记得输入对应的库!!!(划重点)(如保留小数、开方)
1 #include<iostream> 2 #include<cstdio> 3 #include<iomanip> 4 #include<cmath> 5 using namespace std; 6 int main() 7 { 8 freopen("task.in","r",stdin); 9 freopen("task.out","w",stdout); 10 int x1,y1,x2,y2; 11 cin>>x1>>y1>>x2>>y2; 12 double m,n; 13 m=sqrt(double(((long long)x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))); 14 if(x1>=x2&&y1>=y2) {n=x1-x2+y1-y2;} 15 if(x1>=x2&&y1<y2) {n=x1-x2+y2-y1;} 16 if(x1<x2&&y1>=y2) {n=x2-x1+y1-y2;} 17 if(x1<x2&&y1<y2) {n=x2-x1+y2-y1;} 18 cout<<setiosflags(ios::fixed)<<setprecision(2); 19 cout<<m<<endl; 20 cout<<n<<endl; 21 return 0; 22 }
②snail(憋笑脸):这个题目有一个坑,即:若蜗牛在白天刚好到达洞口或出洞口,则晚上不再下滑,因此要恰当地在for循环里插入if。此题主要考察for(或while)循环与if的灵活运用,要对此题多加注意
1 #include<iostream> 2 //#include<cstdio> 3 using namespace std; 4 int main() 5 { 6 //freopen("snail.in","r",stdin); 7 //freopen("snail.out","w",stdout); 8 int D,a,b,h=0,day=0; 9 cin>>D>>a>>b; 10 if(D>a) 11 { 12 if(a<=b) 13 { 14 cout<<"bye bye"<<endl; 15 return 0; 16 } 17 else 18 while(h<D) 19 { 20 day++; 21 h=h+a; 22 if(h<D) h=h-b; 23 } 24 cout<<day<<endl; 25 return 0; 26 } 27 if(D<=a) cout<<1<<endl; 28 return 0; 29 }
③fivesort:作为附加题,这道题确实有一定的难度,我的思路是if与for循环的配合运用,然而,不会写……就只运用了if进行运算,步骤比较繁琐,仍需加强对这两个知识的掌握,if和for循环真的是编程中的重头戏
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 freopen("fivesort","r",stdin); 7 freopen("fivesort","w",stdout); 8 int a,b,c,d,e,temp; 9 cin>>a>>b>>c>>d>>e; 10 if(a>b) {temp=a; a=b; b=temp;} 11 if(a>c) {temp=a; a=c; c=temp;} 12 if(a>d) {temp=a; a=d; d=temp;} 13 if(a>e) {temp=a; a=e; e=temp;} 14 if(b>c) {temp=b; b=c; c=temp;} 15 if(b>d) {temp=b; b=d; d=temp;} 16 if(b>e) {temp=b; b=e; e=temp;} 17 if(c>d) {temp=c; c=d; d=temp;} 18 if(c>e) {temp=c; c=e; e=temp;} 19 if(d>e) {temp=d; d=e; e=temp;} 20 cout<<a<<' '<<b<<' '<<c<<' '<<d<<' '<<e<<endl; 21 return 0; 22 }
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 freopen("fivesort","r",stdin); 7 freopen("fivesort","w",stdout); 8 int a,b,c,d,e; 9 cin>>a>>b>>c>>d>>e; 10 for(int i=0;i<=1000;i++) 11 { 12 if(i==a) cout<<a<<' '; 13 if(i==b) cout<<b<<' '; 14 if(i==c) cout<<c<<' '; 15 if(i==d) cout<<d<<' '; 16 if(i==e) cout<<e<<' '; 17 } 18 return 0; 19 }
④task:这道题不难,主要运用if,提交之前多检查,注意库有没有正确输入
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 freopen("task.in","r",stdin); 7 freopen("task.out","w",stdout); 8 int a,b; 9 cin>>a>>b; 10 if(a+b<10) cout<<"water"<<endl; 11 if(a+b>=10&&a>b) cout<<"tree"<<endl; 12 if(a+b>=10&&a<=b) cout<<"tea"<<endl; 13 return 0; 14 }
血淋淋的教训:
①一定要记得输入对应的库!!!
②每个库各占一行,提交前仔细检查!!!
③有时两个不太大的数字相乘可能很大,要加long long或乘1.0,将其转化成小数再运算!!!
考试结束后接着刷题,进一步理解了多重循环,其运算步骤大致为:运算总的循环,接着运算循环中的循环,同样的,符合条件继续运算,不符合条件退出循环,直至循环中的循环运算完毕,退出循环中的循环,继续运算总的循环,若符合条件,重复以上步骤,反之退出总的循环
以下是刷到的一些有价值的题目:
①图形输出3:这个题目给了我一个教训,一定要细心细心再细心,提交了好几遍都显示TLE,最后才发现是把“i++”打成了“i=i++”,注意:“++”“--”系列不需再赋值,否则会陷入死循环(大概吧)
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int m; 6 cin>>m; 7 for(int i=1;i<=m;i++) 8 { 9 for(int j=1;j<=m-i;j++) {cout<<' ';} 10 for(int j=1;j<=2*i-1;j++) {cout<<'*';} 11 cout<<endl; 12 } 13 return 0; 14 }
②图形输出4:这是一道很有意思的题目,考察你对for循环的取值掌握以及耐心,解出此题需要编出正确的循环初值及取值范围,要有极大的耐心和对题目充分地理解,找出规律,并正确用读入值和变量将其表示出来
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 cin>>n; 7 for(int i=1;i<=n;i++) 8 { 9 for(int j=1;j<=n-i+1;j++) cout<<' '; 10 for(int k=1;k<=2*i-1;k++) cout<<i; 11 cout<<endl; 12 } 13 for(int i=1;i<=n-1;i++) 14 { 15 for(int j=i+1;j>=1;j--) cout<<' '; 16 for(int k=2*n-1;k>=2*(i+1)-1;k--) cout<<n-i; 17 cout<<endl; 18 } 19 return 0; 20 }
努力就有进步,坚持必定成功
加油!共勉!