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

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

题目一:

题目描述:

题目来源:数字颠倒

输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有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;
}

结果情况:

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

总结:

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。

希望今天的练习能对您有所收获,咱们下期见!

相关文章
|
2月前
|
存储 人工智能 安全
C语言:选择+编程(每日一练Day15)
C语言:选择+编程(每日一练Day15)
54 2
|
2月前
|
编译器 C语言
C语言:选择+编程(每日一练Day3)
C语言:选择+编程(每日一练Day3)
32 0
|
2月前
|
C语言
C语言:选择+编程(每日一练Day13)
C语言:选择+编程(每日一练Day13)
35 0
|
2月前
|
C语言
C语言:选择+编程(每日一练Day5)
C语言:选择+编程(每日一练Day5)
31 3
|
2月前
|
存储 人工智能 C语言
C语言:选择+编程(每日一练Day16)
C语言:选择+编程(每日一练Day16)
34 3
|
2月前
|
C语言
C语言:选择+编程(每日一练Day14)
C语言:选择+编程(每日一练Day14)
39 2
|
2月前
|
编译器 C语言
C语言:选择+编程(每日一练Day12)
C语言:选择+编程(每日一练Day12)
35 2
|
2月前
|
C语言
C语言:选择+编程(每日一练Day11)
C语言:选择+编程(每日一练Day11)
34 2
|
2月前
|
C语言
C语言:选择+编程(每日一练Day10)
C语言:选择+编程(每日一练Day10)
33 1
|
2月前
|
存储 人工智能 C语言
C语言:选择+编程(每日一练Day9)
C语言:选择+编程(每日一练Day9)
30 0