杭电刷题合集:2021-2030

2021

#include<iostream>

using namespace std;
//100 50 10 5 2 1
//这个问题其实不用if
int main() {
    int n;
    while(cin>>n,n){
        int sum=0;
        while(n--){ 
            int x;
            cin>>x;
            int count=0;
            
            count+=x/100;
            x=x%100;  

            count+=x/50;
            x=x%50;
            
            count+=x/10;
            x=x%10;
            
            count+=x/5;
            x=x%5;
            
            count+=x/2;
            x=x%2;

            count+=x;
            sum+=count;
        }
        cout << sum << endl;
    }
    return 0;
}

2022

#include<iostream>
#include<cmath>
using namespace std;

int main() {
    int m,n,x,y;
    long long int num;
    
    while(cin>>m>>n){
        long long int max=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                cin>>num;
                if(abs(num)>abs(max)) {
                    max=num;
                    x=i;
                    y=j;
                }
            }
        }
        cout << x+1<<" "<<y+1 <<" "<<max<< endl;
    }
    return 0;
}

 2023

这个好像不是。。。

#include<iostream>
//累了。。。
using namespace std;
int q[55][6],a[55][6],b[55][6];
int main() {
    int n,m;
    int sum;
    while(cin>>n>>m){
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                cin>>q[i][j];
                sum+=q[i][j];
            }
        }
    }
    return 0;
}

 这个是

 
#include<iostream>
#include<iomanip>
using namespace std;
 
int main()
{
    int n, m ;
    while (cin >> n >> m)
    {
        int sum = 0,map[51][6] = { 0 };
        for (int i = 0; i < n;i++)
        for (int j = 0; j < m; j++)
        {
            cin >> map[i][j];
            map[i][m] += map[i][j];
            map[n][j] += map[i][j];
        }
        for (int i = 0; i < n-1; i++)
            cout << fixed << setprecision(2) << (double)map[i][m] / m<<' ';  ///56654654
        cout << fixed << setprecision(2) << (double)map[n-1][m] / m << endl;
 
        for (int j = 0; j < m-1; j++)
            cout << fixed << setprecision(2) << (double)map[n][j] / n<<' ';
        cout << fixed << setprecision(2) << (double)map[n][m - 1] / n << endl;
        for (int i = 0; i < n; i++)
        {
            bool sign = true;
            for (int j = 0; j < m; j++)
            if (map[i][j] < (double)map[n][j]/n)
                sign = false;
            if (sign)
                sum++;
        }
        cout << sum << endl << endl;
    }
}

2024

涉及字符串的就感觉不会了,这个也有点问题

#include<stdio.h>
#include<string.h>
int main() {
    char a[100],c;
    int n;
    scanf("%d",&n);
    getchar();
    for(int i=0; i<n; i++) {
        int k=0;
        gets(a);
        if(a[0]<'A'||a[0]>'Z'&&a[0]<'_'||a[0]>'_'&&a[0]<'a'||a[0]>'z')
            printf("no\n");
        else {
            for(int j=0; j<strlen(a); j++) {
                if(a[j]>='0'&&a[j]<='9'||a[j]>='A'&&a[j]<='Z'||a[j]=='_'||a[j]>='a'&&a[j]<='z')
                    k++;
                else
                    break;
            }
            if(k==strlen(a))
                printf("yes\n");
            else
                printf("no\n");
        }
    }
    return 0;
}

 2025

#include<iostream>
#include<string>
//好了,破案了
//杭电评测过不了string.h
//只能用string库
using namespace std;
//A小 65
//a大,97
int main(){
    string s;
    int n;
    while(cin>>s){
        char ch[100];
        strcpy(ch,s.c_str());
        n=s.size();
        char max=ch[0];
        for(int i=0;i<n;i++){
            if(ch[i]>max){
                max=ch[i];
            }
        }
        for(int i=0;i<n;i++){
            cout<<ch[i];
            if(ch[i]==max){
                cout<<"(max)";
            }
        }
        cout<<endl;
    }
    return 0;
}

2026

#include<iostream>
#include<string>
using namespace std;

int main() {
    string s;
    while(getline(cin,s)){
        int n=s.size();
        s[0]=s[0]-32;
        for(int i=0;i<n;i++){
            if(s[i]==' ') s[i+1]=s[i+1]-32;
        }
        
        cout << s << endl;
    }
    return 0;
}

2027

这个也有点问题

有些字符串的输入我不了解

#include <stdio.h>
int main()
{
        int n;
        char x,enter;
        scanf("%d%c",&n,&enter);
        while (n--)
        {
        int a=0,e=0,i=0,o=0,u=0;
        while (scanf("%c",&x)!=EOF&&(x!='\n'))
        {
                if (x=='a')  a++;
                if (x=='e')  e++;
                if (x=='i')  i++;
                if (x=='o')  o++;
                if (x=='u')  u++;
        }
        printf("a:%d\n",a);
        printf("e:%d\n",e);
        printf("i:%d\n",i);
        printf("o:%d\n",o);
        printf("u:%d\n",u);
        if(n)
        printf("\n"); //注意输出格式
        }
}

2028

#include<iostream>
//复习题轻松拿下
using namespace std;
int gcd(int a,int b){
    if(a%b==0) return b;
    else return gcd(b,a%b);
}
int main() {
    int n;
    int res;
    while(cin>>n){
        int x;
        res=1;
        while(n--){
            cin>>x;
            res=res/gcd(x,res)*x;
        }
        cout << res << endl;
    }
    return 0;
}

2029

#include<bits/stdc++.h>
#include<iostream>
//以后就用G++
using namespace std;
bool is(string s){
    int l=0,r=s.size()-1;
    while(l<r){
        if(s[l]!=s[r]) return false;
        l++;
        r--;
    }
    return true;
}
int main() {
    int n;
    string s;
    cin>>n;
    getchar();
    while(n--){
        getline(cin,s);
        if(is(s)) cout << "yes" << endl;
        else cout << "no" << endl;
    }
    return 0;
}

2030

这个C语言版本的过了,但是底下C++版本就过不了

#include <stdio.h>
#include <string.h>
//程序说明:%*c用来接收多余的字符‘\n’,暴力扫描。
//不会用gets和C,抄了一个
int main()  
{
	int n,ch=0;
	int i,j;
	char s[1000];
	scanf("%d%*c",&n);
	for(i=0;i<n;i++)
	{
		ch=0;
		gets(s);
		for(j=0;j<strlen(s);j++)
		{
			if(s[j]<0||s[j]>127)
			{
				ch++;
			}
		}
		printf("%d\n",ch/2);
	}
	return 0;
}  
#include<bits/stdc++.h>
#include<iostream>
//汉字用两字节表示
//第一个字节是负的,第二个是大于127的
using namespace std;

int main() {
    int n;
    string str;
    cin>>n;
    while(n--){
        getline(cin,str);
        int n=str.size();
        int count=0;
        for(int i=0;i<n;i++){
            if(str[i]<0 || str[i]>127){
                count++;
            }
        }
        printf("%d\n",count/2);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值