1. 求两个数的最小公倍数
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
//计算
int i = 0;
for (i = a>b?a:b; i <= a * b; i++) //i 初始化为 a b 两个数的最大值
{
if (i % a == 0 && i % b == 0)
{
printf("最小公倍数为:%d\n", i);
break;
}
}
}
这个代码比较简单,但是效率不够高,可以对其遍历部分进行优化。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
//计算
int i = 1;
while (i * a % b)
{
i++;
}
printf("最小公倍数为:%d\n", i);
}
这里 i * a 假如是 b 的最小公倍数,那么再 % b 的结果为0,跳出循环,最后得到的i就是最小公倍数。
2. 倒置字符串(单词倒置),标点不倒置
倒置前:I like beijing.
倒置后: beijing. like I
#include <stdio.h>
#include <string.h>
void reverse(char* left, char* right)
{
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
right--;
left++;
}
}
int main()
{
char arr[101];
//获得字符串
gets(arr);
//逆序字符串
int len = strlen(arr); //获得字符串长度
reverse(arr, arr + len - 1);
//按单词逆序
char* start = arr; //单词首元素地址
while(*start)
{
char* end = start; //先初始化为单词首地址,其实代表单词的最后一个元素地址
while (*end != ' ' && *end != '\0')
{
end++;
}
reverse(start, end - 1);
if (*end != '\0') //跳过空格
end++;
start = end; //更新start的地址
}
//打印
printf("%s\n", arr);
return 0;
}