C语言:初阶测试错题(查漏补缺)

题一:字符串倒置

示例1

输入

复制代码
I like beijing.

输出

复制代码
beijing. like I 

思路一:

定义字符串数组arr[ ] ,利用gets()将要倒置的字符串输入,记录字符串长度len ,此时写一个逆置函数Inversion() ,第一步将整个字符串逆置 ,然后再定义开始节点指针start() ,和走动节点指针cur() ,第二步:循环每次逆置一个单词,最后打印字符串。

cpp 复制代码
#include <stdio.h>
//字符串逆置
void Inversion(char* left, char* right) {
    while (left < right)
    {
        char* tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
int main() 
{
    //初始化
    char arr[100] = { 0 };
    gets(arr);
    int len = strlen(arr);
    
    char* cur = arr;
    char* start = arr;
    Inversion(arr, arr + len - 1);
    //循环判断到结束
    while (*cur != '\0')
    {
        //每次逆置一个单词
        while (*cur != ' ' && *cur != '\0')
        {
                cur++;
        }
        Inversion(start, cur - 1);
        start = cur + 1;
        if (*cur == ' ')
            cur++;
    }
    printf("%s", arr);
    return 0;
}

题二:最小公倍数

示例1

输入

复制代码
6 4

输出

复制代码
12

思路一:

如下图: 明确思路(由于题目有时间复杂度,要求在牛客中此解法才通过,正常暴力解发时间复杂度超过题目限制)。

cpp 复制代码
#include <stdio.h>

int main() 
{
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF)
    {
        int i = 1;
        while (i)
        {
            if ((a * i % b) == 0)
            {
                printf("%d", a * i);
                break;
            }
            i++;
        }
    }
    return 0;
}

本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵!

相关推荐
ii_best1 分钟前
安卓/ios脚本开发辅助工具按键精灵横纵坐标转换教程
android·开发语言·ios·安卓
努力学算法的蒟蒻6 分钟前
day57(1.8)——leetcode面试经典150
算法·leetcode·面试
言之。6 分钟前
大模型 API 中的 Token Log Probabilities(logprobs)
人工智能·算法·机器学习
SoveTingღ10 分钟前
【C语言】什么是野指针?
c语言·指针·嵌入式软件
Cigaretter713 分钟前
Day 38 早停策略和模型权重的保存
python·深度学习·机器学习
a31582380613 分钟前
Android 大图显示策略优化显示(二)
android·java·开发语言·javascript·kotlin·glide·图片加载
自然数e17 分钟前
c++多线程【多线程常见使用以及几个多线程数据结构实现】
数据结构·c++·算法·多线程
黛色正浓20 分钟前
leetCode-热题100-普通数组合集(JavaScript)
java·数据结构·算法
元亓亓亓24 分钟前
LeetCode热题100--5. 最长回文子串--中等
linux·算法·leetcode
月明长歌24 分钟前
Java多线程线程池ThreadPoolExecutor理解总结:6 个核心参数 + 4 种拒绝策略(附完整示例)
java·开发语言