C语言—字符数组(3)

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

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;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue路由

Vue路由 一、路由的基本使用二、组件的存放目录问题三、路由的封装抽离四、声明式导航-导航链接五、声明式导航-查询参数传参六、Vue路由-重定向七、编程式导航-两种路由跳转方式八、编程式导航-两种路径跳转传参九、多级路由十、缓存组件 一、路由的基本使用 1.目标 认识插件…

算法学习系列(三十五):贪心(杂)

目录 引言一、合并果子&#xff08;Huffman树&#xff09;二、排队打水&#xff08;排序不等式&#xff09;三、货仓选址&#xff08;绝对值不等式&#xff09;四、耍杂技的牛&#xff08;推公式&#xff09; 引言 上一篇文章也说过了这个贪心问题没有一个规范的套路和模板&am…

《白话C++》第10章 STL和boost,Page73~74 boost::scoped_array

当所要创建的具体类型必须在运行时才能确定&#xff0c;此时需要使用new来实现动态创建&#xff1b; 另外还有一种&#xff1a;当需要一次性创建多个对象&#xff0c;但到底是几个无法在写代码时知道&#xff0c;需要在运行时动态创建&#xff0c;这种情况下也需要动态创建。此…

大数据,对于生活的改变

谷歌通过对于疾病的查询量可以预测一个个h1n1病毒的大爆发&#xff0c; 大数据时代对于人的考验 用户的搜索记录就是一种信息&#xff0c;这种信息会满足其基础相关的词条与其有关的词条&#xff08;最为原始的搜索机制&#xff0c;国内的搜索引擎都是采用这种基础原理。&…

柚见(伙伴匹配系统)第五期

后端个人信息接口 前端修改用户信息&#xff0c;点击提交&#xff1b;现在无法对接到后端&#xff0c;需要在后端新写一个接口/user/update。 控制层新增用户信息更新接口。 HttpServetRequest request: 前端的请求头中获取cookie,在后端查询登录态进行鉴权 User getLoginU…

化繁为简!用pytest编写接口自动化测试脚本的简易思路

引言 当今互联网时代&#xff0c;软件质量成为越来越重要的一个问题&#xff0c;而接口自动化测试是保障软件质量的一种关键手段。 在这个过程中&#xff0c;pytest成为了许多开发者的首选工具&#xff0c;既易于使用&#xff0c;又具有强大的功能。但是&#xff0c;对于初学…

C/C++ BM8 链表中倒数最后k个结点

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题和BM1中的思路有些许类似&#xff0c;整体不难。 题目 描述 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 ai &#xff0c;返回该链表中倒数第k个节点。 如果…

three.js 物体下落动画(重力加速度)

效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><el-button click"loopFun"> 物体下落…

效果图渲染为什么找「瑞云渲染」瑞云渲染邀请码WFQB

效果图的渲染可以通过个人的电脑&#xff0c;也可以通过第三方的云渲染平台&#xff0c;两者之间的区别很多人都知道是什么。如果用户需要使用个人电脑&#xff0c;通常需要搭配高性能的硬件&#xff0c;然而硬件中最贵的当数CPU、GPU&#xff0c;云渲染平台则是通过租用高配置…

day6:继承与多态

思维导图 2.编程题&#xff1a; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a;比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff…

Win32汇编数组学习2

之前学习过win32汇编数组&#xff1b;还不熟悉&#xff1b;继续熟悉&#xff1b; 先做几个基本的对话框&#xff0c;有一个静态文本框&#xff1b; 定义数组之后&#xff0c;用 wsprintf 函数格式化&#xff0c;然后调用 SetDlgItemText 赋值给静态文本框&#xff1b; arr1 …

[C++]二叉搜索树

一、定义 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也分别…

深入浅出熟悉OpenAI最新大作Sora文生视频大模型

蠢蠢欲动&#xff0c;惴惴不安&#xff0c;朋友们我又来了&#xff0c;这个春节真的过的是像过山车&#xff0c;Gemini1.5 PRO还没过劲&#xff0c;OpenAI又放大招&#xff0c;人类真的要认输了吗&#xff0c;让我忍不住想要再探究竟&#xff0c;到底是什么让文生视频发生了质的…

C语言—指针

碎碎念:做指针题的时候我仿佛回到了原点&#xff0c;总觉得目的是为了把框架搭建起来&#xff0c;我胡说的哈31 1.利用指针变量将一个数组中的数据反向输出。 /*1.利用指针变量将一个数组中的数据反向输出。*/#include <stdio.h> #include <time.h> #include <…

常用类与基础API-String的理解和不可变性

1.String类的理解 1.1类的声明 public final class String >final &#xff1a;String是不可继承的。 >Serializable :可序列化的接口,凡是实现此接口的类的对象就可以通过网络或本地流进行数据的传输 >comparable:凡是实现此接口的类,其对象都可以比较大小. 1.…

【MySQL】多表关系的基本学习

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

基于8086单片机的数码管计时系统[proteus仿真]

基于8086单片机的数码管计时系统[proteus仿真] 8086仿真设计这个题目算是课程设计中常见的题目了&#xff0c;本期是一个基于8086单片机的数码管计时系统[proteus仿真] 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe5;&a…

Fiddler抓包(网页、手机、MUMU模拟器)

前置条件&#xff1a;电脑上下载安装好了Fiddler&#xff0c;有浏览器 一、网页抓包 1、fiddler下载安装证书 Tools-Options 勾选下面两个框 点击下面的选项&#xff0c;信任证书 会弹出弹窗&#xff0c;点击yes&#xff08;这个时候注意&#xff0c;DO_NOT_TRUST_FiddlerRo…

防御保护第五次作业

1,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) FW5&#xff1a; 2,分公司设备可以通过总公司的移动链路和电信链路访问到DMz区的http服务器 FW5&#xff1a; 注&#xff1a;记得通过安全策略放行 分公司FW3 注意&#xff1a…

Open CASCADE学习|曲线向曲面投影

在三维空间中&#xff0c;将曲线向曲面投影通常涉及复杂的几何计算。这个过程可以通过多种方法实现&#xff0c;但最常见的是使用数学和几何库&#xff0c;如OpenCASCADE&#xff0c;来处理这些计算。 在OpenCASCADE中&#xff0c;投影曲线到曲面通常涉及以下步骤&#xff1a;…