题一:字符串倒置
示例1
输入
I like beijing.输出
beijing. like I
思路一:
定义字符串数组arr[ ] ,利用gets()将要倒置的字符串输入,记录字符串长度len,此时写一个逆置函数Inversion(),第一步将整个字符串逆置,然后再定义开始节点指针start(),和走动节点指针cur(),第二步:循环每次逆置一个单词,最后打印字符串。
#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
思路一:
如下图:明确思路(由于题目有时间复杂度,要求在牛客中此解法才通过,正常暴力解发时间复杂度超过题目限制)。
#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;
}