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語言編程題,但在這其中我領會了一些簡單算法的應用,直至懂得了分支與循環語句的基礎使用邏輯。相信我將會慢慢進步,在這條道路上。循環