|
65樓 巨大八爪鱼
2016-1-16 16:50
為了降低編譯失敗的次數,寫好代碼後我必須仔細檢查代碼才編譯。一定要爭取一次編譯通過。
|
|
66樓 巨大八爪鱼
2016-1-16 18:58
#include <stdio.h>
int decompose(int num, int m[]) { int i, j, count = 0; for (i = 2; i <= num; i++) // 尋找2~num之間的質數 { // 判斷i是不是質數 for (j = 2; j < i; j++) { if (i % j == 0) break; } if (i == j) { // 如果是質數 // 判斷這個數是否能被這個質數整除 // 把原本的if改為while就能判斷有多少個當前質數相乘 while (num % i == 0) { m[count++] = i; num /= i; } } } return count; }
void main() { int i, n, count, a[100]; scanf("%d", &n); count = decompose(n, a); printf("%d = ", n); for (i = 0; i < count; i++) { printf("%d", a[i]); if (i + 1 < count) putchar('*'); else putchar('\n'); } }
|
|
67樓 巨大八爪鱼
2016-1-16 18:58
樓上是第五章的最後一題——【15】
|
|
68樓 巨大八爪鱼
2016-1-16 19:00
由於15題比較難,所以再做一遍。
|
|
69樓 巨大八爪鱼
2016-1-16 19:32
#include <stdio.h>
int decompose(int n, int q[]) { int i, count = 0; for (i = 2; i <= n; i++) { while (n != i && n % i == 0) { q[count++] = i; n /= i; } } q[count++] = n; return count; }
void main() { int q[255], n, m, i; printf("Please input a positive integer: "); scanf("%d", &n); m = decompose(n, q); printf("m = %d\n", m); printf("%d = ", n); for (i = 0; i < m - 1; i++) printf("%d*", q[i]); printf("%d\n", q[m - 1]); } 這是經過標準答案修改過的程序。 因為在考慮2的時候已經把2的所有倍數除盡了,到了最後不能再被2整除的時候才開始考慮3 。所以4根本就不可能出現,因此也就無需一個一個地去找質數了。
|
|
70樓 巨大八爪鱼
2016-1-16 19:33
至於為什麼要在while裡面多加一句n!=i,主要是為了確保當輸入的n為質數時,返回的數組q至少有一個元素,不至於是空數組。
|
|
71樓 巨大八爪鱼
2016-1-16 19:34
因此,這個程序還可以這樣改: int decompose(int n, int q[]) { int i, count = 0; for (i = 2; i <= n; i++) { while (n % i == 0) { q[count++] = i; n /= i; } } if (count == 0) q[count++] = n; return count; }
|
|
72樓 巨大八爪鱼
2016-1-16 19:44
第五章已複習完畢。 接下來先複習簡單一點的:第九章——文件。
|
|
73樓 巨大八爪鱼
2016-1-16 19:53
【9-1】 #include <stdio.h> #include <stdlib.h>
void fun(int nums[]) { int count = 0; int i; for (i = 0; count < 10; i++) { if (i % 2 == 1 && i % 3 == 1 && i % 5 == 1) nums[count++] = i; } }
void main() { int nums[10]; int i; FILE *fp; if ((fp = fopen("tmp.txt", "w")) == NULL) { printf("文件打不開。\n"); exit(0); } fun(nums); for (i = 0; i < 10; i++) { printf("%d ", nums[i]); fprintf(fp, "%d ", nums[i]); } printf("\n"); fclose(fp); } 注意fprintf不要忘了第一個參數fp。
|
|
74樓 巨大八爪鱼
2016-1-16 19:58
【9-2】 #include <stdio.h> #include <stdlib.h>
void main() { char str[100]; int i; FILE *fp; if ((fp = fopen("tmp2.txt", "w")) == NULL) { printf("文件打不開\n"); exit(0); } printf("Please enter a string:\n"); gets(str); for (i = 0; str[i] != '\0'; i++) { printf("%c(%d)", str[i], str[i]); fprintf(fp, "%c(%d)", str[i], str[i]); } printf("\n"); fclose(fp); }
|