C语言—字符数组(3)

news2025/1/20 12:08:05

可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的

1.编写程序实现对两个字符串的连接功能;

法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不可预测

/*1.编写程序实现对两个字符串的连接功能*/

#include <stdio.h>

int main(void)
{
    char str1[] = "hello,";
    char str2[] = "world!";
    char str[100] = {0};  //用于存储连接后的字符串

    printf("字符串1: %2s 字符串2: %2s\n",str1,str2);

    int index1 = 0; //初始化下标

    while(str1[index1] != '\0')  //复制str1到str
    {
        str[index1] = str1[index1];
        index1++;
    }

    int index2 = 0;
    while(str2[index2] != '\0')  //复制str2到str
    {
        str[index1] = str2[index2];
        index1++;
        index2++;
    }

    str[index1] = '\0';  //在连接后的字符串末尾添加字符串结束符

    printf("连接后的字符串: %s\n",str);

    return 0;
}

法二:使用strcat函数

/*1.编写程序实现对两个字符串的连接功能,使用strcat函数*/

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[32] = {0};  //存储连接后的字符串
    char str1[] = "hello,";
    char str2[] = "world!";

    printf("连接之前字符串1: %2s 字符串2: %2s\n",str1,str2);


    strcat(str,str1);  //strcat函数连接字符串1和字符串2
    strcat(str,str2);

    printf("连接后的字符串是: %s\n",str);

    return 0;

}


2.编写程序实现对字符串有效数据长度的计算;

法一:不用strlen函数

*2.编写程序实现对字符串有效数据长度的计算;*/

#include <stdio.h>

int main(void)
{
    char str[8];
    unsigned int len = 0;

    printf("请输入一个字符串:");
    fgets(str,sizeof(str),stdin);

    while(str[len] != '\0')  //遇到结束符停止循环
    {
        len++;  //若未遇到结束符则增加有效数据长度
    }

    //屏蔽这里为还不是很懂,fgets()函数会自动添加结束符,我想添加判断语句却不行`
    /*if(len > 7)
    {
        printf("输入字符串太长,请重新输入。\n");
    }*/

    printf("字符串中有效数据长度为: %u\n",len - 1); //减去结束符就是长度

    return 0;
}

法二:strlen函数

/*strlen函数*/

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[8];
    unsigned int len;

    printf("请输入一个字符串:");
    fgets(str,sizeof(str),stdin);

    len = strlen(str) - 1;

    printf("输入的有效的字符串长度是: %u\n",len);

    return 0;

}


3.编程实现随机输出多个字符串中的某个;

/*3.编程实现随机输出多个字符串中的某个;*/

#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>

#define r 3
#define l 32

int main(void)
{
    char arr[r][l] = {
                        "hello",
                        "Spring Festival",
                        "Happy New Year"

                     };

    srand(time(NULL)); //生成种子数

    int randow;
    randow = rand() % r;  //随机生成选中的字符串的数字放入randow变量中

    printf("随机选中的字符串是: %s\n",arr[randow]);

    return 0;
}


思考题: 
    计算字符串中所有数字的和
    字符串“123abd23ee1”==>123 + 23 + 1 = 147

划重点讲解:积累字符串变数组的小算法

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[64] = {0};
    printf("请输入一个字符串:");
    scanf("%s",str);
    
    int num = 0; // 初始化一个变量来存储连续数字的值
    int sum = 0; // 初始化一个变量来存储所有数字的和
    
    for (int i = 0; str[i] != '\0'; i++) // 循环遍历字符串中的每个字符
    {
        if (str[i] >= '0' && str[i] <= '9') // 如果字符是数字
        {
            num = num * 10 + (str[i] - '0'); // 将数字字符转换为数字并累加到num
        }
        else
        {
		    sum += num;
		    num = 0;  //num清零处理再进入循环
        }
    }

	sum += num;  //加上最后一个数字,因为最后一个为数字的话,后面空字符将无法进入for循环

    printf("字符串中数字总和为: %d\n", sum); // 打印字符串中数字的总和

    return 0;
#include <stdio.h>
#include <string.h> 

int main(void)
{
    char str[] = "123abd23ee1"; // 定义一个字符数组,并初始化为给定的字符串
    printf("字符串为: %s\n",str); // 打印输入的字符串

    int sum = 0; // 定义一个变量来存储数字的和
    int num = 0; // 定义一个变量来存储当前数字的值
    int i = 0; // 定义一个索引变量,用于遍历字符串

    while(str[i] != '\0') // 当字符串结束符之前,循环继续
    {
        if(str[i] >= '0' && str[i] <= '9') // 如果数组中遍历到数字将进行此循环
        {
            num = num * 10 + (str[i] - '0'); // 将当前数字乘以10,然后加上字符转换为的数字,也就是2个数字变十位,3个数字变百位...
        }
        else // 如果是字符不是数字进行存储累加
        {
            sum += num; // 将当前数字的和加到总和中
            num = 0; // 将当前数字重置为0
        }
    }

    sum += num; // 将最后一个数字加到总和中

    printf("字符串中所有数字的和为: %d\n",sum); // 打印字符串中所有数字的和

    return 0;
}

这个写完就进入函数啦,嘿嘿

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

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

相关文章

算法基础——单调栈,单调队列

目录 1.单调栈 例题&#xff1a;【模板】单调栈 例题:求和 2.单调队列 例题&#xff1a;滑动窗口 1.单调栈 例题&#xff1a;【模板】单调栈 可以想象出一个柱状图&#xff0c;值越大&#xff0c;这个柱子越高 以此题的样例为例&#xff1a; 第一个数为7&#xff0c;想…

.ma1x0勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者&#xff1a; 数据安全问题备受关注。而勒索病毒是其中一种最为恶劣的威胁之一。其中&#xff0c;.ma1x0勒索病毒备受人们担忧&#xff0c;因其可将用户的数据文件加密&#xff0c;并要求支付赎金以解密文件。本文将介绍.ma1x0勒索病毒的特征、预防方法以及如何恢复…

GIS分析和摄影测量进行屋顶太阳能潜力评估

目前,不可再生的能源资源有限,而减少全球变暖的想法使可再生能源的利用成为当务之急。其中,太阳能作为最清洁、最丰富的可再生能源备受关注。此外,成本的日益降低也使太阳能成为一种极具吸引力的能源。然而,为了从太阳能中获得最大利益,必须考虑各种标准,并选择合适的区…

SG3225EAN规格书

SG3225EAN 晶体振荡器利用先进的锁相环技术和AT切割晶体单元&#xff0c;提供了宽频率范围和高性能LV-PECL输出&#xff0c;73.5 MHz至700 MHz的宽频率范围&#xff0c;能够保证高稳定性和宽频率调整的能力&#xff0c;适应于多样化的应用需求。2.5V和3.3V两种供电电压&#xf…

Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

&#x1f409;目录 9 JdbcTemplate 9 JdbcTemplate Spring 框架对 JDBC 进行了封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 相关包&#xff1a; 百度网盘链接https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd6666 创建properties配置文件 &#x1f4a5;注意…

Stackoverflow(1)-根据RequestBody的内容来区分使用哪个资源

如果使用Spring&#xff0c;可以通过RequestBody将请求体的json转换为Java对象&#xff0c;但如果URI相同&#xff0c;而请求体的内容不同&#xff0c;应该怎么办&#xff1f;问题来源(stackoverflow)&#xff1a;Spring RequestBody without using a pojo?稍微研究了一下&…

vue-router 实现路由懒加载

在现代的Web开发中&#xff0c;前端技术的发展日新月异。在构建大规模单页应用&#xff08;Single Page Application&#xff09;时&#xff0c;路由管理是一个非常重要的环节。随着用户对网页速度和性能的要求越来越高&#xff0c;有效的路由管理能够显著提升用户体验。本篇博…

torch.utils.data

整体架构 平时使用 pytorch 加载数据时大概是这样的&#xff1a; import numpy as np from torch.utils.data import Dataset, DataLoaderclass ExampleDataset(Dataset):def __init__(self):self.data [1, 2, 3, 4, 5]def __getitem__(self, idx):return self.data[idx]def…

GitKraken Create Repository and Clone不可点击

问题 GitKraken Create Repository and Clone不可点击 详细问题 笔者第一次使用GitKraken&#xff0c;在创建仓库时&#xff0c;填写完成仓库初始化后。发现Create Repository and Clone不可点击。 解决方案 选择Where to clone to位置 产生原因 在创建仓库时&#xff0…

IO 作业 24/2/18

1> 使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, const char *argv[]) {//定义文件指针FILE *fpNULL;//打开文件&#xff08;只读&#xff09;if((fpfopen("./test.txt",&quo…

机器人内部传感器-位置传感器-电位器式位置传感器

位置传感器 位置感觉是机器人最基本的感觉要求&#xff0c;可以通过多种传感器来实现。位置传感器包括位置和角度检测传感器。常用的机器人位置传感器有电位器式、光电式、电感式、电容式、霍尔元件式、磁栅式及机械式位置传感器等。机器人各关节和连杆的运动定位精度要求、重…

suse15 sp3-sp5离线安装中安装FIO

没有网络的情况下&#xff0c;离线安装相对比较困难一点&#xff0c;所有需要提前下载相应的RPM安装包 FIO 安装包链接如下&#xff1a; Install package benchmark / fio 正常安装的时候&#xff0c;会出现问题 如下&#xff1a; google下 https://opensuse.pkgs.org/15.5/…

WorkPlus Meet助力企业建立安全可靠的私有化视频会议平台

企业需要保护敏感信息和保证会议质量的同时&#xff0c;提高会议的效率和协作水平。作为一款私有化视频会议软件系统&#xff0c;WorkPlus Meet以其卓越的性能和高度私密的特性&#xff0c;助力企业打造安全可靠的私有化视频会议平台。 为何选择WorkPlus Meet作为私有化视频会议…

软件实例分享,酒店酒水寄存管理系统软件教程

软件实例分享&#xff0c;酒店酒水寄存管理系统软件教程 一、前言 以下软件教程以 佳易王酒水寄存管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、寄存的商品名称可以预先设置 2、寄存人可以使用手.机号识别 3、会员充值…

flowpilot Pxiel 6 redmi K30 Pro

Installation flowdriveai/flowpilot Wiki GitHub Flowpilot can be installed on: Android phone Non-rooted running Android 10Android 11Android 12Rooted running Android 13 requires rootDesktop pc with Ubuntu > 20.04. 安装Termux https://f-droid.org/repo…

Sentinel从入门到“精通”,从源码层面学习Sentinel

B站视频讲解 文章目录 一、安装1、原生使用2、dashboard整合2-1、非starter整合2-1-1、公共2-1-2、Filter2-1-3、AOP2-2、starter 整合 3、总结 二、常见的策略1、限流1-1、基于QPS 限流1-2、基于线程数限流 2、降级2-1、慢调用比例2-2、异常数&#xff08;限流异常不算&#x…

《游戏引擎架构》--学习

内存管理 优化动态内存分配 维持最低限度的堆分配&#xff0c;并且永不在紧凑循环中使用堆分配 容器 迭代器 未完待续。。。

深度学习与计算机视觉 | 实用CV开源项目汇总(有github代码链接,建议收藏!)

本文来源公众号“深度学习与计算机视觉”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;【建议收藏】实用CV开源项目汇总&#xff08;文末有彩蛋~&#xff09; 01 Trace.moe 图像反向搜索动漫场景&#xff0c;使用动漫截图搜索该…

债券专题二:可转债估值-二叉树模型

1. 模型背景 由于可转债自身的属性较多&#xff0c;因此对其定价的难度也会加大&#xff0c;在诸多影响因素中&#xff0c;未来的股价占比最高。由于股价的不可预测性&#xff0c;导致了可转债的定价在实际交易中作用非常有限。随着可转债发行数量和规模的增大&#xff0c;越…

PHP支持的伪协议

php.ini参数设置 在php.ini里有两个重要的参数allow_url_fopen、allow_url_include。 allow_url_fopen:默认值是ON。允许url里的封装协议访问文件&#xff1b; allow_url_include:默认值是OFF。不允许包含url里的封装协议包含文件&#xff1b; 各协议的利用条件和方法 php:/…