目录
最小公倍数
题目:求两个数的最小公倍数,两个数的最小公倍数为:能被这两个数同时整除的最小的数。
输入描述:输入两个整数n,m。答案确保在int范围以内。
输出描述:输出两个数的最小公倍数。
示例1 输入:6 4;输出:12
示例2 输入:6 5;输出:30
分析:
方法1:得到最小公倍数,最小公倍数可以将两个数同时整除:一个数一个数加,进行判断
#include<iostream>
using namespace std;
//求两个数的最小公倍数,两个数的最小公倍数为:能被这两个数同时整除的最小的数。
int main()
{
int num1 = 6;
int num2 = 4;
cin >> num1;
cin >> num2;
int num = 0;
while (!((num / num1 != 0 && num% num1 == 0 )&& (num / num2 != 0 && num % num2 == 0)))
{
num++;
}
cout << num << endl;
return 0;
}
方法2:得到最小公倍数,第一个数的整数倍除第二个数,余数不为0
举例:6 5-->6 * 1 % 5 != 0 -->6 * 2 % 5 != 0-->6 * 3 % 5 != 0...6*5%5 == 0-->最小的公倍数6*5=30
#include<iostream>
using namespace std;
int main()
{
int a = 6;
int b = 4;
int i = 1;//不能从0开始
while (a * i % b)//不满足该条件的时候,跳出循环
{
i++;
}
cout << a * i << endl;
return 0;
}
倒置字符串
题目:将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。字符串长度不超过100。
输入描述:输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。'.' 只出现在最后一个单词的末尾。
输出描述:依次输出倒置之后的字符串,以空格分割。
示例:输入:I like beijing. 输出:beijing. like I
分析:面对字符串的问题,首先想到将字符串放在字符数组中,根据数组的下标进行操作
但是这道题和一般的字符串的区别:1.先倒置字符串2.倒置单词
void reverse_str(char* left, char* right)
{
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char arr[101] = { 0 };//创建数组并初始化
gets(arr);//把读到的字符串存起来
int len = strlen(arr);
//1.逆序整个字符串-->.gnijieb ekil i
reverse_str(arr, arr + len - 1);
//2.把每个单词逆序,start指针指向数组的首地址,end记录start的位置并不断移动
char* start = arr;
while (*start)
{
char* end = start;
while (*end != ' ' && *end != '\0')
{
end++;
}
reverse_str(start, end - 1);
if (*end != '\0')
end++;
start = end;
}
printf("%s", arr);
}