1.判断一个数是不是素数
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> int main() { int i, n, k; float n2; scanf("%d", &n); //n2相当于是根号n n2 = sqrt(n); k = 0; for (i = 2; i <= n2; i++) if (n % i == 0) { //利用break,一旦n对i取余=0,则直接跳出循环,输出No;优化了程序 k = 1; break; } if (k == 0) printf("Yes"); else printf("No"); return 0; }
2迭代
//1 1 2 3 5 8 13 21 int main() { int a, b, s, n, i; n = 8; //将a和b两个变量先初始化为1; a = 1; b = 1; //所以循环刚刚开始时i要取3,如果i取1,则循环多进行了两次,输出就错误了 for (i = 3; i <= n; i++) { //将输出的数用s来表示,并在循环的每一轮将b的值赋给a,将s的值赋给b,从而实现迭代; s = a + b; a = b; b = s; } printf("%d", s); return 0; }
3求任意两个数的最大公约数
int main() { int m, n,d; scanf("%d%d", &m, &n); //利用while循环,当n不等于0时循环继续 //原理表 /* m n m% n 25 15 10 15 10 5 10 5 0 5 0 输出m = 5, 即最大公约数 若n = 25, m = 15,只会使循环多进行一次,不影响结果*/ while (n) { d = m % n; m = n; n = d; } printf("%d", m); return 0; }
4数组(小编还只是数组邻域的小白)
int main() { int a[5]; //表示向内存申请5个位置 a[0] = 23; a[3] = 6; //分别表示一号位和三号位存放了23和6; //因为只申请了5个位置[]内的数不能大于等于5,否则将会出现数组越界,严重会使程序奔溃; return 0; }
5数组和for循环联合使用,1求和
int main() { int a[100], n, i, s; n = 5; for (i = 0; i < n; i++) scanf("%d", &a[i]); s = 0; for (i = 0; i < n; i++) s = s + a[i]; printf("%d", s); return 0; }
利用数组求最大值
int main() { int a[100], n, i, s, max, min; n = 10; for (i = 0; i < n; i++) scanf("%d", &a[i]); s = 0; for (i = 0; i < n; i++) s = s + a[i]; max = a[0]; for (i = 0; i < n; i++) if (a[i] > max) max = a[i]; printf("%d %d", s, max); return 0; }