本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。
今日练习题关键字:数字颠倒 单词倒排
博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
代码仓库:小小unicorn的代码仓库
关注我带你学习编程知识
题目来源:数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
可以通过 scanf(“%s”) 把输入的数字当做一个字符串进行接收,然后直接从后向前倒序输出。
#include
#include
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
#include
#include
#include
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;
}
符合题目要求,问题得到解决。
文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!