错题1章节四 T046T046

错因:忘记把小时超过24要减写上了.

正确思路:先思考有多少特殊的情况比如说:小时数超过24,分钟数超过60这样,之后再一一排查计算.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string time;
    int l,h,m;
    cin>>time;
    cin>>l;
    h=(time[0]-48)*10+time[1]-48;
    m=(time[3]-48)*10+time[4]-48;
    if(l/60>=1){
    	h+=l/60;
	}
	m+=l%60;
	if(m>=60){
		m=m-60;
		h++;
	}
	while(h>=24){
		h-=24;
	}
	if(h<10){
		cout<<0<<h<<":";
	}else{
		cout<<h<<":";
	}
	if(m<10){
		cout<<0<<m;
	}else{
		cout<<m;
	}
    return 0;
}

错题2章节四 T051T051

错因:没仔细看题目,把t>d写的是t>=d.

正确思路:先仔细看题目,审请出判断条件比如:文章中说的是橙子的大小必须不超过b,应为"<=".

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,b,d,a,c=0,t=0;
    cin>>n>>b>>d;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
    	a=x;
        if(a<=b){
			t+=a;
			if(t>d){
				c++;
				t=0;
			}
		}
	}
	cout<<c;
}

错题3章节四 T028T028

正确思路:每遇到三个负数,就新开一个文件夹,将第三个负数放入其中,以此类推,即可得到答案.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,neg=0,len=1,s[105]={};
    cin>>n;
    for(int i=1;i<=n;i++){
    	int x;cin>>x;
    	if(x<0){
    		neg++;
		}
		if(neg==3){
			len++;
			neg=1;
		}
		s[len]++;
	}
	cout<<len<<endl;
	for(int i=1;i<=len;i++){
		cout<<s[i]<<" ";
	}
	return 0;
}

错题4章节四 T025T025

正确思路:把每个数组中的数字遍历出来,之后通过一变量t来判断是否为"好数",是则c++.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int a[101],st[10];
int main(){
    int n,k,v,c=0,s=0,t;
    cin>>n>>k;
    for(int i=0;i<n;i++){
        for(int j=0;j<10;j++){
            st[j]=0;
        }
        for(int j=0;j<101;j++){
            a[j]=0;
        }
        c=0;
        cin>>v;
        while(v){
            a[c++]=v%10;
            v/=10;
        }
        t=1;
        for(int j=0;j<c;j++){
            st[a[j]]=1;
        }
        for(int j=0;j<=k;j++){
            if(!st[j]){
            	t=0;
			}
        }
        if(t){
        	s++;
		}
    }
    cout<<s;
    return 0;
}

错题5章节四 T066T066

错因:"YES"和"NO"没全部大写.

正确思路:与T028类似,此题无非是碰到和为0就需要分裂. 只有两种情况:和为0和和不为0.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[101],v=0;
    cin>>n;
    for(int i=0;i<n;i++){
    	cin>>a[i];
	}
	for(int i=0;i<n;i++){
    	v+=a[i];
	}
	if(v==0){
		v=0;
		for(int i=0;i<n;i++){
    		v+=a[i];
    		if(v!=0){
    			cout<<"YES"<<endl<<2<<endl<<1<<" "<<i+1<<endl<<i+2<<" "<<n;
    			return 0;
			}
		}
	}else{
    	cout<<"YES"<<endl<<1<<endl<<1<<" "<<n;
    	return 0;
	}
	cout<<"NO";
	return 0;
}