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; }