首先注意子函数要放在主函数外面,其次注意子函数返回的类型,你的max函数要返回一个int类型的数,所以要在max加int,还有函数里面的参数之间用逗号隔开,c语言中与 *** 作符是&&不是逗号,最后你的max函数写错了,你这样写是无法得到正确的max值的。代码如下:
#include
int
max(int
x,int
y,int
t)
{
int
z=x;
if(y>z)
z=y;
if(t>z)
z=t;
return
z;
}
void
main()
{
int
a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
}
既然你都理解了sum和carry的含义,还有什么不懂得呢。
就像你所说的sum就是相加,但是二进制异或的加是没有考虑进位的,所以就用carry来记录进位,而如果carry不为0,表示还有进位,也就是还没有加完,要把你算出来没有进位的sum和代表进位carry相加才行,所以再一次调用Add,直到得到的carry为0,也就没有进位了,也就表示加完了,就可以停止了
用C语言编写程序(两个矩阵相加)代码如下:
/
MatrixAdditionc
实现两个矩阵相加
/
#include<stdioh>
const int COLS=3;
void printMatirx(int pArray,int rows,int cols);
void printMatirx2(int (pArray)[COLS],int rows);
int main()
{
int A[3][4]={{15,10,9,12},
{18,14,8,7},
{16,13,6,11}};
printf("矩阵A=\n");
printMatirx(A,3,4);
int B[3][4]={{4,3,5,2},
{0,9,6,1},
{5,7,2,6}};
printf("矩阵B=\n");
printMatirx(B,3,4);
int C[3][4];
int i,j;
//矩阵相加:两个矩阵必须行数和列数一样才能相加,
//和矩阵的每个元素分别是两个矩阵对应的元素的和
printf("矩阵A+矩阵B=\n");
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
C[i][j]=A[i][j]+B[i][j];
//printf("%3d",C[i][j]);//输出结果
}
// printf("\n");
}
int (p)[COLS]=C;
printMatirx2(p,3);
/结果应为:
19 13 14 14
18 23 14 8
21 20 8 17
/
printf("矩阵C-矩阵A=\n");
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
printf("%3d",C[i][j]-A[i][j]);//输出结果
}
printf("\n");
}
/结果应为:
4 3 5 2
0 9 6 1
5 7 2 6
/
//矩阵数乘:
int D[3][4];
printf("矩阵D:\n");
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
D[i][j]=1;
printf("%d\t", D[i][j]);//输出结果
}
printf("\n");
}
int mul;
printf("矩阵D数乘以:");
scanf("%d",&mul);
printf("矩阵D数乘以%d=\n",mul);
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
D[i][j]=D[i][j]mul;
printf("%d\t", D[i][j]);//输出结果
}
printf("\n");
}
return 0;
}
扩展资料:
C语言矩阵加减法函数:
void matrix_a(double a_matrix, const double b_matrix, const double c_matrix,int krow, int kline, int ktrl)
////////////////////////////////////////////////////////////////////////////
// a_matrix=b_matrix+c_matrix
// krow :行数
// kline :列数
// ktrl :大于0: 加法 不大于0:减法
////////////////////////////////////////////////////////////////////////////
{
int k, k2;
for (k = 0; k < krow; k++)
{
for(k2 = 0; k2 < kline; k2++)
{
a_matrix[k][k2] = b_matrix[k][k2]
+ ((ktrl > 0) c_matrix[k][k2] : -c_matrix[k][k2]);
}
}
}
参考资料:
百度百科-C语言
这个只能字符串来解决,还需要字符串反序来存储这个数字
char
a[100],b[100],c[100];
int
i,t,l1,l2,l3;
gets(a);
gets(b);
//反序
l1=strlen(a);
for(i=0;i<=l1/2;i++)
{
t=a[i]-'0';
a[i]=a[l-i]-'0';
a[i-i]=t;
}
l2=strlen(b);
for(i=0;i<=l2/2;i++)
{
t=b[i]-'0';
b[i]=b[l-i]-'0';
b[i-i]=t;
}
l3=l1>l2l1:l2;
c[1]=a[1]+b[1];
for(i=1;i<=l3;i++)
{
if(c[i-1]/10==1)
{
c[i-1]%=10;
c[i]=(a[i]+b[i])%10+1;
}
else
c[i]=(a[i]+b[i]);
}
if(c[i-1]/10==1)
{
c[i-1]%=10;
c[i]=1;
c[i+1]='\0';
}
else
c[i]='\0';
l3=strlen(c);
for(i=l3;i>=0;i--)
printf("%c",c[i]);
一个简易的计算器的。可以无限加。。把乘除减都删除了,你改下+好就可以换
#include<stdioh>
#include<mathh>
double com(double op1,double op2,char op)
{
if(op=='+') return op1+op2;
if(op=='-') return op1-op2;
if(op=='') return op1op2;
if(op=='/') return op1/op2;
}
int main()
{
int i=0,j=0,t=0;
double x,y;
char c;
char b[100]={};
double a[100]={};
while(1)
{
scanf("%lf",&a[i]);i++;
scanf("%c",&b[j]);
if(b[j]=='\n') break;
j++;
}
for(i=0;i<j;i++)
{
if(b[i]=='+')
{
c=b[i];x=a[i];y=a[i+1];
a[i+1]=com(x,y,c);
}
}
printf("%2lf\n",a[i]);
}
在vs2015中,我们可以这样写代码:
int add(int a, int b)
{
return (b == 0) a : add(a ^ b, (a & b) << 1);
/
if(b == 0)
return a;
else
return add(a ^ b, (a & b) << 1);
//异或结果 + 与运算结果左移一位
/
}
:
C++是面向对象的程序语言,区别我们的C语言,具体编程首先要定义一个类,类中包含私有成员以及公有成员两部分,私有成员主要是变量,公有成员主要是方法,另外还需要另外的cpp程序来实现这些公有方法,以及一个主函数。一般的,外部对私有成员是不能直接访问的,需要通过调用公有方法来实现访问私有成员。
数据在计算机内存中是以二进制存储的。
几种常用的位运算:
与运算&: 对应位均为1时为1,其它为0。
或运算|: 对应位均为0时为0,其它为1。
异或运算^: 对应位不相同时为1,相同时为0
按位取反~: 每一位取反
右移>>: 将二进制进行右移,低位丢掉,高位补零。
左移<<: 将二进制进行左移,低位补零,高位丢掉。
//程序如下,加法 减法各25道
#include<stdioh>
#include<timeh>
#include<stdlibh>
void main()
{
int i,a,b,c,score=0;
srand((unsigned)time(NULL));
for(i=1;i<=50;i++)
{ a=rand()%89+10;
b=rand()%89+10;
c=rand()%198;
if(i<=25)
{
printf("%d+%d=%d\n",a,b,c);
if(c==a+b)
{printf("正确!\n");
score+=2;
}
else
printf("错误!\n");
}
else
{
printf("%d-%d=%d\n",a,b,c);
if(c==a-b)
{printf("正确!\n");
score+=2;
}
else
printf("错误!\n");
}
}
printf("总分为:%d\n",score);
}
#include <stdioh>
main()
{
int a,b,c;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
c=a+b;
printf("这两个数的和是:\n%d+%d=%d",a,b,c);
}
以上就是关于C语言怎么写一个三个数的加法全部的内容,包括:C语言怎么写一个三个数的加法、C语言利用位运算实现整数的加法运算、用C语言编写程序(两个矩阵相加)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)