本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。
今日练习题关键字:数字颠倒 单词倒排
💓博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识
Day1
- 题目一:
- 题目描述:
- 解题思路:
- 代码实现:
- 结果情况:
- 题目二:
- 题目描述:
- 解题思路:
- 代码实现:
- 结果情况:
- 总结:
题目一:
题目描述:
题目来源:数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
解题思路:
可以通过 scanf(“%s”) 把输入的数字当做一个字符串进行接收,然后直接从后向前倒序输出。
代码实现:
#include <stdio.h>
#include<string.h>
int main()
{char str[32] = {0};scanf("%s", str);//gets(str);for (int i = strlen(str) - 1; i >= 0; i--) {printf("%c", str[i]);}printf("\n");
}
结果情况:
符合题目要求,问题得到解决。
题目二:
题目描述:
题目来源:单词倒排
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
解题思路:
1.整体思想是双指针法,因此定义一对快慢指针p1,p2.
2.首先寻找一个单词的末尾,因此当s[p1]不是字母时p1就要–,循环终止时只要p1将指向一个单词的末尾(还有单词的话),此时将用p2记录下这个单词的结尾。
3.继续寻找单词的开头,因此当s[p1]为字母的时候就让p1–,最终p1+1指向该单词的开头,我们从p1+1遍历到p2,依次打印即可。
注意:scanf函数不能接受带空格的字符串,所以要使用gets函数
代码实现:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
int main()
{char s[10000];gets(s);int len = strlen(s);int p1 = len - 1, p2 = len;while (p1 >= 0) {while (p1 >= 0 && !isalpha(s[p1]))p1--;p2 =p1;while (p1 >= 0 && isalpha(s[p1]))p1--;for (int i = p1 + 1; i <= p2; i++)printf("%c", s[i]);printf(" ");}return 0;
}
结果情况:
符合题目要求,问题得到解决。
总结:
文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!