1.最大公约数与最小公倍数求解
(辗转相除法)
设两数分别为a,b。
- 比较a,b大小,较大数放在a中,较小数放在b中。
- 求a除b的商c与余数d。
- 如果d=0,则b是最大公约数;否则把b的值给a,d的值给b,返回第二步。
- 将a、b相乘除以最大公约数即为最小公倍数。
#include<stdio.h>
int main()
{
int a,b;
int t=0,c,m,n;
scanf("%d%d",&a,&b);
m=a*b;
if(a<b)
{
t=a;
a=b;
b=t;
}
while(a%b!=0)
{
c=a%b;
a=b;
b=c;
}
n=m/c;
printf("%d %d",c,n);
return 0;}
运行结果:
2、求10个数中最大数所在的位置
#include<stdio.h>
int main()
{
float a[10],max;
int i=0,j=1;
for(i=0;i<10;i++)
scanf("%f",&a[i]);
max=a[0];
for(i=0;i<10;i++)
{if(a[i]>max)
{
max=a[i];
j=i+1;
}
}
printf("%d",j);
return 0;
}
注意:j最初要定义为1,而不是0.
3、给出一个3*3的矩阵,求出它的转置矩阵
#include<stdio.h>
int main()
{
int a[3][3];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",a[j][i]);
}
printf("\n");
}
return 0;
}
*注意:输出a[j][i]时%d后要加空格,否则就会是以下情形:
4、求所给字符串中字母的个数,无论大小写。
#include<stdio.h>
int main()
{
char a[80];
int sum1=0,sum2=0,sum=0,i;
gets(a);
for(i=0;i<80;i++)
{
if(a[i]>=65&&a[i]<=90)
{
sum1++;
}
if(a[i]>=97&&a[i]<=122)
{
sum2++;
}
}
sum=sum1+sum2;
printf("%d",sum);
return 0;
}
运行结果: