目录
1.写代码将三个整数数按从大到小输出。
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int tmp = 0;
//输入
scanf("%d %d %d", &a, &b, &c);
//计算
//最大值放在a中,最小值放在c中
//a和b的较大值放在a中
if (a < b)
{
tmp = a;
a = b;
b = tmp;
}
//把a和c的较大值放在a中
if (a < c)
{
tmp = a;;
a = c;
c = tmp;
}
//把b和c的较大值放在b中
if (b < c)
{
tmp = b;;
b = c;
c = tmp;
}
//输出
printf("%d %d %d", a, b, c);
return 0;
}
2.写一个代码打印1-100之间所有3的倍数的数字
法一:
#include<stdio.h>
int main()
{
int i = 0;
for (i = 3; i <= 100; i += 3)
{
printf("%d ", i);
}
return 0;
}
法二:
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i % 3 == 0)
printf("%d ", i);
}
return 0;
}
3.给定两个数,求这两个数的最大公约数
法一:
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int ret = 0;
scanf("%d %d", &m, &n);
//求最大公约数
//求m和n较小值,假设就是最大公约数
if (m > n)
ret = n;
else
ret = m;
while (1)
{
if (m % ret == 0 && n % ret == 0)
{
break;
}
ret--;
}
//输出
printf("%d\n", ret);
return 0;
}
法二:辗转相除法
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int ret = 0;
scanf("%d %d", &m, &n);
while (ret = m % n)
{
m = n;
n = ret;
}
printf("%d\n", n);
return 0;
}
拓展:求最小公倍数,两数相乘除以最大公约数
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int ret = 0;
int s = 0;
scanf("%d %d", &m, &n);
s = m * n;
while (ret = m % n)
{
m = n;
n = ret;
}
printf("%d\n", s / n);
return 0;
}
4.打印1000年到2000年之间的闰年
法一:
#include<stdio.h>
int main()
{
int a = 0;
int count = 0;
for (a = 1000; a <= 2000; a++)
{
//判断y是不是闰年
if (a % 4 == 0 && a % 100 != 0)
{
count++;
printf("%d ", a);
}
if (a % 400 == 0)
{
count++;
printf("%d ", a);
}
}
//输出个数字
printf("\ncount=%d\n", count);
return 0;
}
法二:
#include<stdio.h>
int main()
{
int a = 0;
int count = 0;
for (a = 1000; a <= 2000; a++)
{
if ((a % 4 == 0) && (a % 100 != 0) || (a % 400 == 0))
{
count++;
printf("%d ", a);
}
}
printf("\ncount=%d\n", count);
return 0;
}
5.打印100~200之间的素数
素数也是质数,只能被1和他本身整除的数字就是素数。
法一:
#include<stdio.h>
int main()
{
int y = 0;
for (y = 100; y <= 200; y++)
{
//判断y是不是素数
//拿2到y-1的数字去试除y就行
int n = 0;
int flag = 1;//假设y是素数
for (n = 2; n < y; n++)
{
if (y % n == 0)
{
flag = 0;//y不是素数
break;
}
}
if (flag == 1)
{
printf("%d ", y);
}
}
return 0;
}
法二优化:
#include<stdio.h>
#include<math.h>
int main()
{
int y = 0;
int count = 0;
for (y = 100; y <= 200; y++)
{
//判断y是不是素数
//拿2到y-1的数字去试除y就行
int n = 0;
int flag = 1;//假设y是素数
for (n = 2; n <= sqrt(y); n++)//开平方y---->sqrt(y)
{
if (y % n == 0)
{
flag = 0;//y不是素数
break;
}
}
if (flag == 1)
{
printf("%d ", y);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}