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