| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1165 人关注过本帖
标题:两个数的另类乘法,比如123*45=1*4+1*5+2*4+2*5+3*4+3*5?帮忙纠正一下错误
只看楼主 加入收藏
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
两个数的另类乘法,比如123*45=1*4+1*5+2*4+2*5+3*4+3*5?帮忙纠正一下错误
#include<stdio.h>
int main()
{
  int n,i,sum,j,s,m;
  char a[10],b[10];
  scanf("%d",&n);
  while(n--)
  {
      m=0;
      scanf("%s%s",a,b);
  for(i=0;i<10;++i)
  {   
      if(a[i]!='\0')
      {
          s=0;
      for(j=0;j<10;++j)
      {
          sum=0;
          if(b[j]!='\0')
              sum=a[i]*b[j];
      }
          s=sum+s;
      }
      m=m+s;
  }
      printf("%d\n",m);
  }
  return 0;
}
搜索更多相关主题的帖子: 另类 
2011-04-13 12:13
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
回复 楼主 天谈2011
atoi一下了吗

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-13 12:20
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
收藏
得分:0 
回复 2楼 ansic
什么意思?
2011-04-13 15:32
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
数组a和数组b都是字符数组,他们之间做乘法要先把字符转换成整数,即atoi。不过你的思路确实很另类。我看不懂。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-13 15:37
死不了的恨
Rank: 2
来 自:淮北
等 级:论坛游民
帖 子:16
专家分:54
注 册:2011-4-11
收藏
得分:2 
楼主可以利用栈的思想来实现这种另类的乘法。
我做了一个程序,楼主可以作为参考,程序已运行过,无错误。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OVERFLOW -2
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 5
typedef struct{
    int * base;
    int * top;
    int stacksize;
}SqStack;
//创建栈
void InitStack(SqStack & S)
{
    S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int));
    if(!S.base)
        exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
}
//进栈功能
void Push(SqStack &S,int integer)
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top++=integer;
}
//用来接收数据
void InputNum(SqStack & S)
{
    char ch;
    int integer;   
    while((ch=getchar())!='\n')
    {
        integer=ch-48;//将字符型数据转换成整型数据(0的ASCII码为48)
        Push(S,integer);
    }
}
//实现乘法
int Multiple(SqStack S,SqStack T)
{
    int internum=0;
    int inter;
    SqStack M;
    InitStack(M);
    while(S.top>S.base)
    {
        M=T;
        inter=*(--S.top);
        while(M.top>M.base)
            internum+=inter * *(--M.top);
    }
    return internum;
}
void main()
{
    int mult;//用来接收两数相乘的返回值
    SqStack Data1,Data2;
    InitStack(Data1);
    InitStack(Data2);
    printf("请输入被乘数:");
    InputNum(Data1);
    printf("\n请输入乘数:");
    InputNum(Data2);
    printf("\n两数相乘的结果为:");
    mult=Multiple(Data1,Data2);
    printf("%d\n",mult);
}

天行鉴,君子以自强不息。
2011-04-13 16:57
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
收藏
得分:0 
回复 5楼 死不了的恨
能用一个较简单的程序来写吗?
您的程序我看不明白
2011-04-13 22:13
boxinchao
Rank: 4
等 级:业余侠客
帖 子:51
专家分:231
注 册:2011-4-13
收藏
得分:2 
这个问题用循环就比较合适了,但是楼主的那几个统计变量的操作可能有问题
2011-04-14 07:55
死不了的恨
Rank: 2
来 自:淮北
等 级:论坛游民
帖 子:16
专家分:54
注 册:2011-4-11
收藏
得分:0 
楼主可以看一下这个用数组实现的。比较简单,应该能理解。
#include<stdio.h>
#define MAX 10
void main()
{
    char ch;//用来接收字符
    int integer;
    int a[MAX],b[MAX];
    int i=0,j=0,k,l;
    int sum=0;
    printf("请输入被乘数:");
    while((ch=getchar())!='\n')
    {
        integer=ch-48;//将接收的字符转换成整形数据
        a[i]=integer;//将接收的整形数据放入数组中
        i++;//通过i来确定数组有多少元素,即假如输入534,a数组中共有3个元素a[0]=5,a[1]=3,a[2]=4,此时i的结果是3
    }
    printf("\n请输入乘数:");
    while((ch=getchar())!='\n')
    {
        integer=ch-48;//同上
        b[j]=integer;//同上
        j++;//同上
    }
    for(k=0;k<i;k++)
        for(l=0;l<j;l++)
            sum+=a[k]*b[l];
        printf("两数相乘的结果是:%d\n",sum);
}

天行鉴,君子以自强不息。
2011-04-14 08:47
chenhuixiang
Rank: 2
等 级:论坛游民
帖 子:10
专家分:22
注 册:2011-4-4
收藏
得分:2 
就用数组就好处理了。
2011-04-14 18:59
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
收藏
得分:0 
回复 7楼 boxinchao
该怎样改正?
2011-04-14 19:30
快速回复:两个数的另类乘法,比如123*45=1*4+1*5+2*4+2*5+3*4+3*5?帮忙纠正一下 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066071 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved