有一个运算程序a*b=n

有一个运算程序a*b=n,第1张

在这里是一个自定义的特殊运算符,只要ab=n,那么就可以得到(a+c)b=n+c和a(b+c)=n-2c对于任意c都满足,已知11=2

1、设a=1,b=1,c=2009,n=2,则代入(a+c)b=n+c有(1+2009)1=2+2009,即得到20101=2011

2、使用上步结果,令a=2010,b=1,c=2009,n=2011,则代入a(b+c)=n-2c,即2010(1+2009)=2011-22009

即得20102010=-2007

两步相反也没有关系,结果是一样的

#include "stdioh"

#include "stdlibh"

void main ()

{

int m,l,p,q;

printf("输入第一个矩阵的维数m和l:\n");

scanf("%d%d",&m,&l);

printf("输入第二个矩阵的维数p和q:\n");

scanf("%d%d",&p,&q);

while (l!=p)

{

printf("两个矩阵不匹配,不能进行相乘运算,请重新输入\n\n");

printf("输入第一个矩阵的维数m和l:\n");

scanf("%d%d",&m,&l);

printf("输入第二个矩阵的维数p和q:\n");

scanf("%d%d",&p,&q);

}

double a[200][200]={0}, b[200][200]={0},sum=0;

int i,j,k=0;

for (i=0;i<m;i++)

{

for (j=0;j<l;j++)

{

a[i][j]=(double)rand()/RAND_MAX;

}

}

printf("随机矩阵a是:\n");

for (i=0;i<m;i++)

{

for (j=0;j<l;j++)

{

printf("%f ",a[i][j]);

}

printf("\n");

}

//cout<<"输入一个32的矩阵:"<<endl;

for (i=0;i<p;i++)

{

for (j=0;j<q;j++)

{

b[i][j]=(double)rand()/RAND_MAX;

}

}

printf("随机矩阵b是:\n");

for (i=0;i<p;i++)

{

for (j=0;j<q;j++)

{

printf("%f ",b[i][j]);

}

printf("\n");

}

printf("ab相乘结果为:\n");

for (i=0;i<m;i++)

{

while (k<q)

{

for (j=0;j<q;j++)

{

sum = a[i][j]b[j][k]+sum;

}

printf("%f ",sum);

k++;

sum=0;

}

k=0;

printf("\n");

}

}

很明显 你没有按照要求去做:

输入格式:输入在第一行给出两个整数A和B(-100≤A,B≤100),数字间以空格分隔。

应该是

int a=-200,b=-200;

while(a>100 || b >100 || a<-100||b<-100)

{

scanf("%d %d",&a,&b);

}

输出格式:在一行中输出A乘以B的值。

应该是printf("%d\n",ab);

参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0,

1^0=1,

0^1=1,

1^1=0

例如:10100001^00010001=10110000

0^0=0,0^1=1

0异或任何数=任何数

1^0=1,1^1=0

1异或任何数-任何数取反

任何数异或自己=把自己置0

(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。

 

10100001^00000110=10100111

//1010

0001

^

0x06

=

1010

0001

^

6

(2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:

a=10100001,b=00000110

a=a^b;

//a=10100111

b=b^a;

//b=10100001

a=a^b;

//a=00000110

(3)异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a

你这里的(a+c)=n+c应该是(a+c)b=n+c吧:

那么可以这么计算:

已知ab=n,且(a+c)b=n+c和a(b+c)=n-2c成立,

又11=2,

那么,12013=1(1+2012)=2-22012=-4022;

(套用第二个式子a(b+c)=n-2c,这里的n=2,a=1,b=1,c=2012)

然后20132013=(1+2012)2013=-4022+2012=-2010;

(套用第一个式子(a+c)b=n+c,这里a=1,b=2013,n=-4022)

反正这个题目就是用这两个假设的式子套用上去,随便你用什么顺序,最终都是套用类似的公式。

以上就是关于有一个运算程序a*b=n全部的内容,包括:有一个运算程序a*b=n、写出矩阵a矩阵b的乘积是矩阵c的c语言程序过程、关于PTA里面程序设计的问题,题目简单,细节太严,真不知道哪里出错了!求大佬解答!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10167199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存