C语言每日一练----Day(13)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。

今日练习题关键字:数字颠倒 单词倒排

在这里插入图片描述

博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
代码仓库:小小unicorn的代码仓库
关注我带你学习编程知识

Day1

  • 题目一:
    • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 题目二:
    • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 总结:

题目一:

题目描述:

题目来源:数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

C语言每日一练----Day(13)_第1张图片

解题思路:

可以通过 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;
}

结果情况:

在这里插入图片描述

符合题目要求,问题得到解决。

总结:

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!

你可能感兴趣的:(c语言天天练,c语言,C语言每日一题)