5个常见的电子商务网站,百度舆情监测平台,绘画做动作的网站,定兴做网站的目录
前言#xff1a;
1.单词倒排 方法1#xff1a;scanf匹配特定字符法
方法2#xff1a; 双指针法
2.统计每个月兔子的总数 方法1#xff1a;斐波那契数列
方法2#xff1a;斐波那契的递归
3.珠玑妙算
方法#xff1a;遍历 4.寻找奇数#xff08;单身狗#…目录
前言
1.单词倒排 方法1scanf匹配特定字符法
方法2 双指针法
2.统计每个月兔子的总数 方法1斐波那契数列
方法2斐波那契的递归
3.珠玑妙算
方法遍历 4.寻找奇数单身狗
方法1遍历法 方法2异或运算法
5.截取字符串 前言
编程想要学的好刷题少不了我们不仅要多刷题还要刷好题为此我开启了一个弯道超车必做好题锦集的系列此为第三篇编程题篇每篇大约5题左右。该系列会不定期更新敬请期待 1.单词倒排 方法1scanf匹配特定字符法
#include stdio.h
int main()
{char str[1000][1000];int i 0;while (1){if (scanf(%[a-zA-Z], str[i])){i;}if (getchar() \n){break;}}while(i){printf(%s , str[--i]);}return 0;
} 解析 方法2 双指针法
解题思路 整体思想是双指针法因此定义一对快慢指针p1p2.首先寻找一个单词的末尾因此当s[p1]不是字母时p1就要--循环终止时只要p1将指向一个单词的末尾还有单词的话此时将用p2记录下这个单词的结尾。继续寻找单词的开头因此当s[p1]为字母的时候就让p1--最终p11指向该单词的开头我们从p11遍历到p2,依次打印即可。 scanf函数不能接受带空格的字符串所以要使用gets函数
#includestdio.h
#includestring.h
#includectype.h
int main()
{char s[10000];gets(s);int len strlen(s);int p1 len - 1, p2 len;while (p10){while (p1 0 !isalpha(s[p1])){p1--;} p2 p1;while (p1 0 isalpha(s[p1])){p1--;} int i;for (i p1 1; i p2; i){printf(%c, s[i]);} printf( );}return 0;
} 2.统计每个月兔子的总数 方法1斐波那契数列 我们可以先来推导一下 第一个月 只有一只 第二个月 只有一只 第三个月 原先的一只生出一只共2只 第四个月 最开始的一只又生出一只 共3只 第五个月 第一只生一只第二只到第三月 生一只共5只 第六个月 第一只生一只第二只生一只第三只生一只共8只 1 1 2 3 5 8…… 可以发现f(n) f(n-1)f(n-2) 本质上是斐波那契数列
#includestdio.h
int main()
{int arr[31],i 0,n;arr[0] 1; arr[1] 1;scanf(%d, n);for (i 2; i n; i){arr[i] arr[i - 1] arr[i - 2];}printf(%d, arr[n - 1]);return 0;
}
方法2斐波那契的递归
#includestdio.h
int fb(int n)
{if (n 1 || n 2){return 1;}return fb(n - 1) fb(n - 2);
}int main()
{int n 0;scanf(%d, n);printf(%d, fb(n));return 0;
} 3.珠玑妙算
珠玑妙算https://leetcode.cn/problems/master-mind-lcci/ 方法遍历
int* masterMind(char* solution, char* guess, int* returnSize) {int* ret (int*)malloc(sizeof(int) * 2);ret[0] 0; ret[1] 0;int i 0,j0;for (i 0; i 4; i){if (solution[i] guess[i]){ret[0];solution[i] ;guess[i] ;}}for (i 0; i 4; i){if (solution[i]! ){for (j 0; j 4; j){if (solution[i] guess[j]){ret[1];guess[j] ;break;}}}}*returnSize 2;return ret;
}
解析 solution RGBY guess GGRR 先遍历一遍guess每个字符一一对应 R-G G-G B-R Y-R 我们把相同的当成一次猜中即GG即为一次并把这两个字符抵消 然后我们再次遍历guess中的每一位这时候我们需要在整个solution中搜索是否有这个字符如果有则抵消solution和guess中的字符并当成一次伪猜中然后下一个字符照旧 4.寻找奇数单身狗 方法1遍历法
#includestdio.h
int main()
{int n 0, arr[2000000],i0,count0,j0,flg0;scanf(%d, n);for (i 0; i n; i){scanf(%d, arr[i]);}for (i 0; i n-1; i){if (arr[i] 0){continue;}count 1;for (j i1; j n; j){if (arr[j]0 arr[i] arr[j]){arr[j] arr[j] * -1;count;}}if (count % 2 ! 0){flg arr[i];break;}}printf(%d,flg);return 0;
} 但会超时 方法2异或运算法 总结利用异或运算可以算出出现奇数次的数字
#includestdio.h
int main()
{int n 0;int ans 0;scanf(%d,n);for(int i 0; i n; i){int tmp 0;scanf(%d,tmp);ans ^ tmp;}printf(%d\n, ans);return 0;
}5.截取字符串 解析 截取字符串前 n 个字符只需要将数组 n 下标位置的数据替换为字符串结尾标志即可 #include stdio.h
int main()
{
char str[101];
scanf(%s, str) 0;
int n;
scanf(%d, n);
str[n] \0;
printf(%s\n, str);
return 0;
} 以上为我个人的小分享如有问题欢迎讨论
都看到这了不如关注一下给个免费的赞