C语言百日刷题第十天

news2024/11/26 14:34:56

前言

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

快来跟我一起刷题吧。

在这里插入图片描述

C语言百日刷题第十天

  • 前言
  • 81.连接两个字符串
  • 82.输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
  • 83.写一个排序函数实现数组从小到大的排序
  • 84.字母的大小写转换
  • 85.找乒乓球队名单

81.连接两个字符串

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

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

方法一:使用库函数

#include<stdio.h>
#include<string.h>
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函数:求字符串的长度。
在这里插入图片描述

strcat函数:连接两个字符串
在这里插入图片描述

方法二:使用自己模拟的函数
首先我们可以模拟一下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<stdio.h>
#include<assert.h>
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.输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。

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

在这里插入图片描述

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

#include<stdio.h>
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<stdio.h>
//快速排序的实现
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
在这里插入图片描述

代码如下:

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

85.找乒乓球队名单

在这里插入图片描述


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

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

#include<stdio.h>
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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPARKSQL3.0-DataFrameAPI与spark.sql()区别源码分析

一、前言&#xff1a; 阅读本节需要先掌握spark-sql内部执行的基本知识&#xff1a; SessionState Unresolved阶段 Analyzer阶段中queryExecution的介绍 二、区别 spark.sql的执行顺序为: sql字符串 -> antlr4解析成AST语法树 -> unreolved解析成logicalPlan ->…

云计算正当时!将你的Java项目容器化

将您的 Java 应用程序 Docker 化 长按关注《Java学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 扫码关注《Java学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 随着每个人都转向 Kubernetes&#xff0c;知道如何对应用程序进行 Dockerize 是件好…

IPv6转换难点分析之一:国家监测指标-中科三方

从IPv4过渡到IPv6就像是“打破一个旧世界&#xff0c;创建一个新世界”&#xff0c;注定要经历一个长期的过程&#xff0c;但终究会实现。 一、IPv6过渡转换的障碍 目前互联网上还是以IPv4设备为主&#xff0c;不可能迅速过渡到IPv6&#xff0c;这主要受制于以下几个方面: &…

Nat. Mach. Intell2021 | MolCLR+:基于GNN的分子表征对比学习

原文标题&#xff1a;Molecular Contrastive Learning of Representations via Graph Neural Networks 代码&#xff1a;https://github.com/yuyangw/MolCLR 一、问题提出 首先&#xff0c;分子信息难以完全表示。例如&#xff0c;基于字符串的表示&#xff0c;如SMILES和SE…

未来展望:Starday供应链火力全开,为跨境电商再添动力!

2022年末将至&#xff0c;回顾这“命途多舛”的一年&#xff0c;也是令人非常唏嘘。近日&#xff0c;联合国发布《2022年年中世界经济形势与展望》报告&#xff0c;该报告指出正处于疫情恢复期的全球经济可能又到了一场新危机的边缘。据相关统计显示&#xff0c;2022年相比于20…

HttpServlet学习中的常见问题(个人珍藏笔记)

目录 一、HttpServlet 1.1核心方法 1.2、面试&#xff1a;谈谈Servlet的生命周期 二、HttpServletRequest 2.1、核心方法 2.2、如何获取请求头 三、HttpServletResponse 3.1核心方法 四、setCharacterEncoding和setContentType区别&#xff1f; 五、Json格式的转换问题…

串行通讯协议,只需要一文就可以给你讲懂

前言 最近在做一个通过ESP8266和STM32通讯从而实现远程控制&#xff0c;中间需要用到串口来发送报文&#xff0c;通过报文来实现两者之间的通讯。 今天刚好趁着这个机会来给大家讲解一下串行通讯&#xff0c;希望能给大家以后的学习提供一些思路。 串行通讯介绍 串口通信线…

磨金石教育摄影干货分享|怎样拍出唯美有内涵的“中国风”照片

之前有网友私聊我&#xff0c;说这两年很多人都在拍中国元素的照片&#xff0c;他们的照片不仅仅是对古建筑简单的拍摄&#xff0c;照片的内容拥有丰富的文化内涵。想问我这样的照片应该怎么拍才能达到有内涵的水平。 其实这个问题确实有一定的难度&#xff0c;每个人都有自己…

腾格尔成影视圈的香饽饽,十月天传媒正式邀请演唱主题曲

俗话说&#xff1a;姜还是老的辣&#xff0c;酒还是陈酿好。这句话用到音乐人腾格尔身上&#xff0c;就再贴切不过了。说起音乐人腾格尔&#xff0c;这位来自草原的雄鹰和苍狼&#xff0c;有很多部音乐作品&#xff0c;都被歌迷朋友们一直传唱。 如今的腾格尔老师&#xff0c;已…

六.初阶指针

前言&#xff1a;大家好哇&#xff01;今天带大家认识下C语言中的指针&#xff0c;指针的用法等&#xff0c;希望对大家有所帮助&#xff01; 目录 一.指针是什么 1.指针是什么&#xff1f; 2.如何理解指针变量 二.指针和指针的类型 1.指针类型 2.指针类型的意义 &#x…

http 跨域资源共享详解

http 跨域资源共享详解 由于浏览器同源策略限制&#xff0c;会导致出现跨域问题。而跨域资源共享&#xff08;CORS&#xff09;可以突破浏览的同源策略的限制&#xff0c;不过需要服务端配合设置相应的响应头&#xff0c;从而使跨源数据传输得以安全进行。 跨域资源共享新增了…

进销存软件对中小型企业管理有什么作用?

进销存软件对中小型企业管理有什么作用&#xff1f; 01 更加有序 库存不乱单据不乱价格不乱 使用进销存软件可以把这些都记录下来&#xff0c;有条不紊&#xff0c;出现什么问题也有据可查&#xff0c;不像纸质单据&#xff0c;会丢会坏&#xff0c;乱成一团。 02 能打印正式…

[Spring Cloud] Hystrix通过配置文件统一设置参数/与OpenFeign结合使用

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

网站favion.ico图标

Favicon.ico一般用于作为缩略的网站标志&#xff0c;它显示在浏览器的地址栏或者标签上。 目前主要的浏览器都支持favicon.ico图标 一 制作favicon图标 1 把品优购图标切成png图片 2 把png图片转换为ico图标&#xff0c;这需要借助第三方转换网站&#xff0c;例如&#xff1…

刷题经验分享(一)

文章目录删除公共字符&#xff1a;组队竞赛&#xff1a;删除公共字符&#xff1a; 第一题&#xff1a;删除公共字符 方法一&#xff1a; 思路&#xff1a; 1.将第二个字符串的字符都映射到一个hashtable数组中&#xff0c;用来判断一个字符在这个字符串。 2. 判断一个字符在第…

140.深度学习分布式计算框架-3

140.1 Horovod Horovod是 Uber 开源的又一个深度学习工具&#xff0c;它的发展吸取了 Facebook「一小时训练 ImageNet 论文」与百度 Ring Allreduce 的优点&#xff0c;可为用户实现分布式训练提供帮助。Horovod 支持通过用于高性能并行计算的低层次接口 – 消息传递接口 (MPI…

Vue脚手架环境中简单使用MarkDown(只入门)

目录 入门 高级使用 入门 1 所在终端输入 npm install vue-meditor 2 复制以下代码 先新建一个组件 <template><div><MavonEditor v-model"myMarkDownData"/><button click"submit">提交</button></div> </te…

vue配置

首先安装node.js 在cmd node -v查看 然后 cmd命令行执行 : npm install -g vue/cli // 加-g是安装到全局 安装vue cli 安装vue cli 1 看一下 这是在cmd输入的内容,参考第一条链接 在vscode中怎么配置他? 文件-打开文件夹,选择一个文件夹 这里是firstvue 在下面新建文件夹…

可变长子网划分

目录 IP地址 子网划分 可变长子网划分 IP地址 在学习子网划分之前应该先清楚什么是IP地址和IP地址的类型 IP 地址的格式0网络地址主机地址10网络地址 主机地址 110网络地址主机地址1110组播地址11110保留 A 1.0.0.0~127.255.255.255 B 128.0.0.0~191.255.255…

C++编程进阶

目录 new运算符 new关键字的使用案例 C的引用 C中引用案例 引用的注意事项 引用做函数参数 引用做函数的返回值 前言&#xff1a; 具体案例 引用的本质 常量引用 常量引用原理 经典案例 函数的提高 函数的默认参数 注意&#xff1a; 具体案例 函数的占位参数…