C语言百日刷题第十天

前言

今天是刷题第10天,放弃不难,但坚持一定很酷~

快来跟我一起刷题吧。

C语言百日刷题第十天

C语言百日刷题第十天

; 81.连接两个字符串

输入两个字符串 strl 和 st2,对输入的字符串进行长度比较,然后将小的连接在大的字符串后面,最后输出连接好的新串并计算新串的长度。

题目分析:本题有两种解法,第一种是直接使用C语言里面的库函数,第二种是自己模拟对应的库函数。

方法一:使用库函数

#include
#include
int main()
{
 int len;
 char str1[80], str2[80];
 printf("输入字符串1:\n");
 scanf("%s", str1);
 printf("输入字符串2:\n");
 scanf("%s", str2);
 if (strlen(str1)>= strlen(str2))
 {
  strcat(str1, str2);
  len = strlen(str1);
  printf("连接后的字符串为:%s,长度为:%d\n", str1, len);
 }
 else
 {
  strcat(str2, str1);
  len = strlen(str2);
  printf("连接后的字符串为:%s,长度为:%d\n", str2, len);
 }
 return 0;
}

这里使用了两个字符串函数,我们分别介绍一下。

strlen函数:求字符串的长度。

C语言百日刷题第十天

strcat函数:连接两个字符串

C语言百日刷题第十天

方法二:使用自己模拟的函数
首先我们可以模拟一下strlen函数,strlen函数的作用就是计算字符串的长度。对于该函数,我们有三种方法可以进行模拟。
模拟方法一:循环+计数器模拟

int strlen1 (char * str)
{
 int count = 0;
 while(*str)
 {
 count++;
 str++;
 }
 return count;
}

模拟方法二:递归模拟

int strlen2 (char * str)
{
 if(*str == '\0')
 return 0;
 else
 return 1 + strlen2(str+1);
}

模拟方法三:指针运算模拟

int strlen3 (char *s)
{
       char *p = s;
       while(*p != '\0' )
              p++;
       return p-s;
}

接下来,我们可以尝试去模拟一下strcat函数,而strcat函数的原理其实就是先找到目标字符串的结尾(’\0’),然后从此处开始进行数据的复制,当找到源字符串的结束标志(’\0’)时停止复制。

char *strcat1(char *dest, const char*src)
{
 char *ret = dest;
 assert(dest != NULL);
 assert(src != NULL);
 while(*dest)
 {
    dest++;
 }
 while(*dest = *src)
{
    dest++;
    src++;
}
 return ret;
}

如此一来,我们就模拟了两个字符串函数,接下来把他们封装,直接调用就行了,这里的strlen函数我就使用第一种模拟的函数吧。

#include
#include
int strlen1(char* str)
{
    int count = 0;
    while (*str)
    {
        count++;
        str++;
    }
    return count;
}
char* strcat1(char* dest, const char* src)
{
    char* ret = dest;
    assert(dest != NULL);
    assert(src != NULL);
    while (*dest)
    {
        dest++;
    }
    while (*dest = *src)
    {
        dest++;
        src++;
    }
    return ret;
}
int main()
{
    int len;
    char str1[80], str2[80];
    printf("输入字符串1:\n");
    scanf("%s", str1);
    printf("输入字符串2:\n");
    scanf("%s", str2);
    if (strlen1(str1) >= strlen1(str2))
    {
        strcat1(str1, str2);
        len = strlen1(str1);
        printf("连接后的字符串为:%s,长度为:%d\n", str1, len);
    }
    else
    {
        strcat1(str2, str1);
        len = strlen1(str2);
        printf("连接后的字符串为:%s,长度为:%d\n", str2, len);
    }
    return 0;
}

82.输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。

输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。

C语言百日刷题第十天

题目分析:分别统计英文、空格和数字,及其其他,我们自然就想到了使用分支语句进行判断,那么如何进行判断以上四种情况呢,柿子先捡软的捏,最容易判断的当然就是空格,其次就是英文字母和数字,最难判断的就是其他字符,但是如果我们把前面三种都判断了,那么最后的不就剩下其他字符了嘛?但是因为我们不知道用户输入的具体是多少,所以我们无法判断分支语句写多少条,所以我们就应该用循环,因为我们输入完后会敲回车,而回车相当于换行,所以我们要将换行作为循环结束的标志。

#include
int main()
{
    char c;
    int letter = 0, space = 0, digit = 0, other = 0;
    printf("请输入需要统计的字段:\n");
    while ((c = getchar()) != '\n')
    {
        if (c >= 'a' && c  'z' || c >= 'A' && c  'Z')
            letter++;
        else if (c == ' ')
            space++;
        else if (c >= '0' && c  '9')
            digit++;
        else
            other++;
    }
    printf("英文有:%d\n空格有:%d\n数字有:%d\n其他有:%d", letter, space, digit, other);
    return 0;
}

83.写一个排序函数实现数组从小到大的排序

排序的方法有很多,这里我写一个我比较常用的排序方法——-快速排序。
快速排序的核心思想就是分治,这里我提供一个我比较常用的模板。

#include

void quick_sort(int q[], int left, int right)
{
    if (left >= right)
        return;
    int i = left - 1, j = right + 1, x = q[left + right >> 1];
    while (i < j)
    {
        do i++; while (q[i] < x);
        do j--; while (q[j] > x);
        if (i < j)
        {
            int tmp;
            tmp = q[i];
            q[i] = q[j];
            q[j] = tmp;
        }
    }

    quick_sort(q, left, j), quick_sort(q, j + 1, right);
}

int main()
{
    int q[10] = { 1,2,56,2552,5,325,2,69,348,222 };
    quick_sort(q, 0, 9);
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", q[i]);
    }
    return 0;
}

84.字母的大小写转换

从键盘输入一个字符,判断其是否为大写字母,若是大写字母,则将其转换为小写;否则,不进行转换。

题目分析:本题的核心是了解ASCII码之间的关系,从表上来看,对于字母来说,小写的字母的ASCII码比大写的ASCII码值大32

C语言百日刷题第十天

代码如下:

#include
int main()
{
    char input;
    scanf("%c", &input);
    if (input >= 'A' && input  'Z')
    {
        input = input + 32;
    }
    printf("%c", input);
    return 0;
}

85.找乒乓球队名单

C语言百日刷题第十天

现有两个乒乓球队进行比赛,各出三人。甲队为A,B,C 三人,乙队为X,Y,Z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X,Z比,请编程序找出三队赛手的名单。

分析:需要通过循环进行比较,并且需要if语句来判断参赛队员是否重复。

#include
int main()
{
    for (char i = 'X'; i  'Z'; i++)
    {
        for (char j = 'X'; j  'Z'; j++)
        {
            if (i != j)
            {
                for (char k = 'X'; k  'Z'; k++)
                {
                    if (i != k && j != k)
                    {
                        if (i != 'X' && k != 'X' && k != 'Z')
                        {
                            printf("A对%c\nB对%c\nC对%c\n", i, j, k);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

Original: https://blog.csdn.net/weixin_61084441/article/details/127992924
Author: 子夜的星
Title: C语言百日刷题第十天

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/787912/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python 数据分析day_1:认识Notebook,及NumPy , Pandas 和 Matplotlib基本使用方法

    数据分析 1.认识Notebook * 1.1 三大神器 1.2 热身任务 – + 热身任务:用随机的方式生成5个学生3门课程的成绩(百分制的成绩),统计每个学生的平均…

    Python 2023年9月6日
    071
  • Python代码阅读(第31篇):将一个列表分割成指定大小的小列表

    本篇阅读的代码实现了将列表分割成指定大小的小列表的功能。最后一个小列表的长度由实际剩余的项而定。 本篇阅读的代码片段来自于30-seconds-of-python。 Python …

    Python 2023年5月25日
    079
  • pytest使用(1)-基础

    python有很多不错的测试框架,比如RobotFramework,Unitest,这里要介绍一下pytest。可以参考,pytest文档因为文档介绍比较多,这里使用简单的几篇帖子…

    Python 2023年9月10日
    070
  • 我的设计模式之旅、07 观察者模式

    编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。 程序介绍 本程序实现观察者模式。使用C#、Go两门语言分别进行实现。程序创建一个全局游戏死亡事件通知,5个玩家、…

    Python 2023年10月22日
    063
  • django+uwsgi+nginx部署

    django+uwsgi+nginx部署 安装nginx sudo apt-get install nginx即可。 ; 安装python解析器 python解析器可以直接在pyt…

    Python 2023年8月6日
    068
  • 用户数据分析

    第一部分:数据类型的处理(预处理) 数据加载 字段定义: user_id:用户ID order_dt:购买日期 order_product:购买产品的数量 order_amount…

    Python 2023年8月7日
    068
  • scrapy爬取网站子链接(含爬虫入门教程)

    首先,这是我第一次用scrapy在工作中,以前用过requests,但是那种小级别的东西,不适合网站级爬取,太慢了。 读到这句话的时候,我的代码已经写完了,项目已经完成了,现在对s…

    Python 2023年10月1日
    059
  • 比正则快N倍的新姿势,用Python替换字符串

    Original: https://www.cnblogs.com/123456feng/p/16084421.htmlAuthor: 蚂蚁ailingTitle: 比正则快N倍的…

    Python 2023年5月24日
    053
  • 大数据Kudu(二):Kudu架构

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年8月26日
    055
  • 吴恩达机器学习课后作业

    目录 01-linear regression * 线性回归预备知识 单变量线性回归( 一个特征值) 单变量线性回归( 多个特征值) 单变量线性回归( 正规方程) 01-linea…

    Python 2023年9月29日
    043
  • scrapy — CrawlSpider类

    CrawlSpider类是什么? 是Spider的一个子类 区别: Spider是获取到URL进行 手动发送请求 : yield scrapy.Request(url=new_ur…

    Python 2023年11月3日
    060
  • 数据分析工具Pandas基础–运算与对齐

    知识要点 Series 的运算: 对齐操作发生在索引上 DataFrame 的运算: 对齐操作会同时发生在行和列上,注意:Series和DataFrame操作时,Series被看作…

    Python 2023年8月22日
    052
  • 不同数组类型的维度增加与减少方法

    目录 1、numpy数组 1)、np.expand_dims() 2)、np.squeeze() 3)、其他方法 4)两个数组的组合 2、PyTorch 数组 1)、torch.s…

    Python 2023年8月27日
    068
  • 【爬虫实例2】91网视频爬取

    1、 导入模块 import requests import re 2、获取m3u8文件 url地址 url = ‘http://www.wwmulu.com/rj/xhcl/pl…

    Python 2023年6月11日
    080
  • torch.nn.Linear详解

    1. nn.Linear的原理: 从名称就可以看出来,nn.Linear表示的是线性变换,原型就是初级数学里学到的线性函数: y=kx+b不过在深度学习中,变量都是多维张量,乘法就…

    Python 2023年8月1日
    073
  • Python实例:贪吃蛇游戏

    相信对读者来说,贪吃蛇游戏已经不新鲜了,这一经典的益智游戏早已风靡世界多年。 典型的贪吃蛇游戏的主界面如图 1 所示。 图 1:贪吃蛇小游戏的主界面 其游戏规则是:玩家使用上下左右…

    Python 2023年9月24日
    065
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球