目前共有97篇帖子。
【期末複習】C語言期末複習
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
回復88樓 @巨大八爪鱼 的內容:
【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);
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。