C语言经典题目

简介: C语言经典题目

1.倒置字符串

image.png

解题思路:题目也不难,将一句话的单词进行倒置,标点不倒置。我们可以采用三步翻转法:即先将字符串整体逆置,再对逆置后的字符串中每一个单词部分进行逆置。 比如:I like beijing.
第一步,字符串整体逆置,得到:.gnijieb ekil I
第二步,将字符串中每一个单词逆置,得到:beijing. like I
#include <assert.h>
void reverse(char* left, char* right)
{
    assert(left);
    assert(right);

    while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}

int main()
{
    char arr[101] = { 0 };
    //输入
    gets(arr);//I like beijing.
    //逆置
    int len = strlen(arr);
    //1. 逆序整个字符串
    reverse(arr, arr + len - 1);
    //2. 逆序每个单词
    char* start = arr;

    while (*start)
    {
        char* end = start;
        while (*end != ' ' && *end != '\0')
        {
            end++;
        }
        reverse(start, end - 1);
        if (*end != '\0')
            end++;
        start = end;
    }

    //输出
    printf("%s\n", arr);

    return 0;
}

image.png

2.BC60 带空格直角三角形图案

image.png

解题思路:当前i行和j列满足的关系是什么找出来,即可很容易的写出这道题,右对角线满足i+j=n-1,而右对角线的左侧空格满足i+j<n-1,所以我们可以很容易的写出代码:

int main()
{
    int n = 0;
    while(~scanf("%d",&n))
    {
        int i = 0;
        for(i=0;i<n;i++)
        {
            int j = 0;
            for(j = 0;j<n;j++)
            {
                if(i+j<n-1)
                {
                    printf("  ");
                }
                else
                {
                    printf("* ");
                }
            }
             printf("\n");
        }
    }
    return 0;
}

3.BC96-有序序列判断

image.png

解题思路:有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。就是说有序满足两种情况,一种是从大到小,另一种是从小到大,我们可以定义两个临时变量来帮助判断是否有序,一个判断有序,另一个判断无序。具体的有序或者无序的判断只需要去比较相邻元素的大小即可。下面实现代码:

int main()
{
    int n = 0;
    int arr[50] = {0};
    int flag1 = 1;//升序有序
    int flag2 = 1;//降序有序
    int i = 0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d ",&arr[i]);
    }
    for(i=0;i<n-1;i++)
    {
        if(arr[i]>=arr[i+1])
        {
            flag1 = 0;
        }
        if(arr[i]<arr[i+1])
        {
            flag2 = 0;
        }
    }
    if(flag1+flag2 == 1)
    {
        printf("sorted\n");
    }
    else
    {
        printf("unsorted\n");
    }
    
    return 0;
}
相关文章
|
7月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
7月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
47 1
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
78 1
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
61 1
|
4月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
6月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
47 1
|
7月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
6月前
|
C语言
c语言循环题目
c语言循环题目
|
7月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)