杭州oj2021-2025

2021题

建立一个储存工资的表,然后把工资拆分成若干张不同面值的钱,然后输出总共多少张。

#include<stdio.h>
#include <math.h>
int main()
{
    int people,i;
    while(scanf("%d",&people)!=EOF)
    {   if(people==0){return 0;}
        int money[people];
        int baiyuan=0,wushi=0,wuyuan=0,liangyuan=0,yiyuan=0,shiyuan=0;
        for(i=0;i<people;i++)
        {
            
            scanf("%d",&money[i]);
            baiyuan+=money[i]/100;
            wushi+=(money[i]%100)/50;
            shiyuan+=((money[i]%100)%50)/10;
            wuyuan+=((((money[i]%100)%50))%10)/5;
            liangyuan+=(((((money[i]%100)%50))%10)%5)/2;
            yiyuan+=(((((money[i]%100)%50))%10)%5)%2;
        }
        printf("%d\n",baiyuan+wuyuan+wushi+shiyuan+liangyuan+yiyuan);
    }
  return 0;
}

2022题

建立一个二维数组来储存得分,然后再对数组中的数进行绝对值比较,保留绝对值最大的数的下标,输出下标和原数组的数。

#include<stdio.h>
#include <math.h>
int main()
{
    int m,n,i,j,b,a=-1,c;
    while(scanf("%d %d",&n,&m)!=EOF)
    {   int shuzu[n][m];
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
            scanf("%d",&shuzu[i][j]);
            }
        }
        b=abs(shuzu[0][0]);
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                if(abs(shuzu[i][j])>b)
                {
                     b=abs(shuzu[i][j]);
                }
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                if(abs(shuzu[i][j])==b)
                {
                     a=i;c=j;
                     break;
                }
            }
            if(a>=0){break;}
        }
        printf("%d %d %d\n",a+1,c+1,shuzu[a][c]);
        a=-1;
    }
  return 0;
}

2023题

建立一个二维的数组来储存每个学生的成绩,再分别对每行和每列求平均值,最后在拿成绩平均值和每个学生的成绩进行比较找出都超过平均分的人。

#include<stdio.h>
#include <math.h>
int main()
{
    int subject,student,i,j;
    while(scanf("%d %d",&student,&subject)!=EOF)
    {   int shuzu[student][subject];
        double avg_student[student],avg_subject[subject];
        int good_student=0,count=0;
        double sum_student=0,sum_subject=0;
        for(i=0;i<student;i++)
        {
            for(j=0;j<subject;j++)
            {
               scanf("%d",&shuzu[i][j]);
               sum_student+=shuzu[i][j];
            }
            avg_student[i]=sum_student/subject;
            sum_student=0;
            if(i==student-1){printf("%.2f",avg_student[i]);}
            else{printf("%.2f ",avg_student[i]);}
        }printf("\n");
         for(i=0;i<subject;i++)
        {
            for(j=0;j<student;j++)
            {
               sum_subject+=shuzu[j][i];
            }
            avg_subject[i]=sum_subject/student;
            sum_subject=0;if(i==subject-1){printf("%.2f",avg_subject[i]);}
            else{printf("%.2f ",avg_subject[i]);}
        }printf("\n");
         for(i=0;i<student;i++)
        {
            for(j=0;j<subject;j++)
            {
               if(shuzu[i][j]<avg_subject[j]){count++;}
            }
            if(count==0){good_student++;}
            count=0;
        }
          printf("%d\n",good_student);
           good_student=0;
           printf("\n");
   }
   return 0;
}

2024题

建立一个数组来储存字符串,如果直接用scanf来储存字符串的话是储存不了空格的,所以我这边选择的是一个字符一个字符的存,换行号为结束语,然后对每个字符进行筛选,判断符合不符合常规。如果全部符合,则输出yes。

在准备输入字符串时,要用一个getchar()去收集scanf(“%d”,&n)遗留下来的换行符,不然会多一个换行符。

#include<stdio.h>
int main()
{
    int n,len=0,count=0,i,j;
    char shuzu[51],c;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        len=0;
        for (j=0; (c = getchar() )!= '\n'; j++)
        {
            shuzu[j] = c;
            len++;
        }
        count=0;
        for(j=0;j<len;j++)
        {
            if(!(shuzu[0]>='0'&&shuzu[0]<='9')&&   
                (
                (shuzu[j]>='A'&&shuzu[j]<='Z')||  
                (shuzu[j]>='a'&&shuzu[j]<='z')||
                 shuzu[j]=='_'||(shuzu[j]>='0'&&shuzu[j]<='9') 
                )
              ) 
                count++;
            else
                count--;
        }        
        if(count==len)
            printf("yes\n");
        else
            printf("no\n");    
    }
    return 0;
}

2025题

先建立一个字符串数组,然后寻找字符串中最大的字符,之后再输出字符串的时候每遇到最大的字符就输出一次(max)即可。

#include<stdio.h>
#include <cstring>
int main()
{
    char cha[101];
    char max;
    int len,i,flag;
    while(scanf("%s",&cha)!=EOF)
    {
       len=strlen(cha);
       max=cha[0];
       for(i=0;i<len;i++)
       {
           if(cha[i]>max)
           {
               max=cha[i];
           }
       }
       for(i=0;i<len;i++)
       {
           printf("%c",cha[i]);
           if(cha[i]==max)
           {
              printf("(max)");
           }
       }
       printf("\n");
    }
return 0;
}
​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值