hdu oj最基础50题(2020-2029题)

hdu oj最基础100题(2020-2029题)

题目地址:http://acm.hdu.edu.cn/listproblem.php?vol=11

本博文旨在帮助部分跨考生从初试踏入复试,大家加油hhhhh

本内容编写过程中仅使用最基本的c语言知识,不使用c++库

2020.绝对值排序

#include<stdio.h>
#include<math.h>
#include<string.h>

// 交换
void swap(int &x, int &y){
    int tmp = x;
    x = y;
    y = tmp;
}

// 数组分割为2部分
int patition(int *a, int low, int high){
    int tmp = a[low]; //取当前区域最左边为基准元素
    while (low < high) {
        // 当队尾的元素小于等于基准数据时,向前挪动high指针
        while (low < high && abs(a[high]) <= abs(tmp)) {
            high--;
        }
        // 如果队尾元素小于tmp了,需要将其赋值给low
        a[low] = a[high];
        // 当队首元素大于等于tmp时,向前挪动low指针
        while (low < high && abs(a[low]) >= abs(tmp)) {
            low++;
        }
        // 当队首元素大于tmp时,需要将其赋值给high
        a[high] = a[low];

    }
    // 跳出循环时low和high相等,此时的low或high就是tmp的正确索引位置
    // 由原理部分可以很清楚的知道low位置的值并不是tmp,所以需要将tmp赋值给a[low]
    a[low] = tmp;
    return low; // 返回tmp的正确位置
}

// 快速排序
void quickSort(int *a, int left, int right){
    if(left >= right) return;

    int mid = patition(a, left, right);
    quickSort(a, left, mid - 1);
    quickSort(a, mid + 1, right);
}

int main(){

    int n;
    int a[105];
    while(~scanf("%d", &n), n){
        memset(a,0,sizeof(a));
        for(int i=0;i<n;i++){
            scanf("%d", &a[i]);
        }
        quickSort(a, 0, n - 1);
        for(int i=0;i<n;i++){
            if(i == n - 1) printf("%d\n", a[i]);
            else printf("%d ", a[i]);
        }
    }

    return 0;
}

2021.发工资咯:)

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    int n;
    int a[6] = {100, 50, 10, 5, 2, 1};
    while(~scanf("%d", &n), n){
        int ans = 0, tmp, x;
        for(int i=0;i<n;i++){
            tmp = 0;
            scanf("%d", &x);
            for(int j=0;j<6;j++){
                tmp = tmp + x / a[j];
                x = x % a[j];
            }
            ans = ans + tmp;
        }
        printf("%d\n", ans);
    }

    return 0;
}

2022.海选女主角

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    int n, m;

    while(~scanf("%d %d", &n, &m)){
        int x, y, tmp = 0;
        int a[105][105];
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                scanf("%d", &a[i][j]);
                if(tmp < abs(a[i][j])){
                   tmp = abs(a[i][j]);
                   x = i;
                   y = j;
                }
            }
        }
        printf("%d %d %d\n", x, y, a[x][y]);

    }

    return 0;
}

2023.求平均成绩

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    int n, m;
    // a记录每个学生每门课的成绩,b记录每门课的平均成绩, c记录每个人平均分
    double a[55][6], b[6], c[55];
    int flag, ans;
    while(~scanf("%d %d", &n, &m)){
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        memset(c, 0, sizeof(c));
        ans = 0;

        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                scanf("%lf", &a[i][j]);
                b[j] = b[j] + a[i][j];
            }
        }

        for(int i=0;i<m;i++){
            b[i] = b[i] / n;
        }

        // flag标记是否各科成绩均大于等于平均成绩
        for(int i=0;i<n;i++){
            flag = 0;
            for(int j=0;j<m;j++){
                if(a[i][j] < b[j]) flag = 1;
                c[i] = c[i] + a[i][j];
            }
            c[i] = c[i] / m;
            if(!flag) ans++;
        }

        for(int i=0;i<n;i++){
            if(i == n - 1) printf("%.2lf\n", c[i]);
            else printf("%.2lf ", c[i]);
        }

        for(int i=0;i<m;i++){
            if(i == m - 1) printf("%.2lf\n", b[i]);
            else printf("%.2lf ", b[i]);
        }
        printf("%d\n\n", ans);

    }

    return 0;
}

2024.C语言合法标识符

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    // 当前main.cpp目录下读取in,txt中的输入
    // freopen("in.txt","r",stdin);

    int n;

    while(~scanf("%d", &n)){
        // 吃掉输入的回车
        getchar();

        char s[105];
        for(int k=0;k<n;k++){
            gets(s);
            int len = strlen(s);
            int flag = 0;
            if((s[0]<='z' && s[0]>='a') || (s[0]<='Z' && s[0]>='A') || s[0] == '_'){
                flag = 1;
                for(int i=1;i<len;i++){
                    if((s[i]<='z' && s[i]>='a') || (s[i]<='Z' && s[i]>='A') || s[i] == '_' || (s[i]<='9' && s[i]>='0') ) ;
                    else flag = 0;
                }
            }

            if(flag) printf("yes\n");
            else printf("no\n");
        }

    }

    return 0;
}

2025.查找最大元素

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    int n;
    char s[1005], maxx;
    while(~scanf("%s", s)){
        maxx = 'a';
        int len = strlen(s);
        for(int i=0;i<len;i++){
            if((s[i] - 'a') > (maxx - 'a')) maxx = s[i];
        }
        for(int i=0;i<len;i++){
            if(s[i] == maxx) printf("%c(max)",s[i]);
            else printf("%c",s[i]);
        }
        printf("\n");
    }

    return 0;
}

2026.首字母变大写

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    // 当前main.cpp目录下读取in,txt中的输入
    // freopen("in.txt","r",stdin);

    char s[105];
    while(gets(s)){
        int len = strlen(s);
        s[0] = s[0] + ('A' - 'a');
        for(int i=1;i<len;i++){
            if((s[i] <= 'z' && s[i] >= 'a') && s[i - 1] == ' ') s[i] = s[i] + ('A' - 'a');
        }
        puts(s);
    }

    return 0;
}

2027.统计元音

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    // 当前main.cpp目录下读取in,txt中的输入
    // freopen("in.txt","r",stdin);

    int n;
    char s[105];
    int a[6];
    char t[6] = {'a', 'e', 'i', 'o', 'u'};
    while(~scanf("%d", &n)){
        getchar();
        for(int k=0;k<n;k++){
            memset(a, 0, sizeof(a));
            gets(s);
            int len = strlen(s);
            for(int i=0;i<len;i++){
                for(int j=0;j<5;j++){
                    if(s[i] == t[j]) a[j]++;
                }
            }
            for(int i=0;i<5;i++){
               printf("%c:%d\n", t[i], a[i]);
            }
            if(k != n - 1) printf("\n");
        }
    }

    return 0;
}

2028.Lowest Common Multiple Plus

#include<stdio.h>
#include<math.h>
#include<string.h>

typedef long long ll;

ll gcd(ll a,ll b){
	return b == 0 ? a : gcd(b,a%b);
}

ll lcm(ll a,ll b){
	return a*b/gcd(a,b);
}

int main(){

    // 当前main.cpp目录下读取in,txt中的输入
    // freopen("in.txt","r",stdin);

    ll n, ans, x;
    while(~scanf("%lld", &n)){
        scanf("%lld", &ans);
        for(int i=0;i<n-1;i++){
            scanf("%lld", &x);
            ans = lcm(ans, x);
        }
        printf("%lld\n", ans);
    }

    return 0;
}

2029.Palindromes _easy version

#include<stdio.h>
#include<math.h>
#include<string.h>

int main(){

    // 当前main.cpp目录下读取in,txt中的输入
    // freopen("in.txt","r",stdin);

    int n;
    while(~scanf("%d", &n)){
        char s[105];
        for(int k=0;k<n;k++){
            scanf("%s", s);
            int len = strlen(s), flag = 1;
            for(int i=0,j=len-1;i<j;i++,j--){
                if(s[i] == s[j]) continue;
                else{
                    flag = 0;
                    break;
                }
            }
            if(flag) printf("yes\n");
            else printf("no\n");
        }
    }
    
    return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值