1.用指针交换两个或三个数的值,按大小顺序输出
//三个整数a,b,c,按大小顺序的输出
#include<stdio.h>
int main()
{
void exchange(int *q1,int *q2,int *q3);
int a,b,c,*p1,*p2,*p3;
printf("输入三个数:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d %d %d\n",a,b,c);
return 0;
}
void exchange(int *q1,int *q2,int *q3)
{
void s(int *t1,int *t2);
if(*q1<*q2) s(q1,q2);
if(*q1<*q3) s(q1,q3);
if(*q2<*q3) s(q2,q3);
}
void s(int *t1,int *t2)
{
int t;
t=*t1;*t1=*t2;*t2=t;
}
//2个
#include<stdio.h>
int main()
{
int a,b,*p1,*p2,*p;
printf("输入2个数:");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("%d %d\n",a,b);
printf("%d %d\n",*p1,*p2);
}
2.同构数
//同构数是比如5的平方25,其尾数与5相同
#include <stdio.h>
#include <math.h>
int main()
{
int n=0,x,m,t,g,y;
scanf("%d",&x);
m=x*x;
t=m;
do//数位数的判断
{
n++;
m=m/10;
}
while (m>0);
printf("%d的平方%d是%d位数\n",x,t,n);
y=(int)pow(10,n-1);//double
g=t%y;
if(g==x)
{
printf("%d是同构数\n",x);
}
else
{
printf("%d不是同构数\n",x);
}
return 0;
}
3.判断n的位数,按数的正序和逆序输出
#include <stdio.h>
int main()
{
int n,x1,x2,x3,i;
scanf("%d",&n);
if(n<9)
{
i=1;
x1=n;
printf("位数%d,n=%d,逆序 %d",i,x1,x1);
}
else if(n<99)
{
i=2;
x1=n%10;
x2=n/10;
printf("位数%d,n=%d%d,逆序 %d%d",i,x2,x1,x1,x2);
}
else if(n<999)
{
i=3;
x1=n%10;
x2=n/10%10;
x3=n/100;
printf("位数%d,n=%d%d%d,逆序 %d%d%d",i,x3,x2,x1,x1,x2,x3);
}
printf("\n");
return 0;
}
/*#include<stdio.h>
int main()
{
int i,n=0,m;
scanf("%d",&i);
m=i;
do{
n++;
m=m/10;
} while(m>0);
printf("%d的位数为%d\n",i,n);
switch(n)
{
case 1:printf("");
case 2:
case 3:
return 0;
}*/
4.杨辉三角
#include <stdio.h>
int main()
{
int i,j,n,a[10][10];
scanf("%d",&n);//n控制行数
for(i=0;i<n;i++)
{
a[i][0]=a[i][i]=1;
}
for(i=0;i<n;i++)
{
for(j=1;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)printf(" ");//控制空格
for(j=0;j<=i;j++)
{
printf("%6d",a[i][j]);//2d=一个空格
}
printf("\n");
}
return 0;
}
5.最大公约数最小公倍数
#include <stdio.h>//函数方法
int gcd(int x,int y);//函数调用
int icm(int x,int y);
int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("最大公约数:%d\n最小公倍数:%d\n",gcd(n,m),icm(n,m));
return 0;
}
int gcd(int x,int y)
{
int s,t;
if(x<y)//将最大的值存入x
{
t=x;
x=y;
y=t;
}
while(y!=0)
{
s=x%y;
x=y;
y=s;
}
return x;
}
int icm(int x,int y)
{
int k=gcd(x,y);
return x*y/k;//最小公倍数=两个数相乘/两数的最大公约数
}
//方法一
#include <stdio.h>
int main()
{
int x,y;
int s,t;
scanf("%d%d",&x,&y);
if(x<y)
{
t=x;
x=y;
y=t;
}
while(y!=0)
{
s=x%y;
x=y;
y=s;
}
printf("最大公约数=%d",x);
return 0;
}
6.将数字转换成字符串输出
#include <stdio.h>
int convert(int n);
int main()
{
int n;
scanf("%d",&n);
if(n<0)
{
putchar('-');
n=-n;
}
convert(n);
printf("\n");
return 0;
}
int convert(int n)//函数调用
{
int i;