1题
#include<stdio.h>
int main()
{
int m,n,c,p;
scanf("%d %d",&m,&n);
printf("m=%d,n=%d,",m,n);
if(m==n)
{
printf("GCD=%d,LCM=%d",m,m);
return 0;
}
if(m<n) c=m,m=n,n=c;//让m,n中较大的数在前面,为辗转相除法做准备
p=m*n;//存储m*n
while(m%n!=0)//辗转相除法求最大公因数
{
c=m%n;
m=n;
n=c;
}
printf("GCD=%d,LCM=%d",n,p/c);//最小公倍数*最大公因数=m*n,所以这里p/c
return 0;
}
2题
#include<stdio.h>
int main()
{
int a[8],i,t;
for(i=0;i<7;i++)//输入数字
{
scanf("%d",&a[i]);
}
scanf("%d",&a[7]);
for(i=7;i>=1;i--)//倒着比较,如果后一个数比前一个数大,就交换数值
{
if(a[i]>a[i-1]) t=a[i-1],a[i-1]=a[i],a[i]=t;
else break;
}
for(i=0;i<8;i++)//遍历输出
{
printf("%d",a[i]);
if(i!=7) printf(" ");
}
return 0;
}
3题
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&i);
printf("a[%d]=%d",i,a[n-1-i]);//同一个数,逆序与正序的下标和为n-1
return 0;
}
4题
#include<stdio.h>
int main()
{
int m,i,j,t;
scanf("%d",&m);
int a[m];
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<m-1;i++)//比较的趟数,从左至右,一趟确定一个数
{
for(j=i;j<m;j++)//每趟比较的次数
{
if(a[j]>a[j+1]) t=a[j],a[j]=a[j+1],a[j+1]=t;
}
}
for(i=0;i<m;i++)
{
printf("%d",a[i]);
if(i!=m-1) printf(" ");
}
return 0;
}