首页 > 其他分享 >MT1351-MT1360 码题集 (c 语言详解)

MT1351-MT1360 码题集 (c 语言详解)

时间:2024-10-14 20:47:39浏览次数:9  
标签:int MT1351 char 二进制 MT1360 str 码题 include change

MT1351·用函数判断素数

c 语言代码实现

#include <stdio.h>
int isPrime(int num) {
    if (num <= 1)
        return 0;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}
int main() {
    int num;
    scanf("%d", &num);
    if (isPrime(num)) {
        printf("Y");
    } else {
        printf("N");
    }
    return 0;
}

MT1352·埃拉托色尼筛选法

c 语言代码的实现

#include <stdio.h>
int isPrime(int num) {
    if (num <= 1)
        return 0;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}
int main() {
    int right;
    scanf("%d", &right);
    for (int i = 2; i <= right; i++) {
        if (isPrime(i) == 1) {
            printf("%d ", i);
        }
    }
    return 0;
}

 MT1353·找零

c 语言实现代码

#include <stdio.h>

// 定义人民币面值
int denominations[] = {50, 20, 10, 5, 2, 1};

// change函数:计算最少的张数来找零
void change(int m, int c) {
    int change_amount = c - m; // 计算找零的金额
    int total_notes = 0; // 记录使用的人民币张数

    for (int i = 0; i < 6; i++) {
        // 计算当前面值需要多少张
        int num_notes = change_amount / denominations[i];
        total_notes += num_notes; // 加入总的张数
        change_amount -= num_notes * denominations[i]; // 更新剩余需要找零的金额
    }

    printf("%d\n", total_notes); // 输出找零的总张数
}

int main() {
    int m, c;
    
    // 输入商品价格和顾客付款
    scanf("%d %d", &m, &c);
    
    // 调用change函数,输出最少的张数
    change(m, c);
    
    return 0;
}

MT1354·购物

c 语言代码实现

#include <stdio.h>

void change(double m, double c) {
    int denominations[] = {5000, 2000, 1000, 500, 200, 100,
                           50,   20,   10,   5,   2,   1};
    int num_denominations = sizeof(denominations) / sizeof(denominations[0]);

    int change_amount = (int)((c - m) * 100 + 0.5);
    int total_notes = 0;
    for (int i = 0; i < num_denominations; i++) {
        if (change_amount <= 0) {
            break;
        }
        total_notes += change_amount / denominations[i];
        change_amount %= denominations[i];
    }
    printf("%d\n", total_notes);
}

int main() {
    double m, c;
    scanf("%lf %lf", &m, &c);
    change(m, c);
    return 0;
}

 MT1355·稀疏二进制

c 语言代码实现

#include <stdio.h>

// 判断一个数的二进制是否为稀疏二进制
int isSparse(int n) {
    // 检查 n 的二进制表示中是否有连续的 1
    return (n & (n >> 1)) == 0;
}
// 查找下一个稀疏二进制
int nextSparse(int n) {
    while (!isSparse(n)) {
        n++;
    }
    return n;
}

int main() {
    int n;
    scanf("%d", &n);
    if (isSparse(n)) {
        printf("%d", n);
    } else {
        int sparseNumber = nextSparse(n + 1);
        printf("%d", sparseNumber);
    }
    return 0;
}

 MT1356·二进制回文

c 语言代码实现

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

// 函数:将整数转换为二进制字符串
char* intToBinaryString(int n) {
    // 计算二进制字符串的长度
    int length = sizeof(n) * 8; // 32位整数
    char* binaryString = (char*)malloc(length + 1); // +1 为了存储结束符
    if (binaryString == NULL) {
        return NULL; // 内存分配失败
    }

    // 将整数转换为二进制字符串
    for (int i = 0; i < length; i++) {
        binaryString[length - 1 - i] = (n & (1 << i)) ? '1' : '0';
    }
    binaryString[length] = '\0'; // 添加字符串结束符

    // 去掉前导零
    char* start = binaryString;
    while (*start == '0' && *(start + 1) != '\0') {
        start++;
    }
    
    // 返回去掉前导零后的字符串
    char* result = strdup(start);
    free(binaryString); // 释放原始字符串内存
    return result;
}

// 函数:判断字符串是否为回文
int isPalindrome(const char* str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - 1 - i]) {
            return 0; // 不是回文
        }
    }
    return 1; // 是回文
}

int main() {
    int N;
    scanf("%d", &N);
    
    // 将整数转换为二进制字符串
    char* binaryString = intToBinaryString(N);
    if (binaryString == NULL) {
        printf("内存分配失败\n");
        return 1;
    }

    // 判断二进制字符串是否为回文
    if (isPalindrome(binaryString)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }

    // 释放内存
    free(binaryString);
    return 0;
}

MT1357·高低交换

 

c 语言代码实现

#include <stdio.h>

// 函数:交换n的高四位和低四位
unsigned char change(unsigned char n) {
    // 取高4位并移动到低4位
    unsigned char high = (n >> 4);
    // 取低4位并移动到高4位
    unsigned char low = n << 4;
    // 返回低四位和高四位交换后的结果
    return low | high;
}

int main() {
    unsigned char n;

    // 输入一个unsigned char类型的数据
    scanf("%hhu", &n);

    // 调用函数交换高四位和低四位
    unsigned char result = change(n);

    // 输出交换后的结果
    printf("%hhu\n", result);

    return 0;
}

MT1358·第k位

c 语言代码实现

#include <stdio.h>

// 函数:获取 n 的二进制表示中从右边开始的第 k 位
int getbit(int n, int k) {
    // 右移 k-1 位,将第 k 位移到最右侧,然后与 1 进行按位与操作
    return (n >> (k - 1)) & 1;
}

int main() {
    int n, k;

    // 输入整数 n 和 k
    scanf("%d %d", &n, &k);

    // 调用函数获取 n 的第 k 位
    int bit = getbit(n, k);

    // 输出结果
    printf("%d\n", bit);

    return 0;
}

MT1359·循环移位

 

c 语言代码实现

#include <stdio.h>

// 定义移位函数
unsigned move(unsigned value, int n) {
    // 确保 value 是 4 位二进制数,即只保留低 4 位
    value = value & 0xF; // 0xF 表示二进制的 1111,只保留低 4 位

    // 获取 4 位二进制的总位数
    int bits = 4;

    // 处理左移 (n < 0)
    if (n < 0) {
        n = -n; // 将负数转换为正数
        n = n % bits; // 处理 n 大于 4 的情况,取模 4
        return ((value << n) | (value >> (bits - n))) & 0xF; // 循环左移
    } 
    // 处理右移 (n > 0)
    else if (n > 0) {
        n = n % bits; // 处理 n 大于 4 的情况,取模 4
        return ((value >> n) | (value << (bits - n))) & 0xF; // 循环右移
    }
    
    // 如果 n == 0,不做移位
    return value;
}

int main() {
    unsigned value;
    int n;

    // 输入要操作的 value 和移位的位数 n
    scanf("%u %d", &value, &n);

    // 调用 move 函数执行移位操作
    unsigned result = move(value, n);

    // 输出移位结果
    printf("%u\n", result);

    return 0;
}

MT1360·左右函数 

c 语言代码实现

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

#define MAX_LENGTH 100 // 定义最大字符串长度

// 函数:复制字符串的最左边3个字符
void left(const char* str) {
    char leftPart[4]; // 3个字符 + 1个结束符
    strncpy(leftPart, str, 3); // 复制最左边3个字符
    leftPart[3] = '\0'; // 添加字符串结束符
    printf("%s\n", leftPart);
}

// 函数:复制字符串的最右边3个字符
void right(const char* str) {
    char rightPart[4]; // 3个字符 + 1个结束符
    int len = strlen(str);
    
    // 复制最右边3个字符
    if (len >= 3) {
        strncpy(rightPart, str + len - 3, 3); // 从倒数第3个字符开始复制
    } else {
        strncpy(rightPart, str, len); // 如果字符串长度小于3,复制整个字符串
    }
    rightPart[3] = '\0'; // 添加字符串结束符
    printf("%s\n", rightPart);
}

int main() {
    char str[MAX_LENGTH];
    
    fgets(str, MAX_LENGTH, stdin); // 使用 fgets 读取字符串
    str[strcspn(str, "\n")] = '\0'; // 去掉换行符

    // 调用函数
    left(str);
    right(str);
    
    return 0;
}

标签:int,MT1351,char,二进制,MT1360,str,码题,include,change
From: https://blog.csdn.net/xinfanyyds/article/details/142905169

相关文章

  • MT1311-MT1320 码题集 (c 语言详解)
    MT1311·组数c语言实现代码#include<stdio.h>intmain(){intcount=0;//用来记录个数//遍历所有可能的三位数//外层循环:遍历第一位范围是1~9确保第一位不能为0for(inti=1;i<=9;i++){//中层循环:遍历第二位范围是0......
  • MT1301-MT1310 码题集 (c 语言详解)
    MT1301·1的补码c语言代码实现#include<stdio.h>intmain(){longn=0;longb=0;scanf("%ld",&n);inti=0;//while(b<n){b=b*16+0xf;}printf("%ld",b-n);return......
  • P1928 外星密码题解
    初看这题时,感觉就是一个简简单单的递归,便有了以下代码:#include <bits/stdc++.h>using namespace std;string re(){    string s="",s1="";    char c;    int n;    while(cin>>c){        if(c=='['){            cin>>n;......
  • 面试速通-SQL编码题
    〇、前话SQL题是数据相关的面试无可避免的小BOSS,虽然不同公司面试出题会披上不同的马甲,侧重各异,但总结起来题型就是那4、5种。下面让我们花上几分钟一起来通关它吧!一、连续日期计算1,例题表字段:用户ID,账户余额,系统余额日期。求出余额大于1000的用户的最大连续天数。2,解题要......
  • 【码题集】习题
    目录史莱姆融合松鼠接松果 新月轩就餐 史莱姆融合根据题意就是一道集合合并的题,所以要用并查集,不过最后我们要输出整个序列,所以要在合并的时候维护一个链表,以便最终合并成一个大集合的时候,输出整个链表就是答案。不过这里有一点要注意,就是我们在更新链表的时候是把......
  • 代码题答案
    importjava.util.Random;publicclassMain{publicstaticvoidcharCode(){StringBuildersb=newStringBuilder();Randomrandom=newRandom();for(inti=0;i<5;i++){intrandomCharType=random.nextlnt(2);/随机选择大小写if(randomCharType==0){/......
  • 【408精华知识】史上最全的数据结构代码题总结!三万字长文!!!
    关于数据结构代码题,可以说是让很多同学感到头疼了,书上的代码太繁琐、网上的总结不全面让大家对代码题感到云里雾里,那么这篇文章可能会给大家带来一点启发,因为我自己也是深受代码题的折磨,所以一直想写一篇有关它的总结,希望能够做到全面、简洁,让大家用最快的速度记住代码书......
  • 【MISC】一道假的二维码题目学习zxing库[python解读二维码]
    引言这道题目的考点是文件格式、双图差值、Ook!编码、PRC等,我做这题的重点是复习巩固python读取二维码zxing库的使用。例题┌───────────────────────────────────────────────────┐│马老师的秘籍......
  • 深度学习手撕代码题
    目录:目录PyTorch实现注意力机制、多头注意力与自注意力Numpy广播机制实现矩阵间L2距离的计算Conv2D卷积的Python和C++实现Numpy实现bbox_iou的计算Numpy实现FocallossPython实现nms、softnmsPython实现BN批量归一化PyTorch卷积与BatchNorm的融合分割网络损失函数......
  • C语言代码题
    C语言代码--练习题试写一个函数,计算字符串s中最大连续相同的字符个数。例如,若s为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。#include<stdio.h>/******************************************************************************functionname:max_sam......