iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中字符串相乘的示例分析
  • 258
分享到

C语言中字符串相乘的示例分析

2023-06-29 17:06:21 258人浏览 薄情痞子
摘要

这篇文章主要介绍C语言中字符串相乘的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 分析思路示例:我们把每一个数都看成是一个字符串,每一个元素为十进制数字所对应的字 符,由于是后面的元素先进行运算,故我们

这篇文章主要介绍C语言字符串相乘的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    一. 分析思路

    示例:

    C语言中字符串相乘的示例分析

    我们把每一个数都看成是一个字符串,每一个元素为十进制数字所对应的字 符,由于是后面的元素先进行运算,故我们应当把末尾的字符赋值给a[0],以此类推。如下所示:(s1,s2分别表示两个相乘的字符串)

    for(i=0; i<n; i++)            a[i]=s1[n-i-1]-'0';        for(i=0; i<m; i++)            b[i]=s2[m-1-i]-'0';

    当我们把需要操作的前后顺序弄清之后,接下来就是核心的算法部分了(看了几篇关于这个的博文,都没有详细的去解释这个问题)。其实上一张图片已经展示了将要做的算法步骤,但是说实话也不是说得很清楚,接下来看一下这张图片:

    C语言中字符串相乘的示例分析

    当我们把需要做的元素具体化之后,我们看到了其中的一个规律,上下能够进行相加的数字(通过-‘0'已经变成了数字)他们的因数的角标和是相等的,那么,我们就知道如何进行计算:

            for(i=0; i<n; i++)            for(j=0; j<m; j++)                c[i+j]+=a[i]*b[j];

    n,m分别代表字符串的长度,也就是相乘元素的个数。解决了这个问题,剩下的问题便不是问题

    二、使用步骤

    1.代码如下

    代码如下(示例):

    //大数乘法(字符串相乘)#include<stdio.h>#include<math.h>#include<string.h>#define M 10005char s1[M],s2[M],s[M];int a[M],b[M],c[M];int main(){    int i,j,m,n,k;    while(~scanf("%s%s",s1,s2))    {        memset(c,0,sizeof(c));        n=strlen(s1);        m=strlen(s2);        k=n+m;//保证相乘后的位数不会大于k        printf("s1的长度=%d s2的长度=%d\n",n,m);         for(i=0; i<n; i++)            a[i]=s1[n-i-1]-'0';        for(i=0; i<m; i++)            b[i]=s2[m-1-i]-'0';                  for(i=0; i<n; i++)            for(j=0; j<m; j++)                c[i+j]+=a[i]*b[j];        for(i=0; i<=k; i++)//进行进位操作        {            if(c[i]>=10)            {                c[i+1]+=c[i]/10;                c[i]%=10;            }        }         i=k;        while(c[i]==0) i--;         if(i<0) printf("0");        else        {            for(; i>=0; i--)                printf("%d",c[i]);        }        printf("\n");    }    return 0;}

    2、memset函数

    这里我们利用memset将c进行初始化,那为什么不直接char c[]={0}?是因为如果字符串太长,将会使代码运行较慢,并不是最优解,而memset函数是直接访问地址,运行速度将会提升。

    C语言中字符串相乘的示例分析

    memset有三个参数,通过图片我们发现依次为数组名,赋值整形,以及类型字节长度,我们可以利用sizeof(void)求出

    以上是“C语言中字符串相乘的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网其他教程频道!

    --结束END--

    本文标题: C语言中字符串相乘的示例分析

    本文链接: https://www.lsjlt.com/news/325963.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • c语言怎么计算字符串长度
      在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
      99+
      2024-05-15
      c语言
    • c语言怎么判断三个数的大小
      可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
      99+
      2024-05-15
      c语言
    • c++排序函数sort怎么使用
      在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
      99+
      2024-05-15
      c++
    • c++中string的compare函数怎么使用
      在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
      99+
      2024-05-15
      c++
    • c++中string的compare函数有什么用
      c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
      99+
      2024-05-15
      c++
    • c++中print函数的功能有哪些
      在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
      99+
      2024-05-15
      c++
    • c语言数据结构怎么使用
      在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
      99+
      2024-05-15
      c语言
    • c++中print函数的用法是什么
      在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
      99+
      2024-05-15
      c++
    • c++中concept的用法是什么
      在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
      99+
      2024-05-15
      c++
    • c++中concept的作用是什么
      在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
      99+
      2024-05-15
      c++
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作