int main() { int x = 0;//倍数目标 int y = 0;//倍数范围 int i = 1; scanf("%d %d", &x,&y); for (; x <= y; x = i * x) { printf("%d ", x); i++; }; return 0; }
int main() { int a;//最大值 int b;//中间值 int c;//最小值 scanf("%d %d %d", &a, &b,&c);//随机输入数值(无序) if (a < b) { int tmp; tmp = a; a = b; b = tmp; } if (a < c) { int tmp; tmp = a; a = c; c = tmp; } if (b < c) { int tmp; tmp = b; b = c; c = tmp; } printf("%d %d %d", a, b, c); return 0; }
以除数和余数反复作除法运算,当余数为 0 时,取当前算式除数为最大公约数。算法
{ int a;//数字a int b;//数字b int ret; scanf("%d %d", &a, &b); while (ret=a % b)//a%b=0时跳出循环 { a = b; b = ret; } printf("%d", b); return 0; }
int main() { int a;//判断目标 int b;//范围 int count=0;//计数 scanf("%d %d",&a,&b); for (a = 1; a <= b; a++) { if (a % 10 == 9) { printf(" %d", a); count++; } //若使用else if会缺乏99(个位和十位都是9,必须重复计数) if (a / 10 == 9) { printf(" %d", a); count++; } }; printf("\ncount=%d", count); return 0; }
素数是除一及其自己外无其余公约数的天然数2。
判断方法:编程
试除法(将小于指定数的天然数一一试除,皆没法整除者为素数)数组
int main() { int i = 0; int k = 0;//起始数 int p = 0;//结束数 int j = 0; int count = 0;//计数范围内素数个数 scanf("%d %d ",&k,&p) for (i = k; i <= p; i++)//给出范围内各个数 { //素数的判断 for (j = 2; j <= i - 1; j++) { if (i % j == 0) break; } if (j == i) { count++; printf("%d ", i); } } printf("\ncount=%d", count); return 0; }
优化:优化
{ int i = 0; int k = 0;//起始数 int p = 0;//结束数 int count = 0; for (i = k; i <=p; i += 2)//跳过全部偶数,减小计算量。 { int j = 0; //素数的判断:没法被2到指定数的开方数整除的天然数 for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) break; } if (j > sqrt(i)) { count++; printf("%d ", i); } } printf("\ncount=%d", count); return 0; }
int main() { int a; int b; int count = 0; scanf("%d %d", &a, &b); for (; a < b; a++) { if (((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0)) { printf("%d ", a); count++; } } printf("\ncount=%d", count); return 0; }
int main() { long x=0;//目标n int y=0; int ret = 1; scanf("%d/n", &x); for (y = 1; y <= x; y++)//给出计算所需值 { ret = ret * y;//进行累乘 }; printf("%d\n", ret); return 0; }
加大难度:计算阶乘相加code
int main() { long x = 1; int y = 0; int ret = 1;//累乘媒介 int sum = 0;//相加结果 int n = 0;//阶乘范围 scanf("%d/n", &n); while(x<=n) { ret = 1; for (y = 1; y <= x; y++) { ret = ret * y; }; sum += ret; x++; } printf("%d", sum); return 0; }
int main() { int a = 1; int f = 1; double sum = 0; //因为计算结果为小数,只能使用浮点数 double b = 0.0; for (b=1; b <= 100; b++) { sum +=( f * 1 / b); f = -f;//交替出现加号与减号 } printf("%lf", sum);//浮点数对应%lf return 0; }
注:只能在有序数组中才能使用。排序
int main() { int left = 0;//左下标 int right = 0;//右下标 int k = 0;//查找值 int n = 0;//数组长度 int z = 0;//中间值 char arr[] = { 1,2,3,4,5,6,8,9 };//查找范围 scanf("%d", &k); right = n - 1; n = sizeof(arr) / sizeof(arr[0]);//计算数组大小 while (left <= right)//易错:等于号不可省略 { z = (left + right) / 2; if (arr[z] < k) { left = z + 1; } else if (arr[z] > k) { right = z - 1; } else { printf("找到了,下标是%d", z); break; } } if (left > right) printf("找不到"); return 0; }
右下角数学
int main() { int a;//行数 int b;//列数 for (a= 1; a <= 9; a++) { for (b = 1; b <= a; b++) { printf("%d*%d=%d\t", b, a, a * b);//\t一个制表符距离 } printf("\n"); } return 0; }
正方形基础
int main() { int a;//行数 int b;//列数 for (a = 1; a <= 9; a++) { for (b = 1; b <=9; b++) { //%-2d为向左对齐两个字符 printf(" %d*%d=%-2d", a, b, a * b); } printf("\n"); } return 0; }
或许,以上只是常见的c语言编程题,但在这其中我领会了一些简单算法的应用,直至懂得了分支与循环语句的基础使用逻辑。相信我将会慢慢进步,在这条道路上。循环