• C++多位整形数据相乘的代码


    #include<iostream>
    #include<string.h>
    void mutilpy(char *str,char *str1){//返回一个指向数组的指针
    //std::cout<<strlen(str);测试是否可以读取到有多少个字符
    int *sum = (int *)malloc(sizeof(int)*(strlen(str) + strlen(str1)));//为sum开辟内存空间
    memset(sum, 0, sizeof(int)*(strlen(str) + strlen(str1)));//对创建的数组进行赋值
    //下面这个是将相乘的数据整合到一个数组里面
    for (int i = 0; i < strlen(str);i++){
    for (int j = 0; j < strlen(str1); j++){
    sum[i + j + 1] += (str[i]-'0') * (str1[j]-'0');//第一个位置空出来,作为预留的位置,减0是为了让数字和int类型相对应
    }
    }
    for (int i = strlen(str) + strlen(str1)-1; i >0; i--){
    if (sum[i] >= 10){//先判断是否符合条件
    sum[i - 1] += sum[i] / 10;//先向前进位
    sum[i] %= 10;
    }
    }
    int tmp = strlen(str) + strlen(str1) - 1;
    while (sum[tmp] == 0){
    tmp--;//去掉后面为0的数
    }
    for (int i = 0; i <= tmp; i++){
    if (i == 0 && sum[i] == 0){//第一个为0的情况
    continue;
    }
    std::cout << sum[i];//输出结果
    }
    std::cout << std::endl;//打印换行
    }
    void main(){
    char str[105] = { 0 };//定义一个100以内的字符数组
    char str1[105] = { 0 };
    std::cout << "请输入两个正整数,你将得到这两个整数的乘积(两个数的长度控制在0-100之间)"<<std::endl;
    std::cin >> str >> str1;//输入一个整数的值
    mutilpy(str, str1);//调用大数据乘法函数
    //std::cout << str << str1 << std::endl;检测输入是否正确
    system("pause");

    }


  • 相关阅读:
    ASP.NET MVC 编程参考
    IDEA+Gradle相关资料
    【树莓派】Linux应用相关:自动删除n天前日志
    【树莓派】制作树莓派最小镜像:img裁剪瘦身
    【树莓派】树莓派下WiFi断线自动重连
    【树莓派】树莓派远程监控
    【树莓派】服务配置相关
    【树莓派】Linux自动配置IP
    Jmeter相关
    Linux集群监控工具简介:Ganglia和Nagios
  • 原文地址:https://www.cnblogs.com/csnd/p/16675655.html
Copyright © 2020-2023  润新知