有三处,你仔细看一下#define M 4
#includestdio.h
float min(float x,float y)
{
return(xy?x:y);
};
float max(float*p,int n)
{
float m=*p;int i;
for(i=0;in;i++)
if(*(p+i)m)
m=*(p+i);
return(m);
}
void main()
{
float a[M][M],b[M][M],c[M],d[M][M];
int i,j;
printf(请输入矩阵a:);
printf(\n);
for(i=0;iM;i++)
for(j=0;jM;j++)
scanf(%f,&a[i][j]);
printf(请输入矩阵b:);
printf(\n);
for(i=0;iM;i++)
for(j=0;jM;j++)
scanf(%f,&b[i][j]);
printf(矩阵a为:\n);
for(i=0;iM;i++)
{
printf(\n);
for(j=0;jM;j++)
printf(%10f,a[i][j]);
}
printf(矩阵b为:\n);
for(i=0;iM;i++)
{
printf(\n);
for(j=0;jM;j++)
printf(%10f,b[i][j]);
}
for(i=0;iM;i++)
{
for(j=0;jM;j++)
c[i]=min(a[i][j],b[j][i]);
d[i][j]=max(c,M);
}
printf(矩阵a*b为:\n);
for(i=0;iM;i++)
{
printf(\n);
for(j=0;jM;j++)
printf(%10f,d[i][j]);
}
}
可以通过取余的方法把每个数位级上的数字取出来,分开比较
这样虽然有点复杂,但是更符合数字比较的概念,至于程序,就不写了。
当然如果用字符比较可以解决的话,可能效率会更高一点的
比如 123 取出来可以 123 % 100 = 1 23%10 = 2 3
#include stdio.h
void main()
{
char s1[20],s2[10];
int i=0,j=0;
gets (s1),gets (s2);
while (s1[i] !='\0')
{
i++;
}
while (s2[j] != '\0')
{s1[i++]=s2[j++];}
puts (s1);
}
#includestdio.h
int main()
{
int a,b,c,d=0;
scanf(%d %d,&a,&b);
c=a/b;
d=a%b;
printf(商是:%d\n,c);
printf(余数是:%d\n,d);
return 0;
}
运行可用,输入用空格分分开两个数
比如输入:5 3后回车
输出:
商是:1
余数是:2
a%10; 求个位数
a/10000; 求万位上的数值
if (nm)
{t=m;m=n;n=t;}
while (m%n)
{ h=n;n=m%n;m=n;}
算法就是用辗转相除法求最大公约数
算法描述:
m对n求余为a, 若a不等于0
则 m - n, n - a, 继续求余
否则 n 为最大公约数
//检测两个五位数在相同位数上相同数的个数
#includestdio.h
#includemath.h
void main()
{long m,n;
int i,sum=0;
printf(按格式输入两个五位数m,n:);
scanf(%ld,%ld,&m,&n);
printf(你输入的两个数是:\n);
printf(%d万%d千%d百%d十%d\n,m/10000,m/1000%10,m/100%10,m/10%10,m%10);
printf(%d万%d千%d百%d十%d\n,n/10000,n/1000%10,n/100%10,n/10%10,n%10);
for(i=0;i5;i++)
{if((int)(m/pow(10,i))%10==(int)(n/pow(10,i))%10)
sum++;
}
printf(有%d个数位相同\n,sum);
}
举报成功
经过核实后将会做出处理
感谢您为社区和谐做出贡献
扫码参与新品0元试用
晒单、顶楼豪礼等你拿