|
85樓 巨大八爪鱼
2016-1-16 21:53
【9-10】 #include <stdio.h> #include <stdlib.h>
void main() { int n, sum = 0; FILE *fp; if ((fp = fopen("int.txt", "r")) == NULL) { printf("文件打不開\n"); exit(0); } while (!feof(fp)) { fscanf(fp, "%d", &n); sum += n; } fclose(fp); if ((fp = fopen("int.txt", "a")) == NULL) { printf("文件打不開\n"); exit(0); } fprintf(fp, " %d", sum); fclose(fp); }
|
|
86樓 巨大八爪鱼
2016-1-16 21:53
第九章複習完畢!
|
|
87樓 巨大八爪鱼
2016-1-17 14:57
【7-1】 #include <stdio.h> #include <stdlib.h> #include <string.h>
char *insert(char *s1, char *s2, int n) { int len1, len2; int i; char *s3; len1 = strlen(s1); len2 = strlen(s2); s3 = (char *)calloc(len1 + len2 + 1, sizeof(char)); for (i = len1; i >= n; i--) // 這裡i--不要寫錯了 { s3[i + len2] = s1[i]; } for (i = 0; i < len2; i++) { s3[i + n] = s2[i]; } for (i = 0; i < n; i++) s3[i] = s1[i]; return s3; }
void main() { char *s1 = "abcdef"; char *s2 = "ghi"; char *s3 = insert(s1, s2, 5); // 這裡不要漏寫第三個參數5 puts(s3); free(s3); }
|
|
88樓 巨大八爪鱼
2016-1-17 15:21
【7-2】 這個沒有用指針,所以不符合題目要求。 #include <stdio.h> #include <stdlib.h>
#define N 10
void shift(int a[], int m) { int *b, i, j; b = (int *)calloc(m, sizeof(int)); for (i = 0; i < m; i++) b[i] = a[N - 4 + i]; for (i = N - m - 1; i >= 0; i--) a[m + i] = a[i]; for (i = 0; i < m; i++) a[i] = b[i]; free(b); } void main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i; shift(a, 8); for (i = 0; i < N; i++) printf("%d ", a[i]); printf("\n"); }
|
|
89樓 巨大八爪鱼
2016-1-17 15:25
不過要用指針很簡單,把所有的a[i]換成*(a+i)就行了
|
|
90樓 巨大八爪鱼
2016-1-17 15:32
【7-2】 這個沒有用指針,所以不符合題目要求。 #include <stdio.h> #include <stdlib.h> #def...
這裡N - 4 + i應該改成N - m + i
|
|
91樓 巨大八爪鱼
2016-1-17 15:35
改成指針: #include <stdio.h> #include <stdlib.h>
#define N 10
void shift(int a[], int m) { int *b, i, j; if (m >= N) return; b = (int *)calloc(m, sizeof(int)); for (i = 0; i < m; i++) *(b + i) = *(a + N - m + i); for (i = N - m - 1; i >= 0; i--) *(a + m + i) = *(a + i); for (i = 0; i < m; i++) *(a + i) = *(b + i); free(b); } void main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i; shift(a, 6); for (i = 0; i < N; i++) printf("%d ", a[i]); printf("\n"); }
|
|
92樓 巨大八爪鱼
2016-1-17 15:40
這是參考答案: #include <stdio.h>
void print(int *a) { int i; for (i = 0; i < 10; i++) printf("%d ", a[i]); printf("\n"); }
void shift(int *p, int m) { int i, j, t; for (i = 0; i < m; i++) { t = p[9]; for (j = 8; j >= 0; j--) p[j + 1] = p[j]; p[0] = t; print(p); } }
void main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i; shift(a, 6); }
運行結果: 10 1 2 3 4 5 6 7 8 9 9 10 1 2 3 4 5 6 7 8 8 9 10 1 2 3 4 5 6 7 7 8 9 10 1 2 3 4 5 6 6 7 8 9 10 1 2 3 4 5 5 6 7 8 9 10 1 2 3 4
-------------------------------- Process exited after 0.01482 seconds with return value 6 Press any key to continue . . .
|
|
93樓 巨大八爪鱼
2016-1-17 15:42
【文件相關函數的參數位置回憶】 FILE *fp; rewind(fp); fseek(fp, 10, 0); fputc('c', fp); fgetc(fp); fputs("sss", fp);
|
|
94樓 巨大八爪鱼
2016-1-17 15:53
#include <stdio.h>
#define N 10
void print(int *a) { int i; for (i = 0; i < 10; i++) printf("%d ", a[i]); printf("\n"); }
void shift(int *a, int m) { int i, j, temp; for (i = 0; i < m; i++) { temp = a[9]; // 注意這裡不是a[0] for (j = N - 2; j >= 0; j--) a[j + 1] = a[j]; a[0] = temp; } }
void main() { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i; shift(a, 6); print(a); }
|