题一:字符串倒置
示例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; }