例题:1.正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数 2.将一句话的单词进行倒置,单词之间空格,标点不倒置,字母不超100

简介: 例题:1.正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数 2.将一句话的单词进行倒置,单词之间空格,标点不倒置,字母不超100
#define _CRT_SECURE_NO_WARNINGS 1 
// &&并且   ||或者
//switch不一定需要default语句  if语句可以没有else
// 
//x,y均为double型, x=2;y=x+3/2;则y的值为       3.000000
//#include<stdio.h>
//int main()
//{
//    int x = 0; int y = 0;
//    for (x = 0, y = 0; (y = 123) && (x < 4); x++)//一个等号是赋值
//        ;
//
//    return 0;
//}
//以上循环进行四次
//选择表达式     11||10的结果为
//11为00000000000000000000000000001101
//10为00000000000000000000000000001100按位或
//    00000000000000000000000000001101   为11
//char a; int b; float c; double d;计算结果为double型
//正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数
//要求:输入正整数A B    输出A和B的最小公倍数
//思路1:公倍数min必须能整除a,b。。并且最小公倍数应最小比a,b中最大的数大,从a,b中最大的数开始++
//#include<stdio.h>
//int main()
//{
//    int a = 0;
//    int b = 0;
//    scanf("%d %d", &a, &b);
//    int min = a > b ? a : b;//min为最小公倍数 a > b ? a : b含义为      如果a>b,则将a赋给min,否则将b赋给min
//    while (1)
//    {
//        if (min % a == 0 && min % b == 0)
//        {
//            printf("%d", min);
//            break;
//        }
//        min++;
//    }
//    return 0;
//}
//思路2:公倍数min必须能整除a,b。。并且a与一个数相乘的结果除以b,直到能得到一个余数为0,即为最小公倍数
//#include<stdio.h>
//int main()
//{
//    int a = 0;
//    int b = 0;
//    scanf("%d %d", &a, &b);
//    int i = 1;
//    while (1)
//    {
//        if(a*i%b==0)
//        {
//            printf("%d", a * i);
//            break;
//        }
//        i++;
//    }
//    return 0;
//}
//将一句话的单词进行倒置,标点不倒置,如 I like Fanshabi. 经过函数变换.Fanshabi.like I
//输入要求,输入的字符串不能超过100 
//输出要求:依次输出倒置之后的字符串,以空格分隔将一句话的单词进行倒置,标点不倒置,如 I like Fanshabi. 经过函数变换.Fanshabi.like I
//思路:三步翻转法:
// 1.字符串整体翻转:
//2每个单词逆序:
void reverse(char*left, char*right)//实现所有字符串翻转部分: 定义两个空间right left并解地址
{
    while (left < right)
    {
        char tmp = 0;
        tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
#include<stdio.h>
int  main()
{
    char arr[100] = {0};
    //scanf("%s\n", &arr);//scanf不能有空格,否则打印的结果会中断,所以用gets函数
    gets(arr);//scanf不能有空格,否则打印的结果会中断,所以用gets函数
    int len = strlen(arr);//求字符串长度,放在len中,如arr[a b c d e f]字符串长度为6
    reverse(arr, arr + len - 1);//实现字符串整体翻转部分
    //从arr开始,到arr+len-1截止...arr为起始位置0(下标),len为字符串长度6,arr+len-1为最后一个词下标
    //每个单词逆序部分:
    char* start = arr;//将数组名起始地址给start
    while (*start)//循环,知道start里面赋值的arr变为\0
    {
        char* end = start;//把start赋给end,end往后找,直到找到空格
        while (*end != ' ' && *end !='\0')//结束标准有两种:空格和\0
        {
            end++;
        }
        reverse(start, end - 1);//start为起始位置,end为空格,需要找的是空格前的字母,所以end-1
        if (*end == ' ')//此时排除*end=\0结束时,跳过并还在循环的情况
            start == end + 1;
        else
            start = end;
        start = end + 1;
    }
    printf("%s\n", arr);
    return 0;
}
相关文章
|
1月前
|
算法
【算法】滑动窗口——找到字符串中所有字母异位词
【算法】滑动窗口——找到字符串中所有字母异位词
|
3月前
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
1月前
|
人工智能 算法
第一周算法设计与分析:C : 200和整数对之间的情缘
这篇文章介绍了解决算法问题"200和整数对之间的情缘"的方法,通过统计数组中每个数模200的余数,并计算每个同余类中数的组合数来找出所有满足条件的整数对(i, j),使得\( A_i - A_j \)是200的整数倍。
|
2月前
|
自然语言处理 Rust 算法
【算法】17. 电话号码的字母组合(多语言实现)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
【算法】17. 电话号码的字母组合(多语言实现)
|
1月前
|
算法 容器
【算法】滑动窗口——串联所有单词的子串
【算法】滑动窗口——串联所有单词的子串
|
2月前
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
30 0
【算法】二分查找(整数二分和浮点数二分)
|
3月前
|
算法 C语言
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
|
3月前
|
存储 SQL 算法
LeetCode题58: 5种算法实现最后一个单词的长度【python】
LeetCode题58: 5种算法实现最后一个单词的长度【python】
|
3月前
|
存储 算法
算法BFS经典例题(迷宫,多源BFS,BFS解决拓扑排序,FloodFill算法)
算法BFS经典例题(迷宫,多源BFS,BFS解决拓扑排序,FloodFill算法)
|
3月前
|
算法 C语言 计算机视觉
【数据结构与算法 经典例题】括号匹配问题
【数据结构与算法 经典例题】括号匹配问题