#1.输入三个数比较大小
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d%d", &a, &b, &c);//2 1 3
//算法实现
//a中放最大值
//b次之
//c中放最小值
if(a<b)
{
int tmp = a;
a = b;
b = tmp;
}
if(a<c)
{
int tmp = a;
a = c;
c = tmp;
}
if(b<c)
{
int tmp = b;
b = c;
c = tmp;
}
printf("%d %d %d\n", a, b, c);
return 0;
}
#2.打印三的倍数(1-100)
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i % 3 == 0)
printf("%d ", i);
}
return 0;
}
#3.求两个数求最大公约数
辗转相除法
int main()
{
int m = 0;
int n = 0;
int r = 0;
scanf("%d %d", &m, &n);
while (m % n ) //0为假,非0为真,为0时跳出循环
{
r = m % n;
m = n;
n = r;
}
printf("%d", n);
}
#4.打印闰年
2000-3000年间闰年
int main()
{
int year = 2000;
int count = 0;
for (year = 2000; year <= 3000; year++)
//判断year是否为闰年
// //1. 能被4整除并且不能被100整除是闰年
// //2. 能被400整除是闰年
{
if (year % 4 == 0 && year % 100 != 0)
{
printf("%d ", year);
count++;
}
else if (year % 400 == 0)
{
count++;
printf("%d ", year);
}
}
printf("\ncount=%d个闰年", count);
return 0;
}
或
int main()
{
int year = 2000;
int count = 0;
for (year = 2000; year <= 3000; year++)
//判断year是否为闰年
// //1. 能被4整除并且不能被100整除是闰年
// //2. 能被400整除是闰年
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
printf("%d ", year);
count++;
}
}
printf("\ncount=%d个闰年", count);
return 0;
}
#5.打印100-300间素数
1.试除法
int main()
{
int i = 0;
int j = 0;
int count = 0;
for (i = 100; i <= 300; i++)
{ //判读i是否为素数(只能被1和自身整除)
//素数判断的规则
//1. 试除法
//要产生2->i-1的数
//例如:13要除于2-12的数
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
break;
}
}
if (i == j)
{
printf("%d ", i);
count++;
}
}
printf("\n一共有:%d 素数", count);
return 0;
}
算法优化改进⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
使用 sqrt-->开平方的数学库函数
算法思想过程:
#include <stdio.h>
#include<math.h>
int main()
{
int i = 0;
int j = 0;
int count = 0;
//sqrt - 开平方的数学库函数
for(i=100; i<=300; i++)
{
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
还可以在优化!直接跳过偶数,奇数里找素数
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
int main()
{
int i = 0;
int j = 0;
int count = 0;
//sqrt - 开平方的数学库函数
for(i=101; i<=300; i+=2)
//跳过偶数
{
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
#6.数九的个数(1-100)
#6.分数求和
计算1/1-1/2+1/3-4/1+5/1-6/1……+1/99-1/100的值
思考:(1)先只考虑相加
得到1,由注释推出,应该是使用浮点型(double,float)
(2)考虑如何交错相减(+,-)
得到结果
int main()
{
int i = 0;
double sum = 0.0;
int flag = 1;
for (i = 1; i <= 100; i++)
{
sum +=flag* 1.0 / i;
flag = -flag; //交错级数
}
//1/1+1/2+1/3...
//1+0+0+0......
printf("%lf", sum);
return 0;
}
#7.比较数组十个数大小
int main()
{
int arr[] = {-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
int max = arr[0];//把数组里第一个数赋给max
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);//计算数组里数个数
for(i=1; i<sz; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
}
printf("max = %d\n", max);
return 0;
}
#8.打印乘法表9*9
//在屏幕上输出9*9乘法口诀表
//
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//4*1=4 .....
//....
//9*1=9 ....
//
int main()
{
int i = 0;
//确定打印9行
for(i=1; i<=9; i++)
{
//打印一行中j项
int j = 1;
for(j=1; j<=i; j++)
{
printf("%d*%d=%-2d ", i, j, i*j);//%-2d打印两位数左对齐
}
printf("\n");
}
return 0;
}